siat 3.0.30__py3-none-any.whl → 3.0.35__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- siat/common.py +1 -1
- siat/financials2.py +92 -65
- siat/financials_china.py +117 -115
- siat/financials_china2.py +112 -52
- siat/sector_china.py +1 -1
- {siat-3.0.30.dist-info → siat-3.0.35.dist-info}/METADATA +1 -1
- {siat-3.0.30.dist-info → siat-3.0.35.dist-info}/RECORD +9 -9
- {siat-3.0.30.dist-info → siat-3.0.35.dist-info}/WHEEL +0 -0
- {siat-3.0.30.dist-info → siat-3.0.35.dist-info}/top_level.txt +0 -0
siat/common.py
CHANGED
@@ -3769,7 +3769,7 @@ if __name__=='__main__':
|
|
3769
3769
|
upgrade_siat()
|
3770
3770
|
|
3771
3771
|
def upgrade_siat(module_list=['siat','akshare','pandas','pandas_datareader', \
|
3772
|
-
'yfinance','yahooquery','urllib3','twine','mplfinance'], \
|
3772
|
+
'yfinance','yahooquery','urllib3','tabulate','twine','mplfinance'], \
|
3773
3773
|
pipcmd="pip install --upgrade"):
|
3774
3774
|
"""
|
3775
3775
|
功能:一次性升级siat及其相关插件
|
siat/financials2.py
CHANGED
@@ -210,8 +210,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
210
210
|
|
211
211
|
fsdf4.replace(0,'---',inplace=True)
|
212
212
|
|
213
|
-
titletxt="\n***** "+ticker_name(tickers)+": BALANCE SHEET"+' *****\n'
|
214
|
-
|
213
|
+
#titletxt="\n***** "+ticker_name(tickers)+": BALANCE SHEET"+' *****\n'
|
214
|
+
titletxt=ticker_name(tickers,'stock')+": BALANCE SHEET"
|
215
|
+
#print(titletxt)
|
215
216
|
"""
|
216
217
|
tablefmt_list=["plain","simple","github","grid","simple_grid","rounded_grid", \
|
217
218
|
"heavy_grid","mixed_grid","double_grid","fancy_grid","outline", \
|
@@ -239,13 +240,17 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
239
240
|
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
240
241
|
|
241
242
|
fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
|
242
|
-
|
243
|
+
"""
|
243
244
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
244
245
|
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
246
|
+
"""
|
245
247
|
|
246
|
-
footnote1="
|
247
|
-
footnote2="
|
248
|
-
|
248
|
+
footnote1="Amount unit: "+currency+" billion, exchange's local accounting standards"
|
249
|
+
footnote2="Data source: Yahoo Finance, "+str(todaydt)
|
250
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2
|
251
|
+
#print('\n',footnote1,'\n',footnote2)
|
252
|
+
df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
|
253
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
249
254
|
|
250
255
|
return fsdf6
|
251
256
|
|
@@ -307,8 +312,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
307
312
|
|
308
313
|
fsdf4.replace(0,'---',inplace=True)
|
309
314
|
|
310
|
-
titletxt="\n***** "+ticker_name(tickers)+": INCOME STATEMENTS"+' *****\n'
|
311
|
-
|
315
|
+
#titletxt="\n***** "+ticker_name(tickers)+": INCOME STATEMENTS"+' *****\n'
|
316
|
+
titletxt=ticker_name(tickers,'stock')+": INCOME STATEMENTS"
|
317
|
+
#print(titletxt)
|
312
318
|
|
313
319
|
collist=list(fsdf4)
|
314
320
|
fsdf4['Item']=fsdf4.index
|
@@ -316,13 +322,16 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
316
322
|
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
317
323
|
|
318
324
|
fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
|
319
|
-
|
325
|
+
"""
|
320
326
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
321
327
|
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
322
|
-
|
323
|
-
footnote1="
|
324
|
-
footnote2="
|
325
|
-
|
328
|
+
"""
|
329
|
+
footnote1="Amount unit: "+currency+" billion, exchange's local accounting standards"
|
330
|
+
footnote2="Data source: Yahoo Finance, "+str(todaydt)
|
331
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2
|
332
|
+
#print('\n',footnote1,'\n',footnote2)
|
333
|
+
df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
|
334
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
326
335
|
|
327
336
|
return fsdf6
|
328
337
|
|
@@ -382,8 +391,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
382
391
|
|
383
392
|
fsdf4.replace(0,'---',inplace=True)
|
384
393
|
|
385
|
-
titletxt="\n***** "+ticker_name(tickers)+": CASHFLOW STATEMENTS"+' *****\n'
|
386
|
-
|
394
|
+
#titletxt="\n***** "+ticker_name(tickers)+": CASHFLOW STATEMENTS"+' *****\n'
|
395
|
+
titletxt=ticker_name(tickers,'stock')+": CASHFLOW STATEMENTS"
|
396
|
+
#print(titletxt)
|
387
397
|
|
388
398
|
collist=list(fsdf4)
|
389
399
|
fsdf4['Item']=fsdf4.index
|
@@ -391,14 +401,16 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
391
401
|
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
392
402
|
|
393
403
|
fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
|
394
|
-
|
404
|
+
"""
|
395
405
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
396
406
|
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
397
|
-
|
398
|
-
footnote1="
|
399
|
-
footnote2="
|
400
|
-
|
401
|
-
|
407
|
+
"""
|
408
|
+
footnote1="Amount unit: "+currency+" billion, exchange's local accounting standards"
|
409
|
+
footnote2="Data source: Yahoo Finance, "+str(todaydt)
|
410
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2
|
411
|
+
#print('\n',footnote1,'\n',footnote2)
|
412
|
+
df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
|
413
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
402
414
|
return fsdf6
|
403
415
|
|
404
416
|
return fsdf2
|
@@ -488,8 +500,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
488
500
|
|
489
501
|
fsdf4.replace(0,'---',inplace=True)
|
490
502
|
|
491
|
-
titletxt="\n***** "+ticker_name(tickers)+": FINANCIAL STATEMENT SUMMARY"+' *****\n'
|
492
|
-
|
503
|
+
#titletxt="\n***** "+ticker_name(tickers)+": FINANCIAL STATEMENT SUMMARY"+' *****\n'
|
504
|
+
titletxt=ticker_name(tickers,'stock')+": FINANCIAL STATEMENT SUMMARY"
|
505
|
+
#print(titletxt)
|
493
506
|
|
494
507
|
collist=list(fsdf4)
|
495
508
|
fsdf4['Item']=fsdf4.index
|
@@ -497,15 +510,17 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
497
510
|
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
498
511
|
|
499
512
|
fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
|
500
|
-
|
513
|
+
"""
|
501
514
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
502
515
|
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
503
|
-
|
504
|
-
footnote1="
|
505
|
-
footnote2="
|
506
|
-
footnote3="
|
507
|
-
|
508
|
-
|
516
|
+
"""
|
517
|
+
footnote1="Amount unit: "+currency+" billion, exchange's local accounting standards"
|
518
|
+
footnote2="ROx/EM/turnover rates are based on periodic mean, others on end-term"
|
519
|
+
footnote3="Data source: Yahoo Finance, "+todaydt
|
520
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
|
521
|
+
#print('\n',footnote1,'\n',footnote2,'\n',footnote3)
|
522
|
+
df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
|
523
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
509
524
|
return fsdf6
|
510
525
|
|
511
526
|
return fsdf2
|
@@ -586,8 +601,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
586
601
|
|
587
602
|
fsdf4.replace(0,'---',inplace=True)
|
588
603
|
|
589
|
-
titletxt="\n***** PEER COMPARISON OF FINANCIAL STATEMENT SUMMARY *****\n"
|
590
|
-
|
604
|
+
#titletxt="\n***** PEER COMPARISON OF FINANCIAL STATEMENT SUMMARY *****\n"
|
605
|
+
titletxt="FINANCIAL STATEMENT SUMMARY: PEER COMPARISON"
|
606
|
+
#print(titletxt)
|
591
607
|
|
592
608
|
collist=list(fsdf4)
|
593
609
|
fsdf4['Item']=fsdf4.index
|
@@ -595,15 +611,17 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
595
611
|
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
596
612
|
|
597
613
|
fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType','reportDate','currencyCode'],ascending=True)
|
598
|
-
|
614
|
+
"""
|
599
615
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
600
616
|
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
601
|
-
|
602
|
-
footnote1="
|
603
|
-
footnote2="
|
604
|
-
footnote3="
|
605
|
-
|
606
|
-
|
617
|
+
"""
|
618
|
+
footnote1="Amount unit: billion, based on exchange's local accounting standards"
|
619
|
+
footnote2="ROx/EM/turnover rates are based on periodic mean, others on end-term"
|
620
|
+
footnote3="Data source: Yahoo Finance, "+str(todaydt)
|
621
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
|
622
|
+
#print('\n',footnote1,'\n',footnote2,'\n',footnote3)
|
623
|
+
df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
|
624
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
607
625
|
return fsdf6
|
608
626
|
|
609
627
|
return fsdf2
|
@@ -691,8 +709,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
691
709
|
|
692
710
|
fsdf4.replace(0,'---',inplace=True)
|
693
711
|
|
694
|
-
titletxt="\n***** "+ticker_name(tickers)+": FINANCIAL INDICATORS"+' *****\n'
|
695
|
-
|
712
|
+
#titletxt="\n***** "+ticker_name(tickers)+": FINANCIAL INDICATORS"+' *****\n'
|
713
|
+
titletxt=ticker_name(tickers,'stock')+": FINANCIAL INDICATORS"
|
714
|
+
#print(titletxt)
|
696
715
|
|
697
716
|
collist=list(fsdf4)
|
698
717
|
fsdf4['Item']=fsdf4.index
|
@@ -700,15 +719,17 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
700
719
|
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
701
720
|
|
702
721
|
fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
|
703
|
-
|
722
|
+
"""
|
704
723
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
705
724
|
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
706
|
-
|
707
|
-
footnote1="
|
708
|
-
footnote2="
|
709
|
-
footnote3="
|
710
|
-
|
711
|
-
|
725
|
+
"""
|
726
|
+
footnote1="Amount unit: "+currency+" billion, exchange's local accounting standards"
|
727
|
+
footnote2="ROx/EM/turnover rates are based on periodic mean, others on end-term"
|
728
|
+
footnote3="Data source: Yahoo Finance, "+str(todaydt)
|
729
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
|
730
|
+
#print('\n',footnote1,'\n',footnote2,'\n',footnote3)
|
731
|
+
df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
|
732
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
712
733
|
return fsdf6
|
713
734
|
|
714
735
|
return fsdf2
|
@@ -790,8 +811,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
790
811
|
|
791
812
|
fsdf4.replace(0,'---',inplace=True)
|
792
813
|
|
793
|
-
titletxt="\n***** PEER COMPARISON OF FINANCIAL INDICATORS *****\n"
|
794
|
-
|
814
|
+
#titletxt="\n***** PEER COMPARISON OF FINANCIAL INDICATORS *****\n"
|
815
|
+
titletxt="FINANCIAL INDICATORS: PEER COMPARISON"
|
816
|
+
#print(titletxt)
|
795
817
|
|
796
818
|
collist=list(fsdf4)
|
797
819
|
fsdf4['Item']=fsdf4.index
|
@@ -799,15 +821,17 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
799
821
|
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
800
822
|
|
801
823
|
fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType','reportDate','currencyCode'],ascending=True)
|
802
|
-
|
824
|
+
"""
|
803
825
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
804
826
|
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
805
|
-
|
806
|
-
footnote1="
|
807
|
-
footnote2="
|
808
|
-
footnote3="
|
809
|
-
|
810
|
-
|
827
|
+
"""
|
828
|
+
footnote1="Amount unit: billion, based on exchange's local accounting standards"
|
829
|
+
footnote2="ROx/EM/turnover rates are based on periodic mean, others on end-term"
|
830
|
+
footnote3="Data source: Yahoo Finance, "+str(todaydt)
|
831
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2+'\n'+footnote3
|
832
|
+
#print('\n',footnote1,'\n',footnote2,'\n',footnote3)
|
833
|
+
df_display_CSS(fsdf6,titletxt=titletxt,footnote=footnote, \
|
834
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
811
835
|
return fsdf6
|
812
836
|
|
813
837
|
return fsdf2
|
@@ -914,8 +938,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
914
938
|
plt.show()
|
915
939
|
|
916
940
|
if printout:
|
917
|
-
title_txt="\n***** Dupont Identity Fact Sheet *****\n"
|
918
|
-
|
941
|
+
#title_txt="\n***** Dupont Identity Fact Sheet *****\n"
|
942
|
+
titletxt="Dupont Identity Fact Sheet"
|
943
|
+
#print(titletxt)
|
919
944
|
|
920
945
|
# 保留四位小数
|
921
946
|
collist=list(df)
|
@@ -927,14 +952,16 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
927
952
|
|
928
953
|
for d in list(df):
|
929
954
|
df[d]=df[d].apply(lambda x: round(x,5) if isinstance(x,float) else x)
|
930
|
-
|
955
|
+
"""
|
931
956
|
alignlist=['left']+['right']*(len(list(df))-1)
|
932
957
|
print(df.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
933
|
-
|
934
|
-
footnote1="
|
935
|
-
footnote2="Data source: Yahoo Finance, "+todaydt
|
936
|
-
|
937
|
-
|
958
|
+
"""
|
959
|
+
footnote1="Based on exchange's local accounting standards, EM/TAT are on periodic mean"
|
960
|
+
footnote2="Data source: Yahoo Finance, "+str(todaydt)
|
961
|
+
footnote='Note:\n'+footnote1+'\n'+footnote2
|
962
|
+
#print('\n',footnote1,'\b.',footnote2)
|
963
|
+
df_display_CSS(df,titletxt=titletxt,footnote=footnote, \
|
964
|
+
titile_font_size='14px',heading_font_size='13px',data_font_size='13px')
|
938
965
|
return df2
|
939
966
|
|
940
967
|
else: # analysis_type1
|
siat/financials_china.py
CHANGED
@@ -3625,77 +3625,77 @@ def compare_fin_summary_china(tickers,fsdates,facecolor='whitesmoke'):
|
|
3625
3625
|
# 注释
|
3626
3626
|
notesdict={'常用指标': \
|
3627
3627
|
'注:\n'+ \
|
3628
|
-
'
|
3629
|
-
'
|
3630
|
-
'
|
3631
|
-
'
|
3628
|
+
'毛利率=毛利润 / 营业(总)收入 ×100% \n'+ \
|
3629
|
+
'毛利润=营业(总)收入-营业(总)成本 \n'+ \
|
3630
|
+
'销售净利率=净利润 / 营业(总)收入 ×100% \n'+ \
|
3631
|
+
'期间费用率=期间费用 / 营业(总)收入 ×100%,期间费用包括管理费用,销售费用和财务费用。 \n', \
|
3632
3632
|
|
3633
3633
|
'每股指标': \
|
3634
3634
|
'注:\n'+ \
|
3635
|
-
'
|
3636
|
-
'
|
3637
|
-
'
|
3638
|
-
'
|
3639
|
-
'
|
3640
|
-
'
|
3641
|
-
'
|
3642
|
-
'
|
3643
|
-
'
|
3644
|
-
'
|
3645
|
-
'
|
3646
|
-
'
|
3647
|
-
'
|
3648
|
-
'
|
3649
|
-
'
|
3635
|
+
'稀释每股指标:假设企业所有发行在外的稀释性潜在普通股期间内均转换为普通股,导致普通股股数增加 \n'+ \
|
3636
|
+
'潜在普通股:赋予其持有者在报告期或以后享有取得普通股权利的金融工具或者其他合同,如可转债、认股权证、股份期权等 \n'+ \
|
3637
|
+
'摊薄每股指标:使用期末数值计算,而非期初期末均值,其结果更能反应期末情况,可能大于、小于或等于每股指标 \n'+ \
|
3638
|
+
'调整后每股净资产的意义:考虑了净资产的流动性和变现能力,更加具有谨慎性或稳健性 \n'+ \
|
3639
|
+
'调整后每股净资产=(年度末股东权益-三年以上的应收款项净额-待摊费用-长期待摊费用)/年度末普通股股份总数 \n'+ \
|
3640
|
+
'应收款项净额:包括应收帐款、其他应收款、预付帐款、应收股利、应收利息、应收补贴款 \n'+ \
|
3641
|
+
'留存收益:指企业从历年实现的利润中提取或形成的留存于企业的内部积累,包括盈余公积和未分配利润两类 \n'+ \
|
3642
|
+
'盈余公积:指从税后利润中提取的、存留于企业内部、具有特定用途的收益积累,包括法定盈余公积和任意盈余公积 \n'+ \
|
3643
|
+
'盈余公积的用途:可用于企业职工福利设施的支出、弥补亏损、扩大生产经营、转增资本(或股本)或派送新股等 \n'+ \
|
3644
|
+
'法定盈余公积:指企业按照公司法等法律规定的比例(例如10%)从净利润中提取的盈余公积 \n'+ \
|
3645
|
+
'任意盈余公积:指企业经股东大会或类似机构批准按照规定的比例从净利润中提取的盈余公积,其提取比例由企业自行确定 \n'+ \
|
3646
|
+
'未分配利润:指企业实现的净利润经过弥补亏损、提取盈余公积和向投资者分配利润后留存在企业的、历年结存的利润 \n'+ \
|
3647
|
+
'资本公积金:指由资本原因形成的公积金,如发行股份溢价、资产重估增值、接受捐赠等,用于转增股本,不得用于弥补亏损 \n'+ \
|
3648
|
+
'自由现金流=企业经营活动现金流-资本性支出,用来衡量实际持有的在不影响企业生存时可回报股东(债权人)的最大现金额 \n'+ \
|
3649
|
+
'(企业)自由现金流可以理解为归属于股东与债权人的最大现金流,而股东(股权)自由现金流则是归属于股东的最大现金流。 \n', \
|
3650
3650
|
|
3651
3651
|
'营运能力': \
|
3652
3652
|
'注:\n'+ \
|
3653
|
-
'
|
3654
|
-
'
|
3655
|
-
'
|
3653
|
+
'指标周转率/周转次数:营业(总)收入 / 指标的起初期末均值。一般来说数值越大越好 \n'+ \
|
3654
|
+
'指标周转天数:360/周转率(或周转次数)。一般来说数值越小越好 \n'+ \
|
3655
|
+
'注意:本表指标主要针对非金融行业,部分指标不适用于金融行业。 \n', \
|
3656
3656
|
|
3657
3657
|
'盈利能力':
|
3658
3658
|
'注:\n'+ \
|
3659
|
-
'
|
3660
|
-
'
|
3661
|
-
'
|
3662
|
-
'
|
3663
|
-
'
|
3664
|
-
'
|
3665
|
-
'
|
3666
|
-
'
|
3667
|
-
'
|
3668
|
-
'
|
3669
|
-
'
|
3670
|
-
'
|
3671
|
-
'
|
3672
|
-
'
|
3673
|
-
'
|
3674
|
-
'
|
3675
|
-
'
|
3676
|
-
'
|
3677
|
-
'
|
3678
|
-
'
|
3679
|
-
'
|
3659
|
+
'毛利润=营业(总)收入-营业(总)成本 \n'+ \
|
3660
|
+
'营业利润=毛利润-营业税金及附加-期间费用-资产减值损失+公允价值变动损益+投资损益 \n'+ \
|
3661
|
+
'营业利润率=营业利润 / 营业(总)收入 x100% \n'+ \
|
3662
|
+
'营业利润率的意义:不考虑营业外收支和所得税费用时,反映主营业务创造利润能力,比毛利率更能反映盈利能力 \n'+ \
|
3663
|
+
'成本费用利润率=利润总额 / 成本费用总额 ×100%,反映付出一单位成本可以获取多少利润,即获取利润的效率 \n'+ \
|
3664
|
+
'利润总额=营业利润+营业外收入-营业外支出 \n'+ \
|
3665
|
+
'成本费用总额=营业成本+营业税金及附加+期间费用+资产减值损失 \n'+ \
|
3666
|
+
'总资产净利率:这里默认使用总资产期初期末平均值,=净利润 / 总资产期初期末平均值 \n'+ \
|
3667
|
+
'总资产净利率_平均(含少数股东损益):即在扣除少数股东损益之前的总资产净利率 \n'+ \
|
3668
|
+
'少数股东损益:指公司合并报表的子公司中其它非控股股东享有的损益 \n'+ \
|
3669
|
+
'总资产报酬率=息税前利润 / 总资产期初期末均值 ×100%,即(利润总额+利息支出) / 平均总资产 ×100% \n'+ \
|
3670
|
+
'总资本回报率(收益率)(Return of Total Capital)=(利润总额+借入资本利息) / 总资本 x100%, \n'+ \
|
3671
|
+
'总资本回报率(收益率)反映企业总资本的收益能力,从经营者的立场观察,自有资本和借入资本没有区分的必要 \n'+ \
|
3672
|
+
'在借入资本利息中,除去利息支出、贴现费用、企业借债利息外,还应包括公司债券折价摊销数额在内 \n'+ \
|
3673
|
+
'息前税后总资产报酬率=息前税后利润 / 总资产期初期末均值 ×100% \n'+ \
|
3674
|
+
'净资产收益率(ROE)=净利润 / 净资产期初期末均值 ×100% \n'+ \
|
3675
|
+
'摊薄净资产收益率=净利润 / 净资产期末数值 ×100%,强调期末情况 \n'+ \
|
3676
|
+
'投入资本回报率(ROIC,Return Of Invested Capital)=息税前利润(EBIT) x (1-税率) / 投入资本 x100% \n'+ \
|
3677
|
+
'息税前利润(EBIT)=营业收入–营业成本–营业费用+营业外收入支出(或是税前净利+利息费用) \n'+ \
|
3678
|
+
'投入资本(Invested Capital)=流动资产–流动负债+不动产与厂房设备净额+无形资产及商誉,注意与总资本不同 \n'+ \
|
3679
|
+
'投入资本回报率的意义:更多地从投资而非财务角度看,每单位投资的资本所能赚取息税前利润的多少。 \n', \
|
3680
3680
|
|
3681
3681
|
'收益质量':
|
3682
3682
|
'注:\n'+ \
|
3683
|
-
'
|
3684
|
-
'
|
3685
|
-
'
|
3683
|
+
'销售成本率=营业(总)成本 / 营业(总)收入 x100%,=1-毛利润 \n'+ \
|
3684
|
+
'成本费用率=(营业(总)成本+期间费用) / 营业(总)收入 x100%,=销售成本率+期间费用率,表示企业的成本费用控制能力 \n'+ \
|
3685
|
+
'期间费用率=期间费用 / 营业(总)收入 x100% \n',
|
3686
3686
|
|
3687
3687
|
'成长能力':
|
3688
|
-
|
3689
|
-
|
3690
|
-
'
|
3688
|
+
'注:\n'+ \
|
3689
|
+
'扣费(后)净利润=净利润-非经常性损益,即扣除了偶然的不可持续或不常发生的收益,可持续性强,可大于或小于净利润 \n'+ \
|
3690
|
+
'归属母公司净利润:简称归母净利润,指合并报表中归属母公司(上市公司)的利润,不包括子公司中非控股股东的利润。 \n',
|
3691
3691
|
|
3692
3692
|
'财务风险':
|
3693
3693
|
'注:\n'+ \
|
3694
|
-
'
|
3695
|
-
'
|
3696
|
-
'
|
3697
|
-
'
|
3698
|
-
'
|
3694
|
+
'保守速动比率:又称超速动比率,=(现金+短期证券投资+应收账款净额)/流动负债,比速动比能够更好地评价短期偿债能力 \n'+ \
|
3695
|
+
'应收账款净额:指应收账款和其他应收款减去备抵坏账的净额,实质即为信誉高客户的应收款净额 \n'+ \
|
3696
|
+
'产权比率(equity ratio)=负债总额 / 所有者权益总额(净资产) x100%,从一个方面说明企业长期偿债能力,越高越弱 \n'+ \
|
3697
|
+
'说明:本表指标主要针对非金融普通企业,部分指标不完全适用于金融行业。 \n\n'+ \
|
3698
|
+
'注意:财报比率统计口径可能存在差异(例如采用期末/期初期末均值/期间加权等),但不影响同一指标的可比性。',
|
3699
3699
|
}
|
3700
3700
|
|
3701
3701
|
# 一只股票情形:多日期
|
@@ -3744,7 +3744,8 @@ def compare_fin_summary_china(tickers,fsdates,facecolor='whitesmoke'):
|
|
3744
3744
|
titletxt="\n===== 上市公司财务报表摘要对比:报表日期"+fsdates3[0]+" ====="
|
3745
3745
|
print('\n'+titletxt)
|
3746
3746
|
"""
|
3747
|
-
titletxt="财报摘要:报表日"+fsdates3[0]
|
3747
|
+
#titletxt="财报摘要:报表日"+fsdates3[0]
|
3748
|
+
titletxt="财报摘要:"+fsdates3[0]
|
3748
3749
|
|
3749
3750
|
mdf=pd.DataFrame()
|
3750
3751
|
for t in tickers_found:
|
@@ -4102,89 +4103,89 @@ def compare_fin_indicator_china(tickers,fsdates,facecolor='papayawhip'):
|
|
4102
4103
|
# 注释
|
4103
4104
|
notesdict={'规模指标': \
|
4104
4105
|
'注:\n'+ \
|
4105
|
-
'
|
4106
|
-
'
|
4106
|
+
'短期=一年以内,长期=一年以上 \n'+ \
|
4107
|
+
'非经常性损益=非经常性或偶然活动带来的损益,一般不可持续。 \n', \
|
4107
4108
|
|
4108
4109
|
'利润回报': \
|
4109
4110
|
'注:\n'+ \
|
4110
|
-
'
|
4111
|
-
'
|
4112
|
-
'
|
4113
|
-
'
|
4114
|
-
'
|
4115
|
-
'
|
4116
|
-
'
|
4117
|
-
'
|
4118
|
-
'
|
4119
|
-
'
|
4120
|
-
'
|
4121
|
-
'
|
4122
|
-
'
|
4123
|
-
'
|
4124
|
-
'
|
4125
|
-
'
|
4126
|
-
'
|
4127
|
-
'
|
4128
|
-
'
|
4129
|
-
'
|
4130
|
-
'
|
4111
|
+
'销售毛利率=毛利率=毛利润/营业(总)收入*100%,毛利润=营业(总)收入-营业(总)成本 \n'+ \
|
4112
|
+
'主营业务利润率=主营业务利润/主营业务收入*100%,主营业务利润=主营业务收入-主营业务成本-主营业务税金及附加 \n'+ \
|
4113
|
+
'营业利润率=营业利润/营业(总)收入*100%,营业利润=主营业务利润+其他业务利润-期间费用+其他损益 \n'+ \
|
4114
|
+
'其他业务利润=其他业务收入-其它业务支出-其他业务税金及附加,期间费用=销售费用+管理费用+财务费用 \n'+ \
|
4115
|
+
'其他损益=-资产减值损失+公允价值变动损益(损失为负数)+投资损益(损失为负数)+资产处置损益(损失为负数) \n'+ \
|
4116
|
+
'利润总额=营业利润+营业外收入-营业外支出 \n'+ \
|
4117
|
+
'销售净利率=净利润率=净利润/营业(总)收入*100%,净利润=利润总额-所得税费用 \n'+ \
|
4118
|
+
'成本费用利润率=利润总额/成本费用总额*100%,成本费用总额=营业(总)成本+营业税金及附加+期间费用+资产减值损失 \n'+ \
|
4119
|
+
'主营业务收入成本率=主营业务成本/主营业务收入*100% \n'+ \
|
4120
|
+
'三项费用比重=(管理费用+营业费用+财务费用)/营业(总)收入*100% \n'+ \
|
4121
|
+
'主营利润比重=主营业务利润/利润总额×100% \n'+ \
|
4122
|
+
'非主营比重=非主营业务利润/利润总额×100% \n'+ \
|
4123
|
+
'固定资产比重=固定资产/资产总额*100% \n'+ \
|
4124
|
+
'总资产利润率=利润总额/资产总额*100%,总资产净利润率(ROA)=净利润/资产总额*100% \n'+ \
|
4125
|
+
'资产报酬率=息税前利润/资产总额*100%,息税前利润(EBIT)=净利润+所得税费用+利息费用 \n'+ \
|
4126
|
+
'净资产收益率(ROE)=净利润/净资产*100%,净资产=资产总额-负债总额 \n'+ \
|
4127
|
+
'加权净资产收益率=净利润/加权平均净资产*100%,加权平均净资产含期间内净资产增减(如发新股、债转股或分红)情况 \n'+ \
|
4128
|
+
'净资产报酬率=息税前利润/加权平均净资产*100% \n'+ \
|
4129
|
+
'投资报酬率=投资回报率(ROI)=利润总额/投资总额*100%,投资总额=短期投资+长期投资 \n'+ \
|
4130
|
+
'股本报酬率=净利润/股东股本总数*100%,相当于股东股本按面值1元计算 \n'+ \
|
4131
|
+
'股息发放率=股利支付率=股利/净利润*100%,反映公司的股利分配政策,比例高表明公司不需更多的资金进行再投入。 \n', \
|
4131
4132
|
|
4132
4133
|
'每股指标': \
|
4133
4134
|
'注:\n'+ \
|
4134
|
-
'
|
4135
|
-
'
|
4136
|
-
'
|
4137
|
-
'
|
4138
|
-
'
|
4139
|
-
'
|
4140
|
-
'
|
4141
|
-
'
|
4142
|
-
'
|
4135
|
+
'每股收益=净利润/流通股数量,其中流通股数量按期初期末均值计算 \n'+ \
|
4136
|
+
'扣除非经常性损益后的每股收益=扣除非经常性损益后的净利润/流通股数量 \n'+ \
|
4137
|
+
'加权每股收益=净利润/加权流通股数量,加权流通股数量含期间内流通股数量的变化(增发新股、送股、转增股本或配股等) \n'+ \
|
4138
|
+
'摊薄每股收益=净利润/期末流通股数量 \n'+ \
|
4139
|
+
'调整后每股收益=调整后净利润/流通股数量,其中调整后净利润考虑了长期账龄的应收款项成为呆坏账对净利润的影响 \n'+ \
|
4140
|
+
'稀释后每股收益=净利润/稀释后流通股数量,假设企业的可转债、认股权证、股票期权等期间内均转换为普通股的情形 \n'+ \
|
4141
|
+
'每股净资产(调整前)=净资产/流通股数量,调整后指标则考虑了其流动性和变现能力,扣除了长期应收款项和(长期)待摊费用 \n'+ \
|
4142
|
+
'每股未分配利润=未分配利润/流通股数量,未分配利润指净利润经过弥补亏损、提取盈余公积和分红后留存在企业的利润累积 \n'+ \
|
4143
|
+
'每股资本公积金=资本公积金/流通股数量,资本公积金含发行股份的溢价、资产重估增值、接受捐赠等,仅可用于转增股本。 \n', \
|
4143
4144
|
|
4144
4145
|
'营运能力':
|
4145
4146
|
'注:\n'+ \
|
4146
|
-
'
|
4147
|
-
'
|
4148
|
-
'
|
4147
|
+
'指标周转率/周转次数:营业(总)收入/指标的起初期末均值,从企业自身角度来说越大越好,但若对供应商则可能相反 \n'+ \
|
4148
|
+
'指标周转天数:360/周转率(或周转次数),从企业自身角度来说越小越好,但若涉及供应商则可能相反 \n'+ \
|
4149
|
+
'注意:本表指标主要针对非金融行业,部分指标不适用于金融行业。 \n', \
|
4149
4150
|
|
4150
4151
|
'现金指标':
|
4151
4152
|
'注:\n'+ \
|
4152
|
-
'
|
4153
|
-
'
|
4154
|
-
'
|
4155
|
-
'
|
4153
|
+
'现金流量比率=经营活动产生的现金净流量/期末流动负债*100%,反映企业短期偿债能力 \n'+ \
|
4154
|
+
'经营现金净流量对销售收入比率=销售现金比率,与赊销政策有关,若企业有虚假收入,也会使该指标过低 \n'+ \
|
4155
|
+
'资产的经营现金流量回报率=经营现金流量净额/总资产*100%,体现企业经营活动的收现能力 \n'+ \
|
4156
|
+
'经营现金净流量与净利润的比率=净现比=经营现金流量净额/净利润*100%。比率越大,企业盈利质量越高。 \n',
|
4156
4157
|
|
4157
4158
|
'偿债能力':
|
4158
4159
|
'注:\n'+ \
|
4159
|
-
'
|
4160
|
-
'
|
4161
|
-
'
|
4162
|
-
'
|
4163
|
-
'
|
4164
|
-
'
|
4165
|
-
'
|
4166
|
-
'
|
4167
|
-
'
|
4168
|
-
'
|
4169
|
-
'
|
4170
|
-
'
|
4160
|
+
'流动比率=流动资产/流动负债,反映企业的短期偿债能力,属于宽松指标 \n'+ \
|
4161
|
+
'速动比率=(流动资产-存货)/流动负债,反映企业的短期偿债能力,属于较严的指标 \n'+ \
|
4162
|
+
'现金比率=(货币资金+短期有价证券)/流动负债*100%,反映企业的短期偿债能力,属于严厉的指标 \n'+ \
|
4163
|
+
'利息支付倍数=利息保障倍数=税息前利润/利息费用*100%,衡量偿付借款利息的能力 \n'+ \
|
4164
|
+
'长期负债比率=资本化比率=长期负债/资产总额*100% \n'+ \
|
4165
|
+
'股东权益比率=自有资本比率=净资产比率=股东权益/资产总额*100% \n'+ \
|
4166
|
+
'产权比率=长期负债/所有者权益(股东权益)*100% \n'+ \
|
4167
|
+
'长期债务与营运资金比率=长期债务/营运资金*100%,反映偿还债务能力,通常长期债务不应超过营运资金 \n'+ \
|
4168
|
+
'营运资金=流动资产-流动负债 \n'+ \
|
4169
|
+
'股东权益与固定资产比率=股东权益总额÷固定资产总额×100%,衡量公司财务结构稳定性,越大越稳定 \n'+ \
|
4170
|
+
'清算价值比率=有形资产/负债总额*100%,反映公司清偿全部债务的能力 \n'+ \
|
4171
|
+
'经营现金净流量对负债比率=现金流量负债比=经营活动现金流量净额/负债总额*100%,比率越高,财务弹性越好。 \n',
|
4171
4172
|
|
4172
4173
|
'应收账款':
|
4173
4174
|
'注:\n'+ \
|
4174
|
-
'
|
4175
|
-
'
|
4175
|
+
'使用账龄法对应收账款/其他应收款分类 \n'+ \
|
4176
|
+
'一般而言,应收款项的账龄越长,成为呆坏账的可能性就越大。 \n',
|
4176
4177
|
|
4177
4178
|
'预付账款':
|
4178
4179
|
'注:\n'+ \
|
4179
|
-
'
|
4180
|
-
'
|
4180
|
+
'一般而言,预付款项数额越大,企业在供应链中的地位越低 \n'+ \
|
4181
|
+
'一般而言,预付款项的账龄越长,企业在供应链中的地位越低。 \n',
|
4181
4182
|
|
4182
4183
|
'其他指标':
|
4183
4184
|
'注:\n'+ \
|
4184
|
-
'
|
4185
|
-
'
|
4186
|
-
'
|
4187
|
-
'
|
4185
|
+
'长期资产与长期资金比率=非流动资产/(长期负债+股东权益)*100%,长期资金少,流动负债较多,财务风险较大 \n'+ \
|
4186
|
+
'资本化比率=长期负债/(长期负债+股东权益)*100%,指标值越小,负债的资本化程度就越低,长期偿债压力就越小 \n'+ \
|
4187
|
+
'固定资产净值率=(固定资产原值-累计折旧)/固定资产原值*100%,反映企业全部固定资产平均新旧程度 \n'+ \
|
4188
|
+
'资本固定化比率=非流动资产/净资产*100%,若超过100%说明固定资产资金投入超过自身能力,易造成财务状况恶化。\n',
|
4188
4189
|
}
|
4189
4190
|
|
4190
4191
|
# 标记选项类型
|
@@ -4272,7 +4273,8 @@ def compare_fin_indicator_china(tickers,fsdates,facecolor='papayawhip'):
|
|
4272
4273
|
titletxt="\n===== 上市公司财务报表主要比率和重要项目对比:报表日期"+fsdates3[0]+" ====="
|
4273
4274
|
print('\n'+titletxt)
|
4274
4275
|
"""
|
4275
|
-
titletxt="主要财务比率和指标:报表日"+fsdates3[0]
|
4276
|
+
#titletxt="主要财务比率和指标:报表日"+fsdates3[0]
|
4277
|
+
titletxt="主要财务比率和指标:"+fsdates3[0]
|
4276
4278
|
|
4277
4279
|
for ty in typelist:
|
4278
4280
|
dft=mdf[mdf['选项']==ty]
|
siat/financials_china2.py
CHANGED
@@ -571,8 +571,8 @@ def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',facecolor='p
|
|
571
571
|
"""
|
572
572
|
|
573
573
|
if not math.isnan(i_value):
|
574
|
-
i_value_yy=round(i_value/yiyuan,
|
575
|
-
i_value_qc_yy=round(i_value_qc/yiyuan,
|
574
|
+
i_value_yy=round(i_value/yiyuan,4)
|
575
|
+
i_value_qc_yy=round(i_value_qc/yiyuan,4)
|
576
576
|
i_value_chg_yy=round(i_value_yy - i_value_qc_yy,2)
|
577
577
|
if not(i_value_qc_yy==0):
|
578
578
|
i_value_chg_pct=round(i_value_chg_yy/i_value_qc_yy*100,2)
|
@@ -599,9 +599,10 @@ def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',facecolor='p
|
|
599
599
|
if title_txt=='':
|
600
600
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
601
601
|
title_txt=tname+"财报分析:重要项目的变动情况\n(截至"+fsdate+")"
|
602
|
-
import datetime;
|
602
|
+
import datetime; todaydt=datetime.date.today()
|
603
603
|
#footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
|
604
|
-
footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
604
|
+
#footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
605
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
605
606
|
|
606
607
|
if notes=='':
|
607
608
|
foottext=footnote
|
@@ -647,7 +648,7 @@ def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
647
648
|
row_list=[i]
|
648
649
|
for fd in fsdates1:
|
649
650
|
i_value,_,_=select_item(df,ticker,fd,i)
|
650
|
-
row_list=row_list+[round(i_value/yiyuan,
|
651
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
651
652
|
dfp.loc[len(dfp)] = row_list
|
652
653
|
|
653
654
|
last_row=[items[0]+"占比%"]
|
@@ -663,8 +664,8 @@ def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
663
664
|
if title_txt=='':
|
664
665
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
665
666
|
title_txt=tname+"财报分析:重要项目占比的变动趋势"
|
666
|
-
import datetime;
|
667
|
-
footnote="
|
667
|
+
import datetime; todaydt=datetime.date.today()
|
668
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
668
669
|
|
669
670
|
if notes=='':
|
670
671
|
foottext=footnote
|
@@ -705,7 +706,7 @@ def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
705
706
|
row_list=[i]
|
706
707
|
for fd in fsdates1:
|
707
708
|
i_value,_,_=select_item(df,ticker,fd,i)
|
708
|
-
row_list=row_list+[round(i_value/yiyuan,
|
709
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
709
710
|
dfp.loc[len(dfp)] = row_list
|
710
711
|
|
711
712
|
last_row=["流动比率%"]
|
@@ -721,8 +722,8 @@ def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
721
722
|
if title_txt=='':
|
722
723
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
723
724
|
title_txt=tname+"财报分析:流动比率的变动趋势"
|
724
|
-
import datetime;
|
725
|
-
footnote="
|
725
|
+
import datetime; todaydt=datetime.date.today()
|
726
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
726
727
|
|
727
728
|
if notes=='':
|
728
729
|
foottext=footnote
|
@@ -762,14 +763,14 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
762
763
|
row_list=[i]
|
763
764
|
for fd in fsdates1:
|
764
765
|
i_value,_,_=select_item(df,ticker,fd,i)
|
765
|
-
row_list=row_list+[round(i_value/yiyuan,
|
766
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
766
767
|
dfp.loc[len(dfp)] = row_list
|
767
768
|
|
768
769
|
i='存货'
|
769
770
|
row_list=['其中:'+i]
|
770
771
|
for fd in fsdates1:
|
771
772
|
i_value,_,_=select_item(df,ticker,fd,i)
|
772
|
-
row_list=row_list+[round(i_value/yiyuan,
|
773
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
773
774
|
dfp.loc[len(dfp)] = row_list
|
774
775
|
|
775
776
|
i='速动资产合计'
|
@@ -783,7 +784,7 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
783
784
|
row_list=[i]
|
784
785
|
for fd in fsdates1:
|
785
786
|
i_value,_,_=select_item(df,ticker,fd,i)
|
786
|
-
row_list=row_list+[round(i_value/yiyuan,
|
787
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
787
788
|
dfp.loc[len(dfp)] = row_list
|
788
789
|
|
789
790
|
last_row=["速动比率%"]
|
@@ -799,8 +800,8 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
799
800
|
if title_txt=='':
|
800
801
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
801
802
|
title_txt=tname+"财报分析:速动比率的变动趋势"
|
802
|
-
import datetime;
|
803
|
-
footnote="
|
803
|
+
import datetime; todaydt=datetime.date.today()
|
804
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
804
805
|
|
805
806
|
if notes=='':
|
806
807
|
foottext=footnote
|
@@ -840,7 +841,7 @@ def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
840
841
|
row_list=[i]
|
841
842
|
for fd in fsdates1:
|
842
843
|
i_value,_,_=select_item(df,ticker,fd,i)
|
843
|
-
row_list=row_list+[round(i_value/yiyuan,
|
844
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
844
845
|
dfp.loc[len(dfp)] = row_list
|
845
846
|
|
846
847
|
last_row=["资产负债率%"]
|
@@ -856,8 +857,8 @@ def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
856
857
|
if title_txt=='':
|
857
858
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
858
859
|
title_txt=tname+"财报分析:资产负债率的变动趋势"
|
859
|
-
import datetime;
|
860
|
-
footnote="
|
860
|
+
import datetime; todaydt=datetime.date.today()
|
861
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
861
862
|
|
862
863
|
if notes=='':
|
863
864
|
foottext=footnote
|
@@ -902,7 +903,7 @@ def fs_item_analysis_6_original(df,ticker,fsdates,items,title_txt='',notes=''):
|
|
902
903
|
row_list=[fd]
|
903
904
|
for i in items:
|
904
905
|
i_value,_,_=select_item(df,ticker,fd,i)
|
905
|
-
row_list=row_list+[round(i_value/yiyuan,
|
906
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
906
907
|
dfp.loc[len(dfp)] = row_list
|
907
908
|
|
908
909
|
last_row=["增幅%"]
|
@@ -919,8 +920,8 @@ def fs_item_analysis_6_original(df,ticker,fsdates,items,title_txt='',notes=''):
|
|
919
920
|
if title_txt=='':
|
920
921
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
921
922
|
title_txt=tname+"财报分析:重要关联项目的增幅对比"
|
922
|
-
import datetime;
|
923
|
-
footnote="
|
923
|
+
import datetime; todaydt=datetime.date.today()
|
924
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
924
925
|
|
925
926
|
if notes=='':
|
926
927
|
foottext=footnote
|
@@ -958,7 +959,7 @@ def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
958
959
|
for i in items:
|
959
960
|
i_value,_,_=select_item(df,ticker,fd,i)
|
960
961
|
if not('%' in i) and not('(元)' in i):
|
961
|
-
row_list=row_list+[round(i_value/yiyuan,
|
962
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
962
963
|
yiyuan_foot=True
|
963
964
|
else:
|
964
965
|
row_list=row_list+[i_value]
|
@@ -978,11 +979,11 @@ def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
978
979
|
if title_txt=='':
|
979
980
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
980
981
|
title_txt=tname+"财报分析:重要关联项目的增幅对比"
|
981
|
-
import datetime;
|
982
|
+
import datetime; todaydt=datetime.date.today()
|
982
983
|
if yiyuan_foot:
|
983
|
-
footnote="
|
984
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
984
985
|
else:
|
985
|
-
footnote="
|
986
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
986
987
|
|
987
988
|
if notes=='':
|
988
989
|
foottext=footnote
|
@@ -1032,7 +1033,7 @@ def fs_item_analysis_7_original(df,tickers,fsdate,items,title_txt=''):
|
|
1032
1033
|
for i in items:
|
1033
1034
|
i_value,_,_=select_item(df,t,fsdate,i)
|
1034
1035
|
if not('%' in i) and not('(元)' in i):
|
1035
|
-
row_list=row_list+[round(i_value/yiyuan,
|
1036
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
1036
1037
|
yiyuan_foot=True
|
1037
1038
|
else:
|
1038
1039
|
row_list=row_list+[i_value]
|
@@ -1049,11 +1050,11 @@ def fs_item_analysis_7_original(df,tickers,fsdate,items,title_txt=''):
|
|
1049
1050
|
ticker=tickers[0]
|
1050
1051
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
1051
1052
|
title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
|
1052
|
-
import datetime;
|
1053
|
+
import datetime; todaydt=datetime.date.today()
|
1053
1054
|
if yiyuan_foot:
|
1054
|
-
footnote="
|
1055
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
1055
1056
|
else:
|
1056
|
-
footnote="
|
1057
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
1057
1058
|
df_directprint(dfp,title_txt,footnote)
|
1058
1059
|
|
1059
1060
|
return dfp
|
@@ -1085,7 +1086,7 @@ def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1085
1086
|
for i in items:
|
1086
1087
|
i_value,_,_=select_item(df,t,fsdate,i)
|
1087
1088
|
if not('%' in i) and not('(元)' in i):
|
1088
|
-
row_list=row_list+[round(i_value/yiyuan,
|
1089
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
1089
1090
|
yiyuan_foot=True
|
1090
1091
|
else:
|
1091
1092
|
row_list=row_list+[i_value]
|
@@ -1119,13 +1120,15 @@ def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1119
1120
|
ticker=tickers[0]
|
1120
1121
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
1121
1122
|
title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
|
1122
|
-
import datetime;
|
1123
|
+
import datetime; todaydt=datetime.date.today()
|
1123
1124
|
if yiyuan_foot:
|
1124
1125
|
#footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
|
1125
|
-
footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1126
|
+
#footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1127
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
1126
1128
|
else:
|
1127
1129
|
#footnote="*数据来源:新浪财经,"+str(today)
|
1128
|
-
footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1130
|
+
#footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1131
|
+
footnote='数据来源:新浪财经,'+str(todaydt)
|
1129
1132
|
|
1130
1133
|
if notes=='':
|
1131
1134
|
foottext=footnote
|
@@ -1167,7 +1170,7 @@ def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1167
1170
|
for i in items:
|
1168
1171
|
i_value,_,_=select_item(df,t,fsdate,i)
|
1169
1172
|
if not('%' in i) and not('(元)' in i):
|
1170
|
-
row_list=row_list+[round(i_value/yiyuan,
|
1173
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
1171
1174
|
yiyuan_foot=True
|
1172
1175
|
else:
|
1173
1176
|
row_list=row_list+[i_value]
|
@@ -1201,13 +1204,15 @@ def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1201
1204
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
1202
1205
|
title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
|
1203
1206
|
|
1204
|
-
import datetime;
|
1207
|
+
import datetime; todaydt=datetime.date.today()
|
1205
1208
|
if yiyuan_foot:
|
1206
1209
|
#footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
|
1207
|
-
footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1210
|
+
#footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1211
|
+
footnote="单位:亿元,"+'数据来源:新浪财经,'+str(todaydt)
|
1208
1212
|
else:
|
1209
1213
|
#footnote="*数据来源:新浪财经,"+str(today)
|
1210
|
-
footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1214
|
+
#footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1215
|
+
footnote='数据来源:新浪财经,'+str(todaydt)
|
1211
1216
|
|
1212
1217
|
if notes=='':
|
1213
1218
|
foottext=footnote
|
@@ -1268,9 +1273,9 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1268
1273
|
comparator=tickers[0]
|
1269
1274
|
comparee=tickers[1:]
|
1270
1275
|
print(" Conducting asset-liability analysis ...")
|
1271
|
-
print("
|
1276
|
+
print(" Focus on:",ticker_name(comparator,'stock'))
|
1272
1277
|
#print(" Comparee :",ticker_name(comparee))
|
1273
|
-
print("
|
1278
|
+
print(" Peers :",end='')
|
1274
1279
|
if comparee != []:
|
1275
1280
|
print_list(ticker_name(comparee,'stock'))
|
1276
1281
|
else:
|
@@ -1315,11 +1320,17 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1315
1320
|
#资产变动趋势2
|
1316
1321
|
title_txt=title_head+"主要资产项目,"+fsdate
|
1317
1322
|
items2=["货币资金","应收账款","存货","长期股权投资","固定资产净额","资产总计"]
|
1318
|
-
|
1323
|
+
"""
|
1319
1324
|
notes1="注1:货币资金包括库存现金、银行存款和其他货币资金三个部分"
|
1320
1325
|
notes2="注2:其他货币资金包括银行汇(本)票存款、信用证保证金存款和信用卡存款等"
|
1321
1326
|
notes3="注3:长期股权投资是指企业对其子公司、合营企业及联营企业的权益性投资"
|
1322
1327
|
notes4="注4:固定资产净额 = 固定资产原值 - 累计折旧 - 资产减值准备"
|
1328
|
+
"""
|
1329
|
+
notes1="注:\n货币资金包括库存现金、银行存款和其他货币资金三个部分"
|
1330
|
+
notes2="其他货币资金包括银行汇(本)票存款、信用证保证金存款和信用卡存款等"
|
1331
|
+
notes3="长期股权投资是指企业对其子公司、合营企业及联营企业的权益性投资"
|
1332
|
+
notes4="固定资产净额 = 固定资产原值 - 累计折旧 - 资产减值准备"
|
1333
|
+
|
1323
1334
|
notes=notes1+'\n'+notes2+'\n'+notes3+'\n'+notes4
|
1324
1335
|
dfp2=fs_item_analysis_1(df,ticker,fsdate,items2,title_txt,notes,facecolor=facecolor)
|
1325
1336
|
|
@@ -1331,7 +1342,7 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1331
1342
|
#所有者权益变动趋势
|
1332
1343
|
title_txt=title_head+"主要权益项目,"+fsdate
|
1333
1344
|
items4=["实收资本(或股本)","资本公积","盈余公积","未分配利润","所有者权益合计"]
|
1334
|
-
|
1345
|
+
"""
|
1335
1346
|
notes1="注1:实收资本(或股本,Paid-in Capital)指企业实际收到的投资人投入的资本"
|
1336
1347
|
notes2="注2:资本公积是由股东投入的因故不能计入实收资本(或股本)中的那部分投入资金"
|
1337
1348
|
notes3=" 资本公积包括资本(股本)溢价、其他资本公积、资产评估增值、资本折算差额"
|
@@ -1346,6 +1357,22 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1346
1357
|
notes12=" 任意盈余公积是指企业内部可自主决定比例提取的盈余公积"
|
1347
1358
|
notes13=" 企业提取的盈余公积可用于弥补亏损、转增资本、发放现金股利或利润等"
|
1348
1359
|
notes14="注4:未分配利润是净利润经弥补亏损、提取盈余公积和向投资者分配利润后的资金"
|
1360
|
+
"""
|
1361
|
+
notes1="注:\n实收资本(或股本,Paid-in Capital)指企业实际收到的投资人投入的资本"
|
1362
|
+
notes2="资本公积是由股东投入的因故不能计入实收资本(或股本)中的那部分投入资金"
|
1363
|
+
notes3="资本公积包括资本(股本)溢价、其他资本公积、资产评估增值、资本折算差额"
|
1364
|
+
notes4="资本(股本)溢价是公司发行权益证券时价格超出票面价值的部分"
|
1365
|
+
notes5="其他资本公积包括金融资产公允价值变动、被投资单位净利润以外的变动等"
|
1366
|
+
notes6="资产评估增值是重估企业资产时,重估价高于资产的账面净值的部分"
|
1367
|
+
notes7="资本折算差额是外币资本因汇率变动产生的差额"
|
1368
|
+
notes8="盈余公积是企业按照要求从税后利润中提取的、属于留存收益范畴的资金"
|
1369
|
+
notes9="企业从历年利润中提取的留存于企业的内部积累,包括盈余公积和未分配利润"
|
1370
|
+
notes10="公司制企业的盈余公积包括法定盈余公积和任意盈余公积"
|
1371
|
+
notes11="法定盈余公积是指企业按照规定比例从净利润中必须提取的盈余公积"
|
1372
|
+
notes12="任意盈余公积是指企业内部可自主决定比例提取的盈余公积"
|
1373
|
+
notes13="企业提取的盈余公积可用于弥补亏损、转增资本、发放现金股利或利润等"
|
1374
|
+
notes14="未分配利润是净利润经弥补亏损、提取盈余公积和向投资者分配利润后的资金"
|
1375
|
+
|
1349
1376
|
notesA=notes1+'\n'+notes2+'\n'+notes3+'\n'+notes4+'\n'+notes5+'\n'+notes6+'\n'+notes7
|
1350
1377
|
notesB=notes8+'\n'+notes9+'\n'+notes10+'\n'+notes11+'\n'+notes12+'\n'+notes13+'\n'+notes14
|
1351
1378
|
|
@@ -1473,9 +1500,9 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1473
1500
|
comparator=tickers[0]
|
1474
1501
|
comparee=tickers[1:]
|
1475
1502
|
print(" Conducting income-cost analysis ...")
|
1476
|
-
print("
|
1503
|
+
print(" Focus on:",ticker_name(comparator,'stock'))
|
1477
1504
|
#print(" Comparee :",ticker_name(comparee))
|
1478
|
-
print("
|
1505
|
+
print(" Peers :",end='')
|
1479
1506
|
if comparee != []:
|
1480
1507
|
print_list(ticker_name(comparee,'stock'))
|
1481
1508
|
else:
|
@@ -1518,18 +1545,27 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1518
1545
|
title_txt=title_head+"营业总成本占营业总收入比例情况"
|
1519
1546
|
fsdates1=fsdates[:3]
|
1520
1547
|
items3=["营业总成本","营业总收入"]
|
1521
|
-
|
1548
|
+
"""
|
1522
1549
|
notes1="注1:营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1523
1550
|
notes2="注2:营业收入=主营业务收入和其他非主营业务收入"
|
1524
1551
|
notes3="注3:营业总收入=营业收入+非营业收入(投资收益、营业外收入等)"
|
1552
|
+
"""
|
1553
|
+
notes1="注:\n营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1554
|
+
notes2="营业收入=主营业务收入和其他非主营业务收入"
|
1555
|
+
notes3="营业总收入=营业收入+非营业收入(投资收益、营业外收入等)"
|
1556
|
+
|
1525
1557
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1526
1558
|
dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt,notes,facecolor=facecolor)
|
1527
1559
|
#====================================================================
|
1528
1560
|
title_txt=title_head+"营业成本占营业总成本比例情况"
|
1529
1561
|
items4=["营业成本","营业总成本"]
|
1530
|
-
|
1562
|
+
"""
|
1531
1563
|
notes1="注1:营业成本是经营活动中发生的可归属于产品/劳务成本等的费用"
|
1532
1564
|
notes2="注2:营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1565
|
+
"""
|
1566
|
+
notes1="注:\n营业成本是经营活动中发生的可归属于产品/劳务成本等的费用"
|
1567
|
+
notes2="营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1568
|
+
|
1533
1569
|
notes=notes1+'\n'+notes2
|
1534
1570
|
dfp4=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt,notes,facecolor=facecolor)
|
1535
1571
|
|
@@ -1558,10 +1594,15 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1558
1594
|
#title_txt=title_head+"三项费用率同行对比"
|
1559
1595
|
title_txt="三项费用率同行对比:"+fsdate
|
1560
1596
|
items14=['营业总收入','销售费用率%','管理费用率%','研发费用率%']
|
1561
|
-
|
1597
|
+
"""
|
1562
1598
|
notes1="注1:销售费用率 = 销售费用 / 营业总收入"
|
1563
1599
|
notes2="注2:管理费用率 = 管理费用 / 营业总收入"
|
1564
1600
|
notes3="注3:研发费用率 = 研发费用 / 营业总收入"
|
1601
|
+
"""
|
1602
|
+
notes1="注:\n销售费用率 = 销售费用 / 营业总收入"
|
1603
|
+
notes2="管理费用率 = 管理费用 / 营业总收入"
|
1604
|
+
notes3="研发费用率 = 研发费用 / 营业总收入"
|
1605
|
+
|
1565
1606
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1566
1607
|
|
1567
1608
|
dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes,facecolor=facecolor)
|
@@ -1653,8 +1694,8 @@ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1653
1694
|
comparator=tickers[0]
|
1654
1695
|
comparee=tickers[1:]
|
1655
1696
|
print(" Conducting cash flow analysis ...")
|
1656
|
-
print("
|
1657
|
-
print("
|
1697
|
+
print(" Focus on:",ticker_name(comparator,'stock'))
|
1698
|
+
print(" Peers :",end='')
|
1658
1699
|
if comparee != []:
|
1659
1700
|
print_list(ticker_name(comparee,'stock'))
|
1660
1701
|
else:
|
@@ -1702,36 +1743,55 @@ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1702
1743
|
#同行比较
|
1703
1744
|
title_txt=title_head+"现金收入能力同行比较,"+fsdate
|
1704
1745
|
items16=['销售现金比率%','现金购销比率%','营业现金回笼率%']
|
1705
|
-
|
1746
|
+
"""
|
1706
1747
|
notes1="注1:销售现金比率 = 经营活动现金流入 / 营业总收入"
|
1707
1748
|
notes2="注2:现金购销比率 = 经营活动现金流出 / 经营活动现金流入"
|
1708
1749
|
notes3="注3:营业现金回笼率 = 经营活动现金流入 / 营业总收入"
|
1750
|
+
"""
|
1751
|
+
notes1="注:\n销售现金比率 = 经营活动现金流入 / 营业总收入"
|
1752
|
+
notes2="现金购销比率 = 经营活动现金流出 / 经营活动现金流入"
|
1753
|
+
notes3="营业现金回笼率 = 经营活动现金流入 / 营业总收入"
|
1754
|
+
|
1709
1755
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1710
1756
|
dfp12=fs_item_analysis_8(df,tickers,fsdate,items16,title_txt,notes,facecolor=facecolor)
|
1711
1757
|
|
1712
1758
|
title_txt=title_head+"现金偿债能力同行比较,"+fsdate
|
1713
1759
|
items14=['短期现金偿债能力%','长期现金偿债能力%']
|
1714
|
-
|
1760
|
+
"""
|
1715
1761
|
notes1="注1:短期现金偿债能力 = 经营活动现金流净额 / 流动负债合计"
|
1716
1762
|
notes2="注2:长期现金偿债能力 = 经营活动现金流净额 / 负债合计"
|
1763
|
+
"""
|
1764
|
+
notes1="注:\n短期现金偿债能力 = 经营活动现金流净额 / 流动负债合计"
|
1765
|
+
notes2="长期现金偿债能力 = 经营活动现金流净额 / 负债合计"
|
1766
|
+
|
1717
1767
|
notes=notes1+'\n'+notes2
|
1718
1768
|
dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes,facecolor=facecolor)
|
1719
1769
|
|
1720
1770
|
title_txt=title_head+"现金支付能力同行比较,"+fsdate
|
1721
1771
|
items15=['现金支付股利能力(元)','现金综合支付能力%','支付给职工的现金比率%']
|
1722
|
-
|
1772
|
+
"""
|
1723
1773
|
notes1="注1:现金支付股利能力 = 经营活动现金流净额 / 流通股股数"
|
1724
1774
|
notes2="注2:现金综合支付能力 = 经营活动现金流净额 / 所有者权益合计"
|
1725
1775
|
notes3="注3:支付给职工的现金比率 = 支付给(为)职工支付的现金 / 经营活动现金流入"
|
1776
|
+
"""
|
1777
|
+
notes1="注:\n现金支付股利能力 = 经营活动现金流净额 / 流通股股数"
|
1778
|
+
notes2="现金综合支付能力 = 经营活动现金流净额 / 所有者权益合计"
|
1779
|
+
notes3="支付给职工的现金比率 = 支付给(为)职工支付的现金 / 经营活动现金流入"
|
1780
|
+
|
1726
1781
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1727
1782
|
dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,notes,facecolor=facecolor)
|
1728
1783
|
|
1729
1784
|
title_txt=title_head+"财务指标含金量同行比较,"+fsdate
|
1730
1785
|
items17=['盈利现金比率%','现金流入流出比率%','资产现金回收率%']
|
1731
|
-
|
1786
|
+
"""
|
1732
1787
|
notes1="注1:盈利现金比率 = 经营活动现金流净额 / 净利润"
|
1733
1788
|
notes2="注2:现金流入流出比率 = 经营活动现金流入 / 经营活动现金流出"
|
1734
1789
|
notes3="注3:资产现金回收率 = 经营活动现金流净额 / 资产总计"
|
1790
|
+
"""
|
1791
|
+
notes1="注:\n盈利现金比率 = 经营活动现金流净额 / 净利润"
|
1792
|
+
notes2="现金流入流出比率 = 经营活动现金流入 / 经营活动现金流出"
|
1793
|
+
notes3="资产现金回收率 = 经营活动现金流净额 / 资产总计"
|
1794
|
+
|
1735
1795
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1736
1796
|
dfp12=fs_item_analysis_8(df,tickers,fsdate,items17,title_txt,notes,facecolor=facecolor)
|
1737
1797
|
|
siat/sector_china.py
CHANGED
@@ -2078,7 +2078,7 @@ def industry_stock_sw(industry='801270.SW',top=5,printout=False):
|
|
2078
2078
|
if printout:
|
2079
2079
|
title_txt="申万行业成分股:"+industry_sw_name(industry)+'('+industry+'.SW)'
|
2080
2080
|
import datetime as dt; today=str(dt.date.today())
|
2081
|
-
footnote="
|
2081
|
+
footnote="成分股总数:"+str(cdf_total)+",数据来源:申万宏源,"+str(today)
|
2082
2082
|
df_directprint(cdf1,title_txt,footnote)
|
2083
2083
|
|
2084
2084
|
#return clist1,cdf1
|
@@ -17,7 +17,7 @@ siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
|
|
17
17
|
siat/capm_beta2.py,sha256=hta-X1iWPjNbG1YYIVlQF-YvKA8An3KuEyLmUEZ3hH8,25562
|
18
18
|
siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
|
19
19
|
siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
|
20
|
-
siat/common.py,sha256=
|
20
|
+
siat/common.py,sha256=LhJQE0aqAWiLtXIcbEBWGW3xIGwTYu3YHe5w5nVNW_o,141547
|
21
21
|
siat/compare_cross.py,sha256=3iP9TH2h3w27F2ARZc7FjKcErYCzWRc-TPiymOyoVtw,24171
|
22
22
|
siat/compare_cross_test.py,sha256=xra5XYmQGEtfIZL2h-GssdH2hLdFIhG3eoCrkDrL3gY,3473
|
23
23
|
siat/concepts_iwencai.py,sha256=m1YEDtECRT6FqtzlKm91pt2I9d3Z_XoP59BtWdRdu8I,3061
|
@@ -39,9 +39,9 @@ siat/financial_statements.py,sha256=Ek18eKHflxZ01evOIwnfH1KZ_M2g8Vr8SxkL1om-K7U,
|
|
39
39
|
siat/financial_statements_test.py,sha256=FLhx8JD-tVVWSBGux6AMz1jioXX4U4bp9DmgFHYXb_w,716
|
40
40
|
siat/financials.py,sha256=mbEZSNeHMMFcnPUryQWvdmNlWQvpnOG9eItgS7IVw3k,80458
|
41
41
|
siat/financials2 - 副本.py,sha256=dKlNjIfKeoSy055fQ6E6TUj9HEoO5Ney9grD84J5kfk,14389
|
42
|
-
siat/financials2.py,sha256=
|
43
|
-
siat/financials_china.py,sha256=
|
44
|
-
siat/financials_china2.py,sha256
|
42
|
+
siat/financials2.py,sha256=CMfvR0zYoNdIE59ruX5AuwNqYil4UNhfRqhyuiC1rl8,44858
|
43
|
+
siat/financials_china.py,sha256=eF_vLhjkp5vB29WPSNKstoL-675M7Wp40k16FngBZNo,187808
|
44
|
+
siat/financials_china2.py,sha256=yATM_6yKT9IMAUPHXxfhDbldBoJZlGhKAjJOyToIg-A,87012
|
45
45
|
siat/financials_china2_test.py,sha256=Erz5k4LyOplBBvYls2MypuqHpVNJ3daiLdyeJezNPu0,2722
|
46
46
|
siat/financials_china2_test2.py,sha256=C8CuYTMHN4Mhp-sTu-Bmg0zMXRCaYV6ezGDoYartRYQ,3507
|
47
47
|
siat/financials_china2_test3.py,sha256=UXYSA80DNSPRhHpovc2MA9JkpILWMAQaRatbWCHBNPs,3118
|
@@ -91,7 +91,7 @@ siat/risk_evaluation.py,sha256=I6B3gty-t--AkDCO0tKF-291YfpnF-IkXcFjqNKCt9I,76286
|
|
91
91
|
siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
|
92
92
|
siat/risk_free_rate.py,sha256=ZMr4cHikPvXvywr54gGqiI3Nvb69am6tq3zj2hwzANE,12384
|
93
93
|
siat/risk_free_rate_test.py,sha256=CpmhUf8aEAEZeNu4gvWP2Mz2dLoIgBX5bI41vfUBEr8,4285
|
94
|
-
siat/sector_china.py,sha256=
|
94
|
+
siat/sector_china.py,sha256=PBBRd7bajz3lJAcDRVvJGeeEniNUkgHBpfkowIG2ECE,104574
|
95
95
|
siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
|
96
96
|
siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
|
97
97
|
siat/security_price2.py,sha256=kuYh0V5cqclkM6MjZUd-N361fv3oxGVVerYINuTzZrE,24622
|
@@ -132,7 +132,7 @@ siat/valuation.py,sha256=NKfeZMdDJOW42oLVHob6eSVBXUqlN1OCnnzwyGAst8c,48855
|
|
132
132
|
siat/valuation_china.py,sha256=Tde2LzPDQy3Z7xOQQDw4ckQMPdROp_z0-GjFE6Z5_lI,67639
|
133
133
|
siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
134
134
|
siat/var_model_validation.py,sha256=f-oDewg7bPzyNanz_Y_jLH68NowAA3gXFehW_weKGG0,14898
|
135
|
-
siat-3.0.
|
136
|
-
siat-3.0.
|
137
|
-
siat-3.0.
|
138
|
-
siat-3.0.
|
135
|
+
siat-3.0.35.dist-info/METADATA,sha256=KnjDpqBllQ_mZKHGNVMU3J5zze_dUBpdwktja0l88_A,1448
|
136
|
+
siat-3.0.35.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
137
|
+
siat-3.0.35.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
|
138
|
+
siat-3.0.35.dist-info/RECORD,,
|
File without changes
|
File without changes
|