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 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
- print(titletxt)
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="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
247
- footnote2="*** Data source: Yahoo Finance, "+todaydt
248
- print('\n',footnote1,'\n',footnote2)
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
- print(titletxt)
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="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
324
- footnote2="*** Data source: Yahoo Finance, "+todaydt
325
- print('\n',footnote1,'\n',footnote2)
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
- print(titletxt)
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="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
399
- footnote2="*** Data source: Yahoo Finance, "+todaydt
400
- print('\n',footnote1,'\n',footnote2)
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
- print(titletxt)
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="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
505
- footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
506
- footnote3="*** Data source: Yahoo Finance, "+todaydt
507
- print('\n',footnote1,'\n',footnote2,'\n',footnote3)
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
- print(titletxt)
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="*** Amount unit: billion, based on exchange's local accounting standards"
603
- footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
604
- footnote3="*** Data source: Yahoo Finance, "+todaydt
605
- print('\n',footnote1,'\n',footnote2,'\n',footnote3)
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
- print(titletxt)
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="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
708
- footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
709
- footnote3="*** Data source: Yahoo Finance, "+todaydt
710
- print('\n',footnote1,'\n',footnote2,'\n',footnote3)
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
- print(titletxt)
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="*** Amount unit: billion, based on exchange's local accounting standards"
807
- footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
808
- footnote3="*** Data source: Yahoo Finance, "+todaydt
809
- print('\n',footnote1,'\n',footnote2,'\n',footnote3)
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
- print(title_txt)
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="*** Based on exchange's local accounting standards, EM/TAT are on periodic mean"
935
- footnote2="Data source: Yahoo Finance, "+todaydt
936
- print('\n',footnote1,'\b.',footnote2)
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
- '1. 毛利率=毛利润 / 营业(总)收入 ×100% \n'+ \
3629
- '2. 毛利润=营业(总)收入-营业(总)成本 \n'+ \
3630
- '3. 销售净利率=净利润 / 营业(总)收入 ×100% \n'+ \
3631
- '4. 期间费用率=期间费用 / 营业(总)收入 ×100%,期间费用包括管理费用,销售费用和财务费用。 \n', \
3628
+ '毛利率=毛利润 / 营业(总)收入 ×100% \n'+ \
3629
+ '毛利润=营业(总)收入-营业(总)成本 \n'+ \
3630
+ '销售净利率=净利润 / 营业(总)收入 ×100% \n'+ \
3631
+ '期间费用率=期间费用 / 营业(总)收入 ×100%,期间费用包括管理费用,销售费用和财务费用。 \n', \
3632
3632
 
3633
3633
  '每股指标': \
3634
3634
  '注:\n'+ \
