siat 3.0.30__py3-none-any.whl → 3.0.38__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 +11 -6
- siat/financials2.py +105 -66
- siat/financials_china.py +150 -124
- siat/financials_china2.py +296 -127
- siat/sector_china.py +1 -1
- siat/stock_china.py +35 -13
- {siat-3.0.30.dist-info → siat-3.0.38.dist-info}/METADATA +1 -1
- {siat-3.0.30.dist-info → siat-3.0.38.dist-info}/RECORD +10 -10
- {siat-3.0.30.dist-info → siat-3.0.38.dist-info}/WHEEL +0 -0
- {siat-3.0.30.dist-info → siat-3.0.38.dist-info}/top_level.txt +0 -0
siat/financials_china2.py
CHANGED
@@ -449,9 +449,9 @@ def df_directprint(dfp,title_txt,footnote, \
|
|
449
449
|
title_break=True,foot_break=True,foot_center=False,foot_start=1, \
|
450
450
|
decimals=2,facecolor='papayawhip'):
|
451
451
|
"""
|
452
|
-
def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
|
452
|
+
def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip',font_size='16px'):
|
453
453
|
"""
|
454
|
-
功能:对dfp直接打印,使用pandas style
|
454
|
+
功能:对dfp直接打印,使用pandas style打印,套壳函数df_display_CSS
|
455
455
|
"""
|
456
456
|
#替换nan和inf
|
457
457
|
import pandas as pd
|
@@ -459,7 +459,7 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
|
|
459
459
|
dfp.replace([np.inf, -np.inf],'-', inplace=True)
|
460
460
|
dfp.replace([np.nan],'-', inplace=True)
|
461
461
|
|
462
|
-
print('') #空一行
|
462
|
+
#print('') #空一行
|
463
463
|
|
464
464
|
"""
|
465
465
|
#解析标题各行并居中打印
|
@@ -477,6 +477,16 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
|
|
477
477
|
|
478
478
|
pos=pos_new+1
|
479
479
|
"""
|
480
|
+
|
481
|
+
#确定表格字体大小
|
482
|
+
titile_font_size=font_size
|
483
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
484
|
+
|
485
|
+
df_display_CSS(dfp,titletxt=title_txt,footnote=footnote,facecolor=facecolor, \
|
486
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
487
|
+
data_font_size=data_font_size)
|
488
|
+
|
489
|
+
"""
|
480
490
|
disph=dfp.style.hide() #不显示索引列
|
481
491
|
dispp=disph.format(precision=decimals) #设置带有小数点的列精度调整为小数点后2位
|
482
492
|
|
@@ -502,7 +512,7 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
|
|
502
512
|
#打印数据框本身
|
503
513
|
from IPython.display import display
|
504
514
|
display(dispf2)
|
505
|
-
|
515
|
+
"""
|
506
516
|
"""
|
507
517
|
#print(dfp.to_string(index=False))
|
508
518
|
colalign=['left']+['right']*(len(list(dfp)) - 1)
|
@@ -532,7 +542,7 @@ def df_directprint(dfp,title_txt,footnote,decimals=2,facecolor='papayawhip'):
|
|
532
542
|
pos=pos_new+1
|
533
543
|
"""
|
534
544
|
#print('') #空一行
|
535
|
-
print(footnote,'\n')
|
545
|
+
#print(footnote,'\n')
|
536
546
|
|
537
547
|
return
|
538
548
|
#==============================================================================
|
@@ -551,7 +561,8 @@ if __name__=='__main__':
|
|
551
561
|
items=["货币资金","应收票据","应收账款"]
|
552
562
|
dfp=fs_item_analysis_1(df,ticker,fsdate,items)
|
553
563
|
|
554
|
-
def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',
|
564
|
+
def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='', \
|
565
|
+
facecolor='papayawhip',font_size='16px'):
|
555
566
|
"""
|
556
567
|
功能:比较给定财报日期的资产项目、期初数、期末数、变动额和变动幅度%
|
557
568
|
"""
|
@@ -571,8 +582,8 @@ def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',facecolor='p
|
|
571
582
|
"""
|
572
583
|
|
573
584
|
if not math.isnan(i_value):
|
574
|
-
i_value_yy=round(i_value/yiyuan,
|
575
|
-
i_value_qc_yy=round(i_value_qc/yiyuan,
|
585
|
+
i_value_yy=round(i_value/yiyuan,4)
|
586
|
+
i_value_qc_yy=round(i_value_qc/yiyuan,4)
|
576
587
|
i_value_chg_yy=round(i_value_yy - i_value_qc_yy,2)
|
577
588
|
if not(i_value_qc_yy==0):
|
578
589
|
i_value_chg_pct=round(i_value_chg_yy/i_value_qc_yy*100,2)
|
@@ -599,19 +610,26 @@ def fs_item_analysis_1(df,ticker,fsdate,items,title_txt='',notes='',facecolor='p
|
|
599
610
|
if title_txt=='':
|
600
611
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
601
612
|
title_txt=tname+"财报分析:重要项目的变动情况\n(截至"+fsdate+")"
|
602
|
-
import datetime;
|
613
|
+
import datetime; todaydt=datetime.date.today()
|
603
614
|
#footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
|
604
|
-
footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
615
|
+
#footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
616
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
605
617
|
|
606
618
|
if notes=='':
|
607
619
|
foottext=footnote
|
608
620
|
else:
|
609
621
|
foottext=notes+'\n'+footnote
|
622
|
+
|
623
|
+
#确定表格字体大小
|
624
|
+
titile_font_size=font_size
|
625
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
610
626
|
|
611
627
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
612
628
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
613
629
|
first_col_align='left', \
|
614
|
-
facecolor=facecolor,decimals=2
|
630
|
+
facecolor=facecolor,decimals=2, \
|
631
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
632
|
+
data_font_size=data_font_size)
|
615
633
|
|
616
634
|
return dfp
|
617
635
|
|
@@ -630,7 +648,8 @@ if __name__=='__main__':
|
|
630
648
|
|
631
649
|
dfp=fs_item_analysis_2(df,ticker,fsdates,items)
|
632
650
|
|
633
|
-
def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',
|
651
|
+
def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='', \
|
652
|
+
facecolor='papayawhip',font_size='16px'):
|
634
653
|
"""
|
635
654
|
功能:比较给定财报日期的报表项目、最近几年fsdates、占比%
|
636
655
|
"""
|
@@ -647,7 +666,7 @@ def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
647
666
|
row_list=[i]
|
648
667
|
for fd in fsdates1:
|
649
668
|
i_value,_,_=select_item(df,ticker,fd,i)
|
650
|
-
row_list=row_list+[round(i_value/yiyuan,
|
669
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
651
670
|
dfp.loc[len(dfp)] = row_list
|
652
671
|
|
653
672
|
last_row=[items[0]+"占比%"]
|
@@ -663,18 +682,24 @@ def fs_item_analysis_2(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
663
682
|
if title_txt=='':
|
664
683
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
665
684
|
title_txt=tname+"财报分析:重要项目占比的变动趋势"
|
666
|
-
import datetime;
|
667
|
-
footnote="
|
685
|
+
import datetime; todaydt=datetime.date.today()
|
686
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
668
687
|
|
669
688
|
if notes=='':
|
670
689
|
foottext=footnote
|
671
690
|
else:
|
672
691
|
foottext=notes+'\n'+footnote
|
692
|
+
|
693
|
+
#确定表格字体大小
|
694
|
+
titile_font_size=font_size
|
695
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
673
696
|
|
674
697
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
675
698
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
676
699
|
first_col_align='left', \
|
677
|
-
facecolor=facecolor,decimals=2
|
700
|
+
facecolor=facecolor,decimals=2, \
|
701
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
702
|
+
data_font_size=data_font_size)
|
678
703
|
|
679
704
|
return dfp
|
680
705
|
|
@@ -689,7 +714,8 @@ if __name__=='__main__':
|
|
689
714
|
|
690
715
|
dfp=fs_item_analysis_3(df,ticker,fsdates)
|
691
716
|
|
692
|
-
def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',
|
717
|
+
def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='', \
|
718
|
+
facecolor='papayawhip',font_size='16px'):
|
693
719
|
"""
|
694
720
|
功能:比较给定财报日期的流动比率、最近几年fsdates
|
695
721
|
"""
|
@@ -705,7 +731,7 @@ def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
705
731
|
row_list=[i]
|
706
732
|
for fd in fsdates1:
|
707
733
|
i_value,_,_=select_item(df,ticker,fd,i)
|
708
|
-
row_list=row_list+[round(i_value/yiyuan,
|
734
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
709
735
|
dfp.loc[len(dfp)] = row_list
|
710
736
|
|
711
737
|
last_row=["流动比率%"]
|
@@ -721,18 +747,28 @@ def fs_item_analysis_3(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
721
747
|
if title_txt=='':
|
722
748
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
723
749
|
title_txt=tname+"财报分析:流动比率的变动趋势"
|
724
|
-
import datetime;
|
725
|
-
footnote="
|
750
|
+
import datetime; todaydt=datetime.date.today()
|
751
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
726
752
|
|
727
753
|
if notes=='':
|
728
754
|
foottext=footnote
|
729
755
|
else:
|
730
756
|
foottext=notes+'\n'+footnote
|
757
|
+
|
758
|
+
#确定表格字体大小
|
759
|
+
titile_font_size=font_size
|
760
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
761
|
+
|
762
|
+
#确定表格字体大小
|
763
|
+
titile_font_size=font_size
|
764
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
731
765
|
|
732
766
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
733
767
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
734
768
|
first_col_align='left', \
|
735
|
-
facecolor=facecolor,decimals=2
|
769
|
+
facecolor=facecolor,decimals=2, \
|
770
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
771
|
+
data_font_size=data_font_size)
|
736
772
|
|
737
773
|
return dfp
|
738
774
|
|
@@ -747,7 +783,8 @@ if __name__=='__main__':
|
|
747
783
|
|
748
784
|
dfp=fs_item_analysis_4(df,ticker,fsdates)
|
749
785
|
|
750
|
-
def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',
|
786
|
+
def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='', \
|
787
|
+
facecolor='papayawhip',font_size='16px'):
|
751
788
|
"""
|
752
789
|
功能:比较给定财报日期的流动比率、最近几年fsdates
|
753
790
|
"""
|
@@ -762,14 +799,14 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
762
799
|
row_list=[i]
|
763
800
|
for fd in fsdates1:
|
764
801
|
i_value,_,_=select_item(df,ticker,fd,i)
|
765
|
-
row_list=row_list+[round(i_value/yiyuan,
|
802
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
766
803
|
dfp.loc[len(dfp)] = row_list
|
767
804
|
|
768
805
|
i='存货'
|
769
806
|
row_list=['其中:'+i]
|
770
807
|
for fd in fsdates1:
|
771
808
|
i_value,_,_=select_item(df,ticker,fd,i)
|
772
|
-
row_list=row_list+[round(i_value/yiyuan,
|
809
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
773
810
|
dfp.loc[len(dfp)] = row_list
|
774
811
|
|
775
812
|
i='速动资产合计'
|
@@ -783,7 +820,7 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
783
820
|
row_list=[i]
|
784
821
|
for fd in fsdates1:
|
785
822
|
i_value,_,_=select_item(df,ticker,fd,i)
|
786
|
-
row_list=row_list+[round(i_value/yiyuan,
|
823
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
787
824
|
dfp.loc[len(dfp)] = row_list
|
788
825
|
|
789
826
|
last_row=["速动比率%"]
|
@@ -799,18 +836,24 @@ def fs_item_analysis_4(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
799
836
|
if title_txt=='':
|
800
837
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
801
838
|
title_txt=tname+"财报分析:速动比率的变动趋势"
|
802
|
-
import datetime;
|
803
|
-
footnote="
|
839
|
+
import datetime; todaydt=datetime.date.today()
|
840
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
804
841
|
|
805
842
|
if notes=='':
|
806
843
|
foottext=footnote
|
807
844
|
else:
|
808
845
|
foottext=notes+'\n'+footnote
|
846
|
+
|
847
|
+
#确定表格字体大小
|
848
|
+
titile_font_size=font_size
|
849
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
809
850
|
|
810
851
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
811
852
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
812
853
|
first_col_align='left', \
|
813
|
-
facecolor=facecolor,decimals=2
|
854
|
+
facecolor=facecolor,decimals=2, \
|
855
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
856
|
+
data_font_size=data_font_size)
|
814
857
|
return dfp
|
815
858
|
|
816
859
|
#==============================================================================
|
@@ -824,7 +867,8 @@ if __name__=='__main__':
|
|
824
867
|
|
825
868
|
dfp=fs_item_analysis_5(df,ticker,fsdates)
|
826
869
|
|
827
|
-
def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',
|
870
|
+
def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='', \
|
871
|
+
facecolor='papayawhip',font_size='16px'):
|
828
872
|
"""
|
829
873
|
功能:比较给定财报日期的流动比率、最近几年fsdates
|
830
874
|
"""
|
@@ -840,7 +884,7 @@ def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
840
884
|
row_list=[i]
|
841
885
|
for fd in fsdates1:
|
842
886
|
i_value,_,_=select_item(df,ticker,fd,i)
|
843
|
-
row_list=row_list+[round(i_value/yiyuan,
|
887
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
844
888
|
dfp.loc[len(dfp)] = row_list
|
845
889
|
|
846
890
|
last_row=["资产负债率%"]
|
@@ -856,18 +900,24 @@ def fs_item_analysis_5(df,ticker,fsdates,title_txt='',notes='',facecolor='papaya
|
|
856
900
|
if title_txt=='':
|
857
901
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
858
902
|
title_txt=tname+"财报分析:资产负债率的变动趋势"
|
859
|
-
import datetime;
|
860
|
-
footnote="
|
903
|
+
import datetime; todaydt=datetime.date.today()
|
904
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
861
905
|
|
862
906
|
if notes=='':
|
863
907
|
foottext=footnote
|
864
908
|
else:
|
865
909
|
foottext=notes+'\n'+footnote
|
910
|
+
|
911
|
+
#确定表格字体大小
|
912
|
+
titile_font_size=font_size
|
913
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
866
914
|
|
867
915
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
868
916
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
869
917
|
first_col_align='left', \
|
870
|
-
facecolor=facecolor,decimals=2
|
918
|
+
facecolor=facecolor,decimals=2, \
|
919
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
920
|
+
data_font_size=data_font_size)
|
871
921
|
return dfp
|
872
922
|
|
873
923
|
#==============================================================================
|
@@ -902,7 +952,7 @@ def fs_item_analysis_6_original(df,ticker,fsdates,items,title_txt='',notes=''):
|
|
902
952
|
row_list=[fd]
|
903
953
|
for i in items:
|
904
954
|
i_value,_,_=select_item(df,ticker,fd,i)
|
905
|
-
row_list=row_list+[round(i_value/yiyuan,
|
955
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
906
956
|
dfp.loc[len(dfp)] = row_list
|
907
957
|
|
908
958
|
last_row=["增幅%"]
|
@@ -919,8 +969,8 @@ def fs_item_analysis_6_original(df,ticker,fsdates,items,title_txt='',notes=''):
|
|
919
969
|
if title_txt=='':
|
920
970
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
921
971
|
title_txt=tname+"财报分析:重要关联项目的增幅对比"
|
922
|
-
import datetime;
|
923
|
-
footnote="
|
972
|
+
import datetime; todaydt=datetime.date.today()
|
973
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
924
974
|
|
925
975
|
if notes=='':
|
926
976
|
foottext=footnote
|
@@ -942,7 +992,8 @@ if __name__=='__main__':
|
|
942
992
|
|
943
993
|
dfp=fs_item_analysis_6(df,ticker,fsdates,items)
|
944
994
|
|
945
|
-
def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',
|
995
|
+
def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='', \
|
996
|
+
facecolor='papayawhip',font_size='16px'):
|
946
997
|
"""
|
947
998
|
功能:比较给定财报日期的应收账款与营业收入增幅、最近几年fsdates
|
948
999
|
"""
|
@@ -958,7 +1009,7 @@ def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
958
1009
|
for i in items:
|
959
1010
|
i_value,_,_=select_item(df,ticker,fd,i)
|
960
1011
|
if not('%' in i) and not('(元)' in i):
|
961
|
-
row_list=row_list+[round(i_value/yiyuan,
|
1012
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
962
1013
|
yiyuan_foot=True
|
963
1014
|
else:
|
964
1015
|
row_list=row_list+[i_value]
|
@@ -978,21 +1029,27 @@ def fs_item_analysis_6(df,ticker,fsdates,items,title_txt='',notes='',facecolor='
|
|
978
1029
|
if title_txt=='':
|
979
1030
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
980
1031
|
title_txt=tname+"财报分析:重要关联项目的增幅对比"
|
981
|
-
import datetime;
|
1032
|
+
import datetime; todaydt=datetime.date.today()
|
982
1033
|
if yiyuan_foot:
|
983
|
-
footnote="
|
1034
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
984
1035
|
else:
|
985
|
-
footnote="
|
1036
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
986
1037
|
|
987
1038
|
if notes=='':
|
988
1039
|
foottext=footnote
|
989
1040
|
else:
|
990
1041
|
foottext=notes+'\n'+footnote
|
1042
|
+
|
1043
|
+
#确定表格字体大小
|
1044
|
+
titile_font_size=font_size
|
1045
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
991
1046
|
|
992
1047
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
993
1048
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
994
1049
|
first_col_align='left', \
|
995
|
-
facecolor=facecolor,decimals=2
|
1050
|
+
facecolor=facecolor,decimals=2, \
|
1051
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
1052
|
+
data_font_size=data_font_size)
|
996
1053
|
return dfp
|
997
1054
|
|
998
1055
|
#==============================================================================
|
@@ -1032,7 +1089,7 @@ def fs_item_analysis_7_original(df,tickers,fsdate,items,title_txt=''):
|
|
1032
1089
|
for i in items:
|
1033
1090
|
i_value,_,_=select_item(df,t,fsdate,i)
|
1034
1091
|
if not('%' in i) and not('(元)' in i):
|
1035
|
-
row_list=row_list+[round(i_value/yiyuan,
|
1092
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
1036
1093
|
yiyuan_foot=True
|
1037
1094
|
else:
|
1038
1095
|
row_list=row_list+[i_value]
|
@@ -1049,11 +1106,11 @@ def fs_item_analysis_7_original(df,tickers,fsdate,items,title_txt=''):
|
|
1049
1106
|
ticker=tickers[0]
|
1050
1107
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
1051
1108
|
title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
|
1052
|
-
import datetime;
|
1109
|
+
import datetime; todaydt=datetime.date.today()
|
1053
1110
|
if yiyuan_foot:
|
1054
|
-
footnote="
|
1111
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
1055
1112
|
else:
|
1056
|
-
footnote="
|
1113
|
+
footnote="数据来源:新浪财经,"+str(todaydt)
|
1057
1114
|
df_directprint(dfp,title_txt,footnote)
|
1058
1115
|
|
1059
1116
|
return dfp
|
@@ -1069,7 +1126,8 @@ if __name__=='__main__':
|
|
1069
1126
|
|
1070
1127
|
dfp=fs_item_analysis_7(df,tickers,fsdate,items)
|
1071
1128
|
|
1072
|
-
def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',
|
1129
|
+
def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='', \
|
1130
|
+
facecolor='papayawhip',font_size='16px'):
|
1073
1131
|
"""
|
1074
1132
|
功能:比较给定财报日期fsdate的项目和指标,与同业相比
|
1075
1133
|
"""
|
@@ -1085,7 +1143,7 @@ def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1085
1143
|
for i in items:
|
1086
1144
|
i_value,_,_=select_item(df,t,fsdate,i)
|
1087
1145
|
if not('%' in i) and not('(元)' in i):
|
1088
|
-
row_list=row_list+[round(i_value/yiyuan,
|
1146
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
1089
1147
|
yiyuan_foot=True
|
1090
1148
|
else:
|
1091
1149
|
row_list=row_list+[i_value]
|
@@ -1119,23 +1177,31 @@ def fs_item_analysis_7(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1119
1177
|
ticker=tickers[0]
|
1120
1178
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
1121
1179
|
title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
|
1122
|
-
import datetime;
|
1180
|
+
import datetime; todaydt=datetime.date.today()
|
1123
1181
|
if yiyuan_foot:
|
1124
1182
|
#footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
|
1125
|
-
footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1183
|
+
#footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1184
|
+
footnote="单位:亿元,数据来源:新浪财经,"+str(todaydt)
|
1126
1185
|
else:
|
1127
1186
|
#footnote="*数据来源:新浪财经,"+str(today)
|
1128
|
-
footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1187
|
+
#footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1188
|
+
footnote='数据来源:新浪财经,'+str(todaydt)
|
1129
1189
|
|
1130
1190
|
if notes=='':
|
1131
1191
|
foottext=footnote
|
1132
1192
|
else:
|
1133
1193
|
foottext=notes+'\n'+footnote
|
1194
|
+
|
1195
|
+
#确定表格字体大小
|
1196
|
+
titile_font_size=font_size
|
1197
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
1134
1198
|
|
1135
1199
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
1136
1200
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
1137
1201
|
first_col_align='left', \
|
1138
|
-
facecolor=facecolor,decimals=2
|
1202
|
+
facecolor=facecolor,decimals=2, \
|
1203
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
1204
|
+
data_font_size=data_font_size)
|
1139
1205
|
return dfp
|
1140
1206
|
|
1141
1207
|
#==============================================================================
|
@@ -1149,7 +1215,8 @@ if __name__=='__main__':
|
|
1149
1215
|
items=['资产总计','资产负债率%','流动比率%','速动比率%']
|
1150
1216
|
dfp=fs_item_analysis_8(df,tickers,fsdate,items)
|
1151
1217
|
|
1152
|
-
def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',
|
1218
|
+
def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='', \
|
1219
|
+
facecolor='papayawhip',font_size='16px'):
|
1153
1220
|
"""
|
1154
1221
|
功能:比较给定财报日期fsdate的项目和指标,与同业相比
|
1155
1222
|
区别:项目不带‘(亿元)’字样,避免行过长
|
@@ -1167,7 +1234,7 @@ def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1167
1234
|
for i in items:
|
1168
1235
|
i_value,_,_=select_item(df,t,fsdate,i)
|
1169
1236
|
if not('%' in i) and not('(元)' in i):
|
1170
|
-
row_list=row_list+[round(i_value/yiyuan,
|
1237
|
+
row_list=row_list+[round(i_value/yiyuan,4)]
|
1171
1238
|
yiyuan_foot=True
|
1172
1239
|
else:
|
1173
1240
|
row_list=row_list+[i_value]
|
@@ -1201,23 +1268,31 @@ def fs_item_analysis_8(df,tickers,fsdate,items,title_txt='',notes='',facecolor='
|
|
1201
1268
|
tname=ticker_name(ticker,'stock').replace("(A股)",'')
|
1202
1269
|
title_txt=tname+"财报分析:重要指标的同行业对比\n(截至"+fsdate+")"
|
1203
1270
|
|
1204
|
-
import datetime;
|
1271
|
+
import datetime; todaydt=datetime.date.today()
|
1205
1272
|
if yiyuan_foot:
|
1206
1273
|
#footnote="*单位:亿元,数据来源:新浪财经,"+str(today)
|
1207
|
-
footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1274
|
+
#footnote="*单位:亿元,本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1275
|
+
footnote="单位:亿元,"+'数据来源:新浪财经,'+str(todaydt)
|
1208
1276
|
else:
|
1209
1277
|
#footnote="*数据来源:新浪财经,"+str(today)
|
1210
|
-
footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1278
|
+
#footnote="*本期报表日期:"+fsdate+',数据来源:新浪财经'
|
1279
|
+
footnote='数据来源:新浪财经,'+str(todaydt)
|
1211
1280
|
|
1212
1281
|
if notes=='':
|
1213
1282
|
foottext=footnote
|
1214
1283
|
else:
|
1215
1284
|
foottext=notes+'\n'+footnote
|
1285
|
+
|
1286
|
+
#确定表格字体大小
|
1287
|
+
titile_font_size=font_size
|
1288
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
1216
1289
|
|
1217
1290
|
#df_directprint(dfp,title_txt,foottext,facecolor=facecolor)
|
1218
1291
|
df_display_CSS(df=dfp,titletxt=title_txt,footnote=foottext, \
|
1219
1292
|
first_col_align='left', \
|
1220
|
-
facecolor=facecolor,decimals=2
|
1293
|
+
facecolor=facecolor,decimals=2, \
|
1294
|
+
titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
|
1295
|
+
data_font_size=data_font_size)
|
1221
1296
|
return dfp
|
1222
1297
|
|
1223
1298
|
#==============================================================================
|
@@ -1226,16 +1301,16 @@ if __name__=='__main__':
|
|
1226
1301
|
fsdates=['2022-12-31','2021-12-31','2020-12-31','2019-12-31']
|
1227
1302
|
asset_liab_structure_china(tickers,fsdates)
|
1228
1303
|
|
1229
|
-
def asset_liab_china(tickers,fsdates,facecolor='papayawhip'):
|
1304
|
+
def asset_liab_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
|
1230
1305
|
"""
|
1231
1306
|
套壳函数asset_liab_structure_china
|
1232
1307
|
"""
|
1233
|
-
asset_liab_structure_china(tickers,fsdates,facecolor=facecolor)
|
1308
|
+
asset_liab_structure_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1234
1309
|
|
1235
1310
|
return
|
1236
1311
|
|
1237
1312
|
|
1238
|
-
def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
1313
|
+
def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
|
1239
1314
|
"""
|
1240
1315
|
功能:分析上市公司的资产负债基本结构,并与同业公司对比。
|
1241
1316
|
注意1:分析近三期情况,fsdates要给出四个报表日期,以便获得期初数。
|
@@ -1268,9 +1343,9 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1268
1343
|
comparator=tickers[0]
|
1269
1344
|
comparee=tickers[1:]
|
1270
1345
|
print(" Conducting asset-liability analysis ...")
|
1271
|
-
print("
|
1346
|
+
print(" Focus on:",ticker_name(comparator,'stock'))
|
1272
1347
|
#print(" Comparee :",ticker_name(comparee))
|
1273
|
-
print("
|
1348
|
+
print(" Peers :",end='')
|
1274
1349
|
if comparee != []:
|
1275
1350
|
print_list(ticker_name(comparee,'stock'))
|
1276
1351
|
else:
|
@@ -1315,23 +1390,31 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1315
1390
|
#资产变动趋势2
|
1316
1391
|
title_txt=title_head+"主要资产项目,"+fsdate
|
1317
1392
|
items2=["货币资金","应收账款","存货","长期股权投资","固定资产净额","资产总计"]
|
1318
|
-
|
1393
|
+
"""
|
1319
1394
|
notes1="注1:货币资金包括库存现金、银行存款和其他货币资金三个部分"
|
1320
1395
|
notes2="注2:其他货币资金包括银行汇(本)票存款、信用证保证金存款和信用卡存款等"
|
1321
1396
|
notes3="注3:长期股权投资是指企业对其子公司、合营企业及联营企业的权益性投资"
|
1322
1397
|
notes4="注4:固定资产净额 = 固定资产原值 - 累计折旧 - 资产减值准备"
|
1398
|
+
"""
|
1399
|
+
notes1="注:\n货币资金包括库存现金、银行存款和其他货币资金三个部分"
|
1400
|
+
notes2="其他货币资金包括银行汇(本)票存款、信用证保证金存款和信用卡存款等"
|
1401
|
+
notes3="长期股权投资是指企业对其子公司、合营企业及联营企业的权益性投资"
|
1402
|
+
notes4="固定资产净额 = 固定资产原值 - 累计折旧 - 资产减值准备"
|
1403
|
+
|
1323
1404
|
notes=notes1+'\n'+notes2+'\n'+notes3+'\n'+notes4
|
1324
|
-
dfp2=fs_item_analysis_1(df,ticker,fsdate,items2,title_txt,notes,
|
1405
|
+
dfp2=fs_item_analysis_1(df,ticker,fsdate,items2,title_txt,notes, \
|
1406
|
+
facecolor=facecolor,font_size=font_size)
|
1325
1407
|
|
1326
1408
|
#负债变动趋势
|
1327
1409
|
title_txt=title_head+"主要负债项目,"+fsdate
|
1328
1410
|
items3=["短期借款","长期借款","应付账款","预收款项","应交税费","应付职工薪酬","负债合计"]
|
1329
|
-
dfp3=fs_item_analysis_1(df,ticker,fsdate,items3,title_txt,
|
1411
|
+
dfp3=fs_item_analysis_1(df,ticker,fsdate,items3,title_txt, \
|
1412
|
+
facecolor=facecolor,font_size=font_size)
|
1330
1413
|
|
1331
1414
|
#所有者权益变动趋势
|
1332
1415
|
title_txt=title_head+"主要权益项目,"+fsdate
|
1333
1416
|
items4=["实收资本(或股本)","资本公积","盈余公积","未分配利润","所有者权益合计"]
|
1334
|
-
|
1417
|
+
"""
|
1335
1418
|
notes1="注1:实收资本(或股本,Paid-in Capital)指企业实际收到的投资人投入的资本"
|
1336
1419
|
notes2="注2:资本公积是由股东投入的因故不能计入实收资本(或股本)中的那部分投入资金"
|
1337
1420
|
notes3=" 资本公积包括资本(股本)溢价、其他资本公积、资产评估增值、资本折算差额"
|
@@ -1346,41 +1429,63 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1346
1429
|
notes12=" 任意盈余公积是指企业内部可自主决定比例提取的盈余公积"
|
1347
1430
|
notes13=" 企业提取的盈余公积可用于弥补亏损、转增资本、发放现金股利或利润等"
|
1348
1431
|
notes14="注4:未分配利润是净利润经弥补亏损、提取盈余公积和向投资者分配利润后的资金"
|
1432
|
+
"""
|
1433
|
+
notes1="注:\n实收资本(或股本,Paid-in Capital)指企业实际收到的投资人投入的资本"
|
1434
|
+
notes2="资本公积是由股东投入的因故不能计入实收资本(或股本)中的那部分投入资金"
|
1435
|
+
notes3="资本公积包括资本(股本)溢价、其他资本公积、资产评估增值、资本折算差额"
|
1436
|
+
notes4="资本(股本)溢价是公司发行权益证券时价格超出票面价值的部分"
|
1437
|
+
notes5="其他资本公积包括金融资产公允价值变动、被投资单位净利润以外的变动等"
|
1438
|
+
notes6="资产评估增值是重估企业资产时,重估价高于资产的账面净值的部分"
|
1439
|
+
notes7="资本折算差额是外币资本因汇率变动产生的差额"
|
1440
|
+
notes8="盈余公积是企业按照要求从税后利润中提取的、属于留存收益范畴的资金"
|
1441
|
+
notes9="企业从历年利润中提取的留存于企业的内部积累,包括盈余公积和未分配利润"
|
1442
|
+
notes10="公司制企业的盈余公积包括法定盈余公积和任意盈余公积"
|
1443
|
+
notes11="法定盈余公积是指企业按照规定比例从净利润中必须提取的盈余公积"
|
1444
|
+
notes12="任意盈余公积是指企业内部可自主决定比例提取的盈余公积"
|
1445
|
+
notes13="企业提取的盈余公积可用于弥补亏损、转增资本、发放现金股利或利润等"
|
1446
|
+
notes14="未分配利润是净利润经弥补亏损、提取盈余公积和向投资者分配利润后的资金"
|
1447
|
+
|
1349
1448
|
notesA=notes1+'\n'+notes2+'\n'+notes3+'\n'+notes4+'\n'+notes5+'\n'+notes6+'\n'+notes7
|
1350
1449
|
notesB=notes8+'\n'+notes9+'\n'+notes10+'\n'+notes11+'\n'+notes12+'\n'+notes13+'\n'+notes14
|
1351
1450
|
|
1352
1451
|
notes=notesA+'\n'+notesB
|
1353
|
-
dfp4=fs_item_analysis_1(df,ticker,fsdate,items4,title_txt,notes,
|
1452
|
+
dfp4=fs_item_analysis_1(df,ticker,fsdate,items4,title_txt,notes, \
|
1453
|
+
facecolor=facecolor,font_size=font_size)
|
1354
1454
|
|
1355
1455
|
### 货币资金与应收项目
|
1356
1456
|
#资产变动趋势1:"货币资金","应收票据","应收账款"
|
1357
1457
|
title_txt=title_head+"货币资金与应收项目,"+fsdate
|
1358
1458
|
items1=["货币资金","应收票据","应收账款"]
|
1359
|
-
dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt,
|
1459
|
+
dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt, \
|
1460
|
+
facecolor=facecolor,font_size=font_size)
|
1360
1461
|
|
1361
1462
|
#应收账款占比变动分析
|
1362
1463
|
fsdates1=fsdates[:3]
|
1363
1464
|
items5=["应收账款","资产总计"]
|
1364
1465
|
title_txt=title_head+"应收账款占比变动情况"
|
1365
|
-
dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt,
|
1466
|
+
dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt, \
|
1467
|
+
facecolor=facecolor,font_size=font_size)
|
1366
1468
|
|
1367
1469
|
#应收与营业收入增幅对比
|
1368
1470
|
fsdates2=fsdates[:2]
|
1369
1471
|
items6=['应收账款',"应收票据",'营业总收入']
|
1370
1472
|
title_txt=title_head+"应收项目与营业收入增幅对比"
|
1371
|
-
dfp6=fs_item_analysis_6(df,ticker,fsdates2,items6,title_txt,
|
1473
|
+
dfp6=fs_item_analysis_6(df,ticker,fsdates2,items6,title_txt, \
|
1474
|
+
facecolor=facecolor,font_size=font_size)
|
1372
1475
|
|
1373
1476
|
#应收账款占比同行对比
|
1374
1477
|
items7=['应收账款','资产总计','应收账款占比%']
|
1375
1478
|
#title_txt=title_head+"应收账款占比同行对比"
|
1376
1479
|
title_txt="应收账款占比同行对比:"+fsdate
|
1377
|
-
dfp7=fs_item_analysis_7(df,tickers,fsdate,items7,title_txt,
|
1480
|
+
dfp7=fs_item_analysis_7(df,tickers,fsdate,items7,title_txt, \
|
1481
|
+
facecolor=facecolor,font_size=font_size)
|
1378
1482
|
|
1379
1483
|
### 存货
|
1380
1484
|
#存货占比变动分析
|
1381
1485
|
items8=["存货","资产总计"]
|
1382
1486
|
title_txt=title_head+"存货占比变动情况"
|
1383
|
-
dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt,
|
1487
|
+
dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt, \
|
1488
|
+
facecolor=facecolor,font_size=font_size)
|
1384
1489
|
"""
|
1385
1490
|
items9=["存货","营业总收入"]
|
1386
1491
|
dfp9=fs_item_analysis_6(df,ticker,fsdates2,items9)
|
@@ -1388,32 +1493,38 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1388
1493
|
#存货与营业收入增幅对比分析
|
1389
1494
|
items10=['存货','流动资产合计',"速动资产合计","资产总计"]
|
1390
1495
|
title_txt=title_head+"存货与资产项目增幅对比"
|
1391
|
-
dfp10=fs_item_analysis_6(df,ticker,fsdates2,items10,title_txt,
|
1496
|
+
dfp10=fs_item_analysis_6(df,ticker,fsdates2,items10,title_txt, \
|
1497
|
+
facecolor=facecolor,font_size=font_size)
|
1392
1498
|
|
1393
1499
|
#存货占比与行业对比
|
1394
1500
|
items11=['存货','资产总计','存货占比%']
|
1395
1501
|
#title_txt=title_head+"存货占比情况同行对比"
|
1396
1502
|
title_txt="存货占比情况同行对比:"+fsdate
|
1397
|
-
dfp11=fs_item_analysis_7(df,tickers,fsdate,items11,title_txt,
|
1503
|
+
dfp11=fs_item_analysis_7(df,tickers,fsdate,items11,title_txt, \
|
1504
|
+
facecolor=facecolor,font_size=font_size)
|
1398
1505
|
|
1399
1506
|
### 偿债能力
|
1400
1507
|
#流动比率变动分析
|
1401
1508
|
title_txt=title_head+"流动比率变动情况"
|
1402
|
-
dfp12=fs_item_analysis_3(df,ticker,fsdates1,title_txt,
|
1509
|
+
dfp12=fs_item_analysis_3(df,ticker,fsdates1,title_txt, \
|
1510
|
+
facecolor=facecolor,font_size=font_size)
|
1403
1511
|
|
1404
1512
|
#速动比率变动分析
|
1405
1513
|
title_txt=title_head+"速动比率变动情况"
|
1406
|
-
dfp13=fs_item_analysis_4(df,ticker,fsdates1,title_txt,
|
1514
|
+
dfp13=fs_item_analysis_4(df,ticker,fsdates1,title_txt, \
|
1515
|
+
facecolor=facecolor,font_size=font_size)
|
1407
1516
|
|
1408
1517
|
#资产负债率变动分析
|
1409
1518
|
title_txt=title_head+"资产负债率变动情况"
|
1410
|
-
dfp14=fs_item_analysis_5(df,ticker,fsdates1,title_txt,
|
1519
|
+
dfp14=fs_item_analysis_5(df,ticker,fsdates1,title_txt, \
|
1520
|
+
facecolor=facecolor,font_size=font_size)
|
1411
1521
|
|
1412
1522
|
#资产负债率同行比较
|
1413
1523
|
#title_txt=title_head+"资产负债率同行比较"
|
1414
1524
|
title_txt="资产负债率同行比较:"+fsdate
|
1415
1525
|
items15=['资产总计','资产负债率%','流动比率%','速动比率%']
|
1416
|
-
dfp15=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,
|
1526
|
+
dfp15=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt, \
|
1527
|
+
facecolor=facecolor,font_size=font_size)
|
1417
1528
|
|
1418
1529
|
return
|
1419
1530
|
|
@@ -1423,15 +1534,15 @@ if __name__=='__main__':
|
|
1423
1534
|
fsdates=['2021-12-31','2020-12-31','2019-12-31','2018-12-31']
|
1424
1535
|
income_cost_structure_china(tickers,fsdates)
|
1425
1536
|
|
1426
|
-
def income_cost_china(tickers,fsdates,facecolor='papayawhip'):
|
1537
|
+
def income_cost_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
|
1427
1538
|
"""
|
1428
1539
|
套壳函数income_cost_structure_china
|
1429
1540
|
"""
|
1430
|
-
income_cost_structure_china(tickers,fsdates,facecolor=facecolor)
|
1541
|
+
income_cost_structure_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1431
1542
|
|
1432
1543
|
return
|
1433
1544
|
|
1434
|
-
def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
1545
|
+
def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
|
1435
1546
|
"""
|
1436
1547
|
功能:分析上市公司的收入成本基本结构,并与同业公司对比。
|
1437
1548
|
注意1:分析近三期情况,fsdates要给出四个报表日期,以便获得期初数。
|
@@ -1473,9 +1584,9 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1473
1584
|
comparator=tickers[0]
|
1474
1585
|
comparee=tickers[1:]
|
1475
1586
|
print(" Conducting income-cost analysis ...")
|
1476
|
-
print("
|
1587
|
+
print(" Focus on:",ticker_name(comparator,'stock'))
|
1477
1588
|
#print(" Comparee :",ticker_name(comparee))
|
1478
|
-
print("
|
1589
|
+
print(" Peers :",end='')
|
1479
1590
|
if comparee != []:
|
1480
1591
|
print_list(ticker_name(comparee,'stock'))
|
1481
1592
|
else:
|
@@ -1499,7 +1610,8 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1499
1610
|
#收入成本总体变动趋势
|
1500
1611
|
title_txt=title_head+"主要利润表项目,"+fsdate
|
1501
1612
|
items1=["营业总收入","营业总成本","营业成本","毛利润","营业利润","营业外收支","税前利润","所得税费用","净利润","归母净利润"]
|
1502
|
-
dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt,
|
1613
|
+
dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt, \
|
1614
|
+
facecolor=facecolor,font_size=font_size)
|
1503
1615
|
|
1504
1616
|
#成本变动趋势
|
1505
1617
|
title_txt=title_head+"主要成本费用项目,"+fsdate
|
@@ -1512,80 +1624,107 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1512
1624
|
items2=["营业总成本","营业成本","营业税金及附加","销售费用","管理费用","研发费用",
|
1513
1625
|
"应付利息","非流动资产处置损失",
|
1514
1626
|
"资产减值损失","营业外支出"]
|
1515
|
-
dfp2=fs_item_analysis_1(df,ticker,'2021-12-31',items2,title_txt,
|
1627
|
+
dfp2=fs_item_analysis_1(df,ticker,'2021-12-31',items2,title_txt, \
|
1628
|
+
facecolor=facecolor,font_size=font_size)
|
1516
1629
|
|
1517
1630
|
#占比变动分析:近三年
|
1518
1631
|
title_txt=title_head+"营业总成本占营业总收入比例情况"
|
1519
1632
|
fsdates1=fsdates[:3]
|
1520
1633
|
items3=["营业总成本","营业总收入"]
|
1521
|
-
|
1634
|
+
"""
|
1522
1635
|
notes1="注1:营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1523
1636
|
notes2="注2:营业收入=主营业务收入和其他非主营业务收入"
|
1524
1637
|
notes3="注3:营业总收入=营业收入+非营业收入(投资收益、营业外收入等)"
|
1638
|
+
"""
|
1639
|
+
notes1="注:\n营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1640
|
+
notes2="营业收入=主营业务收入和其他非主营业务收入"
|
1641
|
+
notes3="营业总收入=营业收入+非营业收入(投资收益、营业外收入等)"
|
1642
|
+
|
1525
1643
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1526
|
-
dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt,notes,
|
1644
|
+
dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt,notes, \
|
1645
|
+
facecolor=facecolor,font_size=font_size)
|
1527
1646
|
#====================================================================
|
1528
1647
|
title_txt=title_head+"营业成本占营业总成本比例情况"
|
1529
1648
|
items4=["营业成本","营业总成本"]
|
1530
|
-
|
1649
|
+
"""
|
1531
1650
|
notes1="注1:营业成本是经营活动中发生的可归属于产品/劳务成本等的费用"
|
1532
1651
|
notes2="注2:营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1652
|
+
"""
|
1653
|
+
notes1="注:\n营业成本是经营活动中发生的可归属于产品/劳务成本等的费用"
|
1654
|
+
notes2="营业总成本包括营业成本、营业税金及附加、三大费用和资产减值损失"
|
1655
|
+
|
1533
1656
|
notes=notes1+'\n'+notes2
|
1534
|
-
dfp4=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt,notes,
|
1657
|
+
dfp4=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt,notes, \
|
1658
|
+
facecolor=facecolor,font_size=font_size)
|
1535
1659
|
|
1536
1660
|
title_txt=title_head+"营业成本占营业总收入比例情况"
|
1537
1661
|
items5=["营业成本","营业总收入"]
|
1538
|
-
dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt,
|
1662
|
+
dfp5=fs_item_analysis_2(df,ticker,fsdates1,items5,title_txt, \
|
1663
|
+
facecolor=facecolor,font_size=font_size)
|
1539
1664
|
|
1540
1665
|
title_txt=title_head+"营业成本增幅分析"
|
1541
1666
|
fsdates2=fsdates[:2]
|
1542
1667
|
items12=['营业成本','营业总成本','营业总收入']
|
1543
|
-
dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt,
|
1668
|
+
dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt, \
|
1669
|
+
facecolor=facecolor,font_size=font_size)
|
1544
1670
|
|
1545
1671
|
#====================================================================
|
1546
1672
|
title_txt=title_head+"销售费用占营业总收入比例情况"
|
1547
1673
|
items6=["销售费用","营业总收入"]
|
1548
1674
|
|
1549
1675
|
notes="注:销售费用是企业销售过程中发生的各种费用"
|
1550
|
-
dfp6=fs_item_analysis_2(df,ticker,fsdates1,items6,title_txt,notes,
|
1676
|
+
dfp6=fs_item_analysis_2(df,ticker,fsdates1,items6,title_txt,notes, \
|
1677
|
+
facecolor=facecolor,font_size=font_size)
|
1551
1678
|
#====================================================================
|
1552
1679
|
title_txt=title_head+"管理费用占营业总收入比例情况"
|
1553
1680
|
items7=["管理费用","营业总收入"]
|
1554
1681
|
|
1555
1682
|
notes="注:管理费用是行政管理部门为组织生产/经营活动发生的各种费用"
|
1556
|
-
dfp7=fs_item_analysis_2(df,ticker,fsdates1,items7,title_txt,notes,
|
1683
|
+
dfp7=fs_item_analysis_2(df,ticker,fsdates1,items7,title_txt,notes, \
|
1684
|
+
facecolor=facecolor,font_size=font_size)
|
1557
1685
|
|
1558
1686
|
#title_txt=title_head+"三项费用率同行对比"
|
1559
1687
|
title_txt="三项费用率同行对比:"+fsdate
|
1560
1688
|
items14=['营业总收入','销售费用率%','管理费用率%','研发费用率%']
|
1561
|
-
|
1689
|
+
"""
|
1562
1690
|
notes1="注1:销售费用率 = 销售费用 / 营业总收入"
|
1563
1691
|
notes2="注2:管理费用率 = 管理费用 / 营业总收入"
|
1564
1692
|
notes3="注3:研发费用率 = 研发费用 / 营业总收入"
|
1693
|
+
"""
|
1694
|
+
notes1="注:\n销售费用率 = 销售费用 / 营业总收入"
|
1695
|
+
notes2="管理费用率 = 管理费用 / 营业总收入"
|
1696
|
+
notes3="研发费用率 = 研发费用 / 营业总收入"
|
1697
|
+
|
1565
1698
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1566
1699
|
|
1567
|
-
dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes,
|
1700
|
+
dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes, \
|
1701
|
+
facecolor=facecolor,font_size=font_size)
|
1568
1702
|
#====================================================================
|
1569
1703
|
title_txt=title_head+"毛利润占营业总收入比例情况"
|
1570
1704
|
items8=["毛利润","营业总收入"]
|
1571
|
-
dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt,
|
1705
|
+
dfp8=fs_item_analysis_2(df,ticker,fsdates1,items8,title_txt, \
|
1706
|
+
facecolor=facecolor,font_size=font_size)
|
1572
1707
|
#====================================================================
|
1573
1708
|
title_txt=title_head+"营业利润占营业总收入比例情况"
|
1574
1709
|
items9=["营业利润","营业总收入"]
|
1575
|
-
dfp8=fs_item_analysis_2(df,ticker,fsdates1,items9,title_txt,
|
1710
|
+
dfp8=fs_item_analysis_2(df,ticker,fsdates1,items9,title_txt, \
|
1711
|
+
facecolor=facecolor,font_size=font_size)
|
1576
1712
|
#====================================================================
|
1577
1713
|
title_txt=title_head+"税前利润占营业总收入比例情况"
|
1578
1714
|
items10=["税前利润","营业总收入"]
|
1579
|
-
dfp9=fs_item_analysis_2(df,ticker,fsdates1,items10,title_txt,
|
1715
|
+
dfp9=fs_item_analysis_2(df,ticker,fsdates1,items10,title_txt, \
|
1716
|
+
facecolor=facecolor,font_size=font_size)
|
1580
1717
|
#====================================================================
|
1581
1718
|
title_txt=title_head+"净利润占营业总收入比例情况"
|
1582
1719
|
items11=["净利润","营业总收入"]
|
1583
|
-
dfp9=fs_item_analysis_2(df,ticker,fsdates1,items11,title_txt,
|
1720
|
+
dfp9=fs_item_analysis_2(df,ticker,fsdates1,items11,title_txt, \
|
1721
|
+
facecolor=facecolor,font_size=font_size)
|
1584
1722
|
|
1585
1723
|
#增幅分析:近两年
|
1586
1724
|
title_txt=title_head+"四种利润对比"
|
1587
1725
|
items13=['毛利润','营业利润','税前利润','净利润']
|
1588
|
-
dfp11=fs_item_analysis_6(df,ticker,fsdates2,items13,title_txt,
|
1726
|
+
dfp11=fs_item_analysis_6(df,ticker,fsdates2,items13,title_txt, \
|
1727
|
+
facecolor=facecolor,font_size=font_size)
|
1589
1728
|
|
1590
1729
|
#同行比较
|
1591
1730
|
#title_txt=title_head+"利润率同行对比"
|
@@ -1593,7 +1732,8 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1593
1732
|
#items15=['营业利润','营业利润率%','税前利润率%','实际所得税率%','净利润','净利润率%']
|
1594
1733
|
#items15=['毛利润率%','营业利润率%','税前利润率%','净利润率%']
|
1595
1734
|
items15=['净利润率%','税前利润率%','营业利润率%','毛利润率%']
|
1596
|
-
dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,
|
1735
|
+
dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt, \
|
1736
|
+
facecolor=facecolor,font_size=font_size)
|
1597
1737
|
|
1598
1738
|
return
|
1599
1739
|
|
@@ -1603,16 +1743,16 @@ if __name__=='__main__':
|
|
1603
1743
|
fsdates=['2021-12-31','2020-12-31','2019-12-31','2018-12-31']
|
1604
1744
|
cash_flow_structure_china(tickers,fsdates)
|
1605
1745
|
|
1606
|
-
def cash_flow_china(tickers,fsdates,facecolor='papayawhip'):
|
1746
|
+
def cash_flow_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
|
1607
1747
|
"""
|
1608
1748
|
套壳函数cash_flow_structure_china
|
1609
1749
|
"""
|
1610
|
-
cash_flow_structure_china(tickers,fsdates,facecolor=facecolor)
|
1750
|
+
cash_flow_structure_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1611
1751
|
|
1612
1752
|
return
|
1613
1753
|
|
1614
1754
|
|
1615
|
-
def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
1755
|
+
def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip',font_size='16px'):
|
1616
1756
|
"""
|
1617
1757
|
功能:分析上市公司的现金流量基本结构,并与同业公司对比。
|
1618
1758
|
注意1:分析近三期情况,fsdates要给出四个报表日期,以便获得期初数。
|
@@ -1653,8 +1793,8 @@ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1653
1793
|
comparator=tickers[0]
|
1654
1794
|
comparee=tickers[1:]
|
1655
1795
|
print(" Conducting cash flow analysis ...")
|
1656
|
-
print("
|
1657
|
-
print("
|
1796
|
+
print(" Focus on:",ticker_name(comparator,'stock'))
|
1797
|
+
print(" Peers :",end='')
|
1658
1798
|
if comparee != []:
|
1659
1799
|
print_list(ticker_name(comparee,'stock'))
|
1660
1800
|
else:
|
@@ -1681,59 +1821,86 @@ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip'):
|
|
1681
1821
|
"投资活动现金流净额","投资活动现金流入","投资活动现金流出",
|
1682
1822
|
"筹资活动现金流净额","筹资活动现金流入","筹资活动现金流出",
|
1683
1823
|
"汇率对现金流的影响","现金流量净增加额"]
|
1684
|
-
dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt,
|
1824
|
+
dfp1=fs_item_analysis_1(df,ticker,fsdate,items1,title_txt, \
|
1825
|
+
facecolor=facecolor,font_size=font_size)
|
1685
1826
|
|
1686
1827
|
#占比变动分析:近三年
|
1687
1828
|
title_txt=title_head+"经营活动现金流入占比情况"
|
1688
1829
|
fsdates1=fsdates[:3]
|
1689
1830
|
items3=["经营活动现金流入","营业总收入"]
|
1690
|
-
dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt,
|
1831
|
+
dfp3=fs_item_analysis_2(df,ticker,fsdates1,items3,title_txt, \
|
1832
|
+
facecolor=facecolor,font_size=font_size)
|
1691
1833
|
|
1692
1834
|
title_txt=title_head+"经营活动现金流净额占比情况"
|
1693
1835
|
items4=["经营活动现金流净额","营业利润"]
|
1694
|
-
dfp3=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt,
|
1836
|
+
dfp3=fs_item_analysis_2(df,ticker,fsdates1,items4,title_txt, \
|
1837
|
+
facecolor=facecolor,font_size=font_size)
|
1695
1838
|
|
1696
1839
|
#增幅分析:近两年
|
1697
1840
|
title_txt=title_head+"经营活动现金流增幅情况"
|
1698
1841
|
fsdates2=fsdates[:2]
|
1699
1842
|
items12=['经营活动现金流入','经营活动现金流出','经营活动现金流净额']
|
1700
|
-
dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt,
|
1843
|
+
dfp12=fs_item_analysis_6(df,ticker,fsdates2,items12,title_txt, \
|
1844
|
+
facecolor=facecolor,font_size=font_size)
|
1701
1845
|
|
1702
1846
|
#同行比较
|
1703
1847
|
title_txt=title_head+"现金收入能力同行比较,"+fsdate
|
1704
1848
|
items16=['销售现金比率%','现金购销比率%','营业现金回笼率%']
|
1705
|
-
|
1849
|
+
"""
|
1706
1850
|
notes1="注1:销售现金比率 = 经营活动现金流入 / 营业总收入"
|
1707
1851
|
notes2="注2:现金购销比率 = 经营活动现金流出 / 经营活动现金流入"
|
1708
1852
|
notes3="注3:营业现金回笼率 = 经营活动现金流入 / 营业总收入"
|
1853
|
+
"""
|
1854
|
+
notes1="注:\n销售现金比率 = 经营活动现金流入 / 营业总收入"
|
1855
|
+
notes2="现金购销比率 = 经营活动现金流出 / 经营活动现金流入"
|
1856
|
+
notes3="营业现金回笼率 = 经营活动现金流入 / 营业总收入"
|
1857
|
+
|
1709
1858
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1710
|
-
dfp12=fs_item_analysis_8(df,tickers,fsdate,items16,title_txt,notes,
|
1859
|
+
dfp12=fs_item_analysis_8(df,tickers,fsdate,items16,title_txt,notes, \
|
1860
|
+
facecolor=facecolor,font_size=font_size)
|
1711
1861
|
|
1712
1862
|
title_txt=title_head+"现金偿债能力同行比较,"+fsdate
|
1713
1863
|
items14=['短期现金偿债能力%','长期现金偿债能力%']
|
1714
|
-
|
1864
|
+
"""
|
1715
1865
|
notes1="注1:短期现金偿债能力 = 经营活动现金流净额 / 流动负债合计"
|
1716
1866
|
notes2="注2:长期现金偿债能力 = 经营活动现金流净额 / 负债合计"
|
1867
|
+
"""
|
1868
|
+
notes1="注:\n短期现金偿债能力 = 经营活动现金流净额 / 流动负债合计"
|
1869
|
+
notes2="长期现金偿债能力 = 经营活动现金流净额 / 负债合计"
|
1870
|
+
|
1717
1871
|
notes=notes1+'\n'+notes2
|
1718
|
-
dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes,
|
1872
|
+
dfp12=fs_item_analysis_8(df,tickers,fsdate,items14,title_txt,notes, \
|
1873
|
+
facecolor=facecolor,font_size=font_size)
|
1719
1874
|
|
1720
1875
|
title_txt=title_head+"现金支付能力同行比较,"+fsdate
|
1721
1876
|
items15=['现金支付股利能力(元)','现金综合支付能力%','支付给职工的现金比率%']
|
1722
|
-
|
1877
|
+
"""
|
1723
1878
|
notes1="注1:现金支付股利能力 = 经营活动现金流净额 / 流通股股数"
|
1724
1879
|
notes2="注2:现金综合支付能力 = 经营活动现金流净额 / 所有者权益合计"
|
1725
1880
|
notes3="注3:支付给职工的现金比率 = 支付给(为)职工支付的现金 / 经营活动现金流入"
|
1881
|
+
"""
|
1882
|
+
notes1="注:\n现金支付股利能力 = 经营活动现金流净额 / 流通股股数"
|
1883
|
+
notes2="现金综合支付能力 = 经营活动现金流净额 / 所有者权益合计"
|
1884
|
+
notes3="支付给职工的现金比率 = 支付给(为)职工支付的现金 / 经营活动现金流入"
|
1885
|
+
|
1726
1886
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1727
|
-
dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,notes,
|
1887
|
+
dfp12=fs_item_analysis_8(df,tickers,fsdate,items15,title_txt,notes, \
|
1888
|
+
facecolor=facecolor,font_size=font_size)
|
1728
1889
|
|
1729
1890
|
title_txt=title_head+"财务指标含金量同行比较,"+fsdate
|
1730
1891
|
items17=['盈利现金比率%','现金流入流出比率%','资产现金回收率%']
|
1731
|
-
|
1892
|
+
"""
|
1732
1893
|
notes1="注1:盈利现金比率 = 经营活动现金流净额 / 净利润"
|
1733
1894
|
notes2="注2:现金流入流出比率 = 经营活动现金流入 / 经营活动现金流出"
|
1734
1895
|
notes3="注3:资产现金回收率 = 经营活动现金流净额 / 资产总计"
|
1896
|
+
"""
|
1897
|
+
notes1="注:\n盈利现金比率 = 经营活动现金流净额 / 净利润"
|
1898
|
+
notes2="现金流入流出比率 = 经营活动现金流入 / 经营活动现金流出"
|
1899
|
+
notes3="资产现金回收率 = 经营活动现金流净额 / 资产总计"
|
1900
|
+
|
1735
1901
|
notes=notes1+'\n'+notes2+'\n'+notes3
|
1736
|
-
dfp12=fs_item_analysis_8(df,tickers,fsdate,items17,title_txt,notes,
|
1902
|
+
dfp12=fs_item_analysis_8(df,tickers,fsdate,items17,title_txt,notes, \
|
1903
|
+
facecolor=facecolor,font_size=font_size)
|
1737
1904
|
|
1738
1905
|
return
|
1739
1906
|
|
@@ -1792,7 +1959,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1792
1959
|
category='profile',business_period='recent', \
|
1793
1960
|
printout=False,gview=False, \
|
1794
1961
|
loc1='upper left',loc2='upper right', \
|
1795
|
-
facecolor='papayawhip'):
|
1962
|
+
facecolor='papayawhip',font_size='16px'):
|
1796
1963
|
"""
|
1797
1964
|
【功能】财务报表分析,仅适用于中国A股,注意不适用于港股和美股(含中概股)
|
1798
1965
|
|
@@ -1863,7 +2030,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1863
2030
|
fsdates=gen_yoy_dates(fsdates,num=4)
|
1864
2031
|
|
1865
2032
|
# 分析资产负债表
|
1866
|
-
asset_liab_china(tickers,fsdates,facecolor=facecolor)
|
2033
|
+
asset_liab_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1867
2034
|
return
|
1868
2035
|
|
1869
2036
|
elif ('income' in analysis_type1) or ('cost' in analysis_type1) \
|
@@ -1876,7 +2043,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1876
2043
|
fsdates=gen_yoy_dates(fsdates,num=4)
|
1877
2044
|
|
1878
2045
|
# 分析利润表
|
1879
|
-
income_cost_china(tickers,fsdates,facecolor=facecolor)
|
2046
|
+
income_cost_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1880
2047
|
return
|
1881
2048
|
|
1882
2049
|
elif ('cash' in analysis_type1) or ('flow' in analysis_type1):
|
@@ -1888,7 +2055,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1888
2055
|
fsdates=gen_yoy_dates(fsdates,num=4)
|
1889
2056
|
|
1890
2057
|
# 分析现金流量表
|
1891
|
-
cash_flow_china(tickers,fsdates,facecolor=facecolor)
|
2058
|
+
cash_flow_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1892
2059
|
return
|
1893
2060
|
|
1894
2061
|
elif ('summary' in analysis_type1):
|
@@ -1913,7 +2080,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1913
2080
|
|
1914
2081
|
# 分析财报摘要
|
1915
2082
|
from siat.financials_china import compare_fin_summary_china
|
1916
|
-
df_summary=compare_fin_summary_china(tickers,fsdates,facecolor=facecolor)
|
2083
|
+
df_summary=compare_fin_summary_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1917
2084
|
return
|
1918
2085
|
|
1919
2086
|
elif ('indicator' in analysis_type1):
|
@@ -1938,7 +2105,7 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1938
2105
|
|
1939
2106
|
# 分析主要财务指标和比率
|
1940
2107
|
from siat.financials_china import compare_fin_indicator_china
|
1941
|
-
df_ind=compare_fin_indicator_china(tickers,fsdates,facecolor=facecolor)
|
2108
|
+
df_ind=compare_fin_indicator_china(tickers,fsdates,facecolor=facecolor,font_size=font_size)
|
1942
2109
|
return
|
1943
2110
|
|
1944
2111
|
elif ('profile' in analysis_type1):
|
@@ -1948,7 +2115,8 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1948
2115
|
return
|
1949
2116
|
|
1950
2117
|
# 分析单只股票的全方位概况
|
1951
|
-
stock_profile_china(tickers,category,business_period,loc1=loc1,loc2=loc2,
|
2118
|
+
stock_profile_china(tickers,category,business_period,loc1=loc1,loc2=loc2, \
|
2119
|
+
facecolor=facecolor,font_size=font_size)
|
1952
2120
|
return
|
1953
2121
|
|
1954
2122
|
elif ('dupont' in analysis_type1) and (('identity' in analysis_type1) or ('analysis' in analysis_type1)):
|
@@ -1966,7 +2134,8 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1966
2134
|
|
1967
2135
|
# 多只股票的杜邦分析对比
|
1968
2136
|
from siat.financials_china import compare_dupont_china
|
1969
|
-
df_db=compare_dupont_china(tickers,fsdate=fsdates,printout=printout,
|
2137
|
+
df_db=compare_dupont_china(tickers,fsdate=fsdates,printout=printout, \
|
2138
|
+
facecolor=facecolor,font_size=font_size)
|
1970
2139
|
return
|
1971
2140
|
|
1972
2141
|
elif ('dupont' in analysis_type1) and ('decompose' in analysis_type1):
|