3635
- '1. 稀释每股指标:假设企业所有发行在外的稀释性潜在普通股期间内均转换为普通股,导致普通股股数增加 \n'+ \
3636
- '2. 潜在普通股:指赋予其持有者在报告期或以后期间享有取得普通股权利的金融工具或者其他合同,例如公司可转债、认股权证、股份期权等 \n'+ \
3637
- '3. 摊薄每股指标:使用期末数值计算,而非期初期末均值,其结果更能反应期末情况,可能大于、小于或等于每股指标 \n'+ \
3638
- '4. 调整后每股净资产的意义:考虑了净资产的流动性和变现能力,更加具有谨慎性或稳健性 \n'+ \
3639
- '5. 调整后每股净资产=(年度末股东权益-三年以上的应收款项净额-待摊费用-长期待摊费用)/年度末普通股股份总数 \n'+ \
3640
- '6. 应收款项净额:包括应收帐款、其他应收款、预付帐款、应收股利、应收利息、应收补贴款 \n'+ \
3641
- '7. 留存收益:指企业从历年实现的利润中提取或形成的留存于企业的内部积累,包括盈余公积和未分配利润两类 \n'+ \
3642
- '8. 盈余公积:指从税后利润中提取的、存留于企业内部、具有特定用途的收益积累,包括法定盈余公积和任意盈余公积 \n'+ \
3643
- '9. 盈余公积的用途:可用于企业职工福利设施的支出、弥补亏损、扩大生产经营、转增资本(或股本)或派送新股等 \n'+ \
3644
- '10.法定盈余公积:指企业按照公司法等法律规定的比例(例如10%)从净利润中提取的盈余公积 \n'+ \
3645
- '11.任意盈余公积:指企业经股东大会或类似机构批准按照规定的比例从净利润中提取的盈余公积,其提取比例由企业自行确定 \n'+ \
3646
- '12.未分配利润:指企业实现的净利润经过弥补亏损、提取盈余公积和向投资者分配利润后留存在企业的、历年结存的利润 \n'+ \
3647
- '13.资本公积金:指直接由资本原因形成的公积金,如发行股份溢价、资产重估增值、接受捐赠等,用于转增股本,不得用于弥补亏损 \n'+ \
3648
- '14.自由现金流=企业经营活动现金流-资本性支出,用来衡量实际持有的在不影响企业生存时可回报股东(债权人)的最大现金额 \n'+ \
3649
- '15.(企业)自由现金流可以理解为归属于股东与债权人的最大现金流,而股东(股权)自由现金流则是归属于股东的最大现金流。 \n', \
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
- '1. 指标周转率/周转次数:营业(总)收入 / 指标的起初期末均值。一般来说数值越大越好 \n'+ \
3654
- '2. 指标周转天数:360/周转率(或周转次数)。一般来说数值越小越好 \n'+ \
3655
- '3. 注意:本表指标主要针对非金融行业,部分指标不适用于金融行业。 \n', \
3653
+ '指标周转率/周转次数:营业(总)收入 / 指标的起初期末均值。一般来说数值越大越好 \n'+ \
3654
+ '指标周转天数:360/周转率(或周转次数)。一般来说数值越小越好 \n'+ \
3655
+ '注意:本表指标主要针对非金融行业,部分指标不适用于金融行业。 \n', \
3656
3656
 
3657
3657
  '盈利能力':
3658
3658
  '注:\n'+ \
3659
- '1. 毛利润=营业(总)收入-营业(总)成本 \n'+ \
3660
- '2. 营业利润=毛利润-营业税金及附加-期间费用-资产减值损失+公允价值变动损益+投资损益 \n'+ \
3661
- '3. 营业利润率=营业利润 / 营业(总)收入 x100% \n'+ \
3662
- '4. 营业利润率的意义:在不考虑营业外收支和所得税费用时,反映企业经营业务创造利润能力,比毛利率更能反映企业的盈利能力 \n'+ \
3663
- '5. 成本费用利润率=利润总额 / 成本费用总额 ×100%,反映企业付出一单位成本可以获取多少利润,即企业获取利润的效率 \n'+ \
3664
- '6. 利润总额=营业利润+营业外收入-营业外支出 \n'+ \
3665
- '7. 成本费用总额=营业成本+营业税金及附加+期间费用+资产减值损失 \n'+ \
3666
- '8. 总资产净利率:这里默认使用总资产期初期末平均值,=净利润 / 总资产期初期末平均值 \n'+ \
3667
- '9. 总资产净利率_平均(含少数股东损益):即在扣除少数股东损益之前的总资产净利率 \n'+ \
3668
- '10.少数股东损益:指公司合并报表的子公司中其它非控股股东享有的损益 \n'+ \
3669
- '11.总资产报酬率=息税前利润 / 总资产期初期末均值 ×100%,即(利润总额+利息支出) / 平均总资产 ×100% \n'+ \
3670
- '12.总资本回报率(收益率)(Return of Total Capital)=(利润总额+借入资本利息) / 总资本 x100%, \n'+ \
3671
- '13.总资本回报率(收益率)反映企业总资本的收益能力,从经营者的立场观察,自有资本和借入资本没有区分的必要 \n'+ \
3672
- '14.在借入资本利息中,除去利息支出、贴现费用、企业借债利息外,还应包括公司债券折价摊销数额在内 \n'+ \
3673
- '15.息前税后总资产报酬率=息前税后利润 / 总资产期初期末均值 ×100% \n'+ \
3674
- '16.净资产收益率(ROE)=净利润 / 净资产期初期末均值 ×100% \n'+ \
3675
- '17.摊薄净资产收益率=净利润 / 净资产期末数值 ×100%,强调期末情况 \n'+ \
3676
- '18.投入资本回报率(ROIC,Return Of Invested Capital)=息税前利润(EBIT) x (1-税率) / 投入资本 x100% \n'+ \
3677
- '19.息税前利润(EBIT)=营业收入–营业成本–营业费用+营业外收入支出(或是税前净利+利息费用) \n'+ \
3678
- '20.投入资本(Invested Capital)=流动资产–流动负债+不动产与厂房设备净额+无形资产及商誉,注意与总资本不同 \n'+ \
3679
- '21.投入资本回报率的意义:更多地从投资而非财务角度看,每单位投资的资本所能赚取息税前利润的多少。 \n', \
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
- '1. 销售成本率=营业(总)成本 / 营业(总)收入 x100%,=1-毛利润 \n'+ \
3684
- '2. 成本费用率=(营业(总)成本+期间费用) / 营业(总)收入 x100%,=销售成本率+期间费用率,可评价企业对成本费用的控制能力 \n'+ \
3685
- '3. 期间费用率=期间费用 / 营业(总)收入 x100% \n',
3683
+ '销售成本率=营业(总)成本 / 营业(总)收入 x100%,=1-毛利润 \n'+ \
3684
+ '成本费用率=(营业(总)成本+期间费用) / 营业(总)收入 x100%,=销售成本率+期间费用率,表示企业的成本费用控制能力 \n'+ \
3685
+ '期间费用率=期间费用 / 营业(总)收入 x100% \n',
3686
3686
 
3687
3687
  '成长能力':
3688
- '注:\n'+ \
3689
- '1. 扣费(后)净利润=净利润-非经常性损益,即扣除了偶然的不可持续或不常发生的收益,可持续性更强,可能大于或小于净利润 \n'+ \
3690
- '2. 归属母公司净利润:简称归母净利润,指企业合并报表中归属控股公司(母公司)的利润,不包括归属子公司中非控股股东的利润。 \n',
3688
+ '注:\n'+ \
3689
+ '扣费(后)净利润=净利润-非经常性损益,即扣除了偶然的不可持续或不常发生的收益,可持续性强,可大于或小于净利润 \n'+ \
3690
+ '归属母公司净利润:简称归母净利润,指合并报表中归属母公司(上市公司)的利润,不包括子公司中非控股股东的利润。 \n',
3691
3691
 
3692
3692
  '财务风险':
3693
3693
  '注:\n'+ \
3694
- '1. 保守速动比率:又称超速动比率,=(现金+短期证券投资+应收账款净额) / 流动负债,比速动比能够更好地评价企业短期偿债能力 \n'+ \
3695
- '2. 应收账款净额:指应收账款和其他应收款减去备抵坏账的净额,实质即为信誉高客户的应收款净额 \n'+ \
3696
- '3. 产权比率(equity ratio)=负债总额 / 所有者权益总额(净资产) x100%,从一个方面说明企业长期偿债能力,越高越弱 \n'+ \
3697
- '4. 说明:本表指标主要针对非金融普通企业,部分指标不完全适用于金融行业。 \n\n'+ \
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
- '1. 短期=一年以内,长期=一年以上 \n'+ \
4106
- '2. 非经常性损益=非经常性或偶然活动带来的损益,一般不可持续。 \n', \
4106
+ '短期=一年以内,长期=一年以上 \n'+ \
4107
+ '非经常性损益=非经常性或偶然活动带来的损益,一般不可持续。 \n', \
4107
4108
 
4108
4109
  '利润回报': \
4109
4110
  '注:\n'+ \
4110
- '1. 销售毛利率=毛利率=毛利润/营业(总)收入*100%,毛利润=营业(总)收入-营业(总)成本 \n'+ \
4111
- '2. 主营业务利润率=主营业务利润/主营业务收入*100%,主营业务利润=主营业务收入-主营业务成本-主营业务税金及附加 \n'+ \
4112
- '3. 营业利润率=营业利润/营业(总)收入*100%,营业利润=主营业务利润+其他业务利润-期间费用+其他损益 \n'+ \
4113
- '4. 其他业务利润=其他业务收入-其它业务支出-其他业务税金及附加,期间费用=销售费用+管理费用+财务费用 \n'+ \
4114
- '5. 其他损益=-资产减值损失+公允价值变动损益(损失为负数)+投资损益(损失为负数)+资产处置损益(损失为负数) \n'+ \
4115
- '6. 利润总额=营业利润+营业外收入-营业外支出 \n'+ \
4116
- '7. 销售净利率=净利润率=净利润/营业(总)收入*100%,净利润=利润总额-所得税费用 \n'+ \
4117
- '8. 成本费用利润率=利润总额/成本费用总额*100%,成本费用总额=营业(总)成本+营业税金及附加+期间费用+资产减值损失 \n'+ \
4118
- '9. 主营业务收入成本率=主营业务成本/主营业务收入*100% \n'+ \
4119
- '10.三项费用比重=(管理费用+营业费用+财务费用)/营业(总)收入*100% \n'+ \
4120
- '11.主营利润比重=主营业务利润/利润总额×100% \n'+ \
4121
- '12.非主营比重=非主营业务利润/利润总额×100% \n'+ \
4122
- '13.固定资产比重=固定资产/资产总额*100% \n'+ \
4123
- '14.总资产利润率=利润总额/资产总额*100%,总资产净利润率(ROA)=净利润/资产总额*100% \n'+ \
4124
- '15.资产报酬率=息税前利润/资产总额*100%,息税前利润(EBIT)=净利润+所得税费用+利息费用 \n'+ \
4125
- '16.净资产收益率(ROE)=净利润/净资产*100%,净资产=资产总额-负债总额 \n'+ \
4126
- '17.加权净资产收益率=净利润/加权平均净资产*100%,加权平均净资产含期间内净资产增减(如发新股、债转股或分红)情况 \n'+ \
4127
- '18.净资产报酬率=息税前利润/加权平均净资产*100% \n'+ \
4128
- '19.投资报酬率=投资回报率(ROI)=利润总额/投资总额*100%,投资总额=短期投资+长期投资 \n'+ \
4129
- '20.股本报酬率=净利润/股东股本总数*100%,相当于股东股本按面值1元计算 \n'+ \
4130
- '21.股息发放率=股利支付率=股利/净利润*100%,反映公司的股利分配政策,比例高表明公司不需更多的资金进行再投入。 \n', \
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
- '1. 每股收益=净利润/流通股数量,其中流通股数量按期初期末均值计算 \n'+ \
4135
- '2. 扣除非经常性损益后的每股收益=扣除非经常性损益后的净利润/流通股数量 \n'+ \
4136
- '3. 加权每股收益=净利润/加权流通股数量,加权流通股数量含期间内流通股数量的变化(增发新股、送股、转增股本或配股等) \n'+ \
4137
- '4. 摊薄每股收益=净利润/期末流通股数量 \n'+ \
4138
- '5. 调整后每股收益=调整后净利润/流通股数量,其中调整后净利润考虑了长期账龄的应收款项成为呆坏账对净利润的影响 \n'+ \
4139
- '6. 稀释后每股收益=净利润/稀释后流通股数量,假设企业的可转债、认股权证、股票期权等期间内均转换为普通股的情形 \n'+ \
4140
- '7. 每股净资产(调整前)=净资产/流通股数量,调整后指标考虑了净资产的流动性和变现能力,扣除了长期应收款项和(长期)待摊费用 \n'+ \
4141
- '8. 每股未分配利润=未分配利润/流通股数量,未分配利润指净利润经过弥补亏损、提取盈余公积和分红后留存在企业的利润累积 \n'+ \
4142
- '9. 每股资本公积金=资本公积金/流通股数量,资本公积金含发行股份的溢价、资产重估增值、接受捐赠等,仅可用于转增股本。 \n', \
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
- '1. 指标周转率/周转次数:营业(总)收入 / 指标的起初期末均值,从企业自身角度来说越大越好,但若涉及供应商则可能相反 \n'+ \
4147
- '2. 指标周转天数:360/周转率(或周转次数),从企业自身角度来说越小越好,但若涉及供应商则可能相反 \n'+ \
4148
- '3. 注意:本表指标主要针对非金融行业,部分指标不适用于金融行业。 \n', \
4147
+ '指标周转率/周转次数:营业(总)收入/指标的起初期末均值,从企业自身角度来说越大越好,但若对供应商则可能相反 \n'+ \
4148
+ '指标周转天数:360/周转率(或周转次数),从企业自身角度来说越小越好,但若涉及供应商则可能相反 \n'+ \
4149
+ '注意:本表指标主要针对非金融行业,部分指标不适用于金融行业。 \n', \
4149
4150
 
4150
4151
  '现金指标':
4151
4152
  '注:\n'+ \
4152
- '1. 现金流量比率=经营活动产生的现金净流量/期末流动负债*100%,反映企业短期偿债能力 \n'+ \
4153
- '2. 经营现金净流量对销售收入比率=销售现金比率,与赊销政策有关,若企业有虚假收入,也会使该指标过低 \n'+ \
4154
- '3. 资产的经营现金流量回报率=经营现金流量净额/总资产*100%,体现企业经营活动的收现能力 \n'+ \
4155
- '4. 经营现金净流量与净利润的比率=净现比=经营现金流量净额/净利润*100%。比率越大,企业盈利质量越高。 \n',
4153
+ '现金流量比率=经营活动产生的现金净流量/期末流动负债*100%,反映企业短期偿债能力 \n'+ \
4154
+ '经营现金净流量对销售收入比率=销售现金比率,与赊销政策有关,若企业有虚假收入,也会使该指标过低 \n'+ \
4155
+ '资产的经营现金流量回报率=经营现金流量净额/总资产*100%,体现企业经营活动的收现能力 \n'+ \
4156
+ '经营现金净流量与净利润的比率=净现比=经营现金流量净额/净利润*100%。比率越大,企业盈利质量越高。 \n',
4156
4157
 
4157
4158
  '偿债能力':
4158
4159
  '注:\n'+ \
4159
- '1. 流动比率=流动资产/流动负债,反映企业的短期偿债能力,属于宽松指标 \n'+ \
4160
- '2. 速动比率=(流动资产-存货)/流动负债,反映企业的短期偿债能力,属于较严的指标 \n'+ \
4161
- '3. 现金比率=(货币资金+短期有价证券)/流动负债*100%,反映企业的短期偿债能力,属于严厉的指标 \n'+ \
4162
- '4. 利息支付倍数=利息保障倍数=税息前利润/利息费用*100%,衡量偿付借款利息的能力 \n'+ \
4163
- '5. 长期负债比率=资本化比率=长期负债/资产总额*100% \n'+ \
4164
- '6. 股东权益比率=自有资本比率=净资产比率=股东权益/资产总额*100% \n'+ \
4165
- '7. 产权比率=长期负债/所有者权益(股东权益)*100% \n'+ \
4166
- '8. 长期债务与营运资金比率=长期债务/营运资金*100%,反映偿还债务能力,通常长期债务不应超过营运资金 \n'+ \
4167
- '9. 营运资金=流动资产-流动负债 \n'+ \
4168
- '10. 股东权益与固定资产比率=股东权益总额÷固定资产总额×100%,衡量公司财务结构稳定性,越大越稳定 \n'+ \
4169
- '11. 清算价值比率=有形资产/负债总额*100%,反映公司清偿全部债务的能力 \n'+ \
4170
- '12. 经营现金净流量对负债比率=现金流量负债比=经营活动现金流量净额/负债总额*100%,比率越高,财务弹性越好。 \n',
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
- '1. 使用账龄法对应收账款/其他应收款分类 \n'+ \
4175
- '2. 一般而言,应收款项的账龄越长,成为呆坏账的可能性就越大。 \n',
4175
+ '使用账龄法对应收账款/其他应收款分类 \n'+ \
4176
+ '一般而言,应收款项的账龄越长,成为呆坏账的可能性就越大。 \n',
4176
4177
 
4177
4178
  '预付账款':
4178
4179
  '注:\n'+ \
4179
- '1. 一般而言,预付款项数额越大,企业在供应链中的地位越低 \n'+ \
4180
- '2. 一般而言,预付款项的账龄越长,企业在供应链中的地位越低。 \n',
4180
+ '一般而言,预付款项数额越大,企业在供应链中的地位越低 \n'+ \
4181
+ '一般而言,预付款项的账龄越长,企业在供应链中的地位越低。 \n',
4181
4182
 
4182
4183
  '其他指标':
4183
4184
  '注:\n'+ \
4184
- '1. 长期资产与长期资金比率=非流动资产/(长期负债+股东权益)*100%,长期资金少,流动负债较多,财务风险较大 \n'+ \
4185
- '2. 资本化比率=长期负债/(长期负债+股东权益)*100%,指标值越小,负债的资本化程度就越低,长期偿债压力就越小 \n'+ \
4186
- '3. 固定资产净值率=(固定资产原值-累计折旧)/固定资产原值*100%,反映企业全部固定资产平均新旧程度 \n'+ \
4187
- '4. 资本固定化比率=非流动资产/净资产*100%,若超过100%,说明固定资产资金投入超过自身能力,易造成财务状况恶化。 \n',
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,2)
575
- i_value_qc_yy=round(i_value_qc/yiyuan,2)
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; today=datetime.date.today()
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,2)]
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; today=datetime.date.today()
667
- footnote="*数据来源:新浪财经,"+str(today)
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,2)]
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; today=datetime.date.today()
725
- footnote="*数据来源:新浪财经,"+str(today)
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,2)]
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,2)]
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,2)]
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; today=datetime.date.today()
803
- footnote="*数据来源:新浪财经,"+str(today)
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,2)]
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; today=datetime.date.today()
860
- footnote="*数据来源:新浪财经,"+str(today)
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,2)]
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; today=datetime.date.today()
923
- footnote="*数据来源:新浪财经,"+str(today)
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,2)]
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; today=datetime.date.today()
982
+ import datetime; todaydt=datetime.date.today()
982
983
  if yiyuan_foot:
983
- footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
984
+ footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
984
985
  else:
985
- footnote="*数据来源:新浪财经,"+str(today)
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,2)]
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; today=datetime.date.today()
1053
+ import datetime; todaydt=datetime.date.today()
1053
1054
  if yiyuan_foot:
1054
- footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
1055
+ footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
1055
1056
  else:
1056
- footnote="*数据来源:新浪财经,"+str(today)
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,2)]
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; today=datetime.date.today()
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,2)]
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; today=datetime.date.today()
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(" Comparator:",ticker_name(comparator,'stock'))
1276
+ print(" Focus on:",ticker_name(comparator,'stock'))
1272
1277
  #print(" Comparee :",ticker_name(comparee))
1273
- print(" Comparee :",end='')
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(" Comparator:",ticker_name(comparator,'stock'))
1503
+ print(" Focus on:",ticker_name(comparator,'stock'))
1477
1504
  #print(" Comparee :",ticker_name(comparee))
1478
- print(" Comparee :",end='')
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(" Comparator:",ticker_name(comparator,'stock'))
1657
- print(" Comparee :",end='')
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="*** 成分股总数:"+str(cdf_total)+",数据来源:申万宏源,"+str(today)
2081
+ footnote="成分股总数:"+str(cdf_total)+",数据来源:申万宏源,"+str(today)
2082
2082
  df_directprint(cdf1,title_txt,footnote)
2083
2083
 
2084
2084
  #return clist1,cdf1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siat
3
- Version: 3.0.30
3
+ Version: 3.0.35
4
4
  Summary: Securities Investment Analysis Tools (siat)
5
5
  Home-page: https://pypi.org/project/siat/
6
6
  Author: Prof. WANG Dehong, International Business School, Beijing Foreign Studies University
@@ -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=_g7uJlrAcyui22MTZ9mcylpKbO7edQlQotR9lpWcUY8,141536
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=c5-QHu4VJn6f67mzX_t4cJc99rE3PmlChHC9VCNdYwY,42332
43
- siat/financials_china.py,sha256=ffikW5pgL0omDq0C8_7wKih-1nYfcVX1u23UAb1bp4U,188137
44
- siat/financials_china2.py,sha256=-lelBcwtpew4h1-l0-QtThaOOhjudbn089FkVbQ2Hx0,82874
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=W8HUsBacNbILRzDLn6JLdBZ4eCAGmnVZl7nO4BcxUUs,104578
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.30.dist-info/METADATA,sha256=REvoWcCLwcvUXlqUsNnBTAZmHdyO_B_bUGGdeneQTpM,1448
136
- siat-3.0.30.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
137
- siat-3.0.30.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
138
- siat-3.0.30.dist-info/RECORD,,
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