siat 2.12.8__py3-none-any.whl → 2.12.14__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.
@@ -150,8 +150,7 @@ def get_balance_sheet(symbol):
150
150
  stmt['AccountsReceivable']=stmt['Receivables']
151
151
 
152
152
  #总检查:总资产=总负债+总权益是否成立
153
- stmt['TA-TL-TE']=stmt['TotalAssets']-stmt['TotalLiabilities']- \
154
- stmt['TotalEquities']
153
+ #stmt['TA-TL-TE']=stmt['TotalAssets']-stmt['TotalLiabilities']-stmt['TotalEquities']
155
154
 
156
155
  #排序
157
156
  stmt.sort_values(by=['asOfDate','periodType'],inplace=True)
@@ -159,6 +158,7 @@ def get_balance_sheet(symbol):
159
158
  stmt.drop_duplicates(subset=['asOfDate'],keep='first',inplace=True)
160
159
 
161
160
  #print(", done")
161
+
162
162
  return stmt
163
163
 
164
164
  if __name__ == '__main__':
@@ -171,6 +171,8 @@ if __name__ == '__main__':
171
171
  if __name__=='__main__':
172
172
  symbol='AAPL'
173
173
  symbol='MST'
174
+
175
+ fsdf=get_income_statements(symbol)
174
176
 
175
177
  def get_income_statements(symbol):
176
178
  """
@@ -284,6 +286,8 @@ if __name__ == '__main__':
284
286
  #==============================================================================
285
287
  if __name__=='__main__':
286
288
  symbol='AAPL'
289
+
290
+ fsdf=get_cashflow_statements(symbol)
287
291
 
288
292
  def get_cashflow_statements(symbol):
289
293
  """
@@ -382,6 +386,8 @@ if __name__ == '__main__':
382
386
  if __name__=='__main__':
383
387
  ticker='AAPL'
384
388
  ticker='00700.HK'
389
+
390
+ fsdf=get_financial_statements(ticker)
385
391
 
386
392
  def get_financial_statements(ticker):
387
393
  """
@@ -615,6 +621,33 @@ if __name__ == '__main__':
615
621
  """
616
622
 
617
623
  #==============================================================================
624
+ if __name__ == '__main__':
625
+ fsdf=get_financial_statements('601398.SS')
626
+ account_entry='TotalAssets'
627
+
628
+ fsdf1=fs_entry_begin(fsdf,account_entry='TotalAssets',suffix='_begin')
629
+
630
+ def fs_entry_begin(fsdf,account_entry='TotalAssets',suffix='_begin'):
631
+ """
632
+ 功能:以上年年报期末科目数值作为本期年报和季报的期初
633
+ """
634
+ import pandas as pd
635
+ import numpy as np
636
+ #获取年报日期
637
+ ar_mm_dd=pd.to_datetime(fsdf[fsdf['periodType']=='12M']['asOfDate'].values[0]).strftime("%Y-%m-%d")[-5:]
638
+
639
+ fsdf['asOfDate_pd']=fsdf['asOfDate'].apply(lambda x: pd.to_datetime(x))
640
+ fsdf['Date_y4']=fsdf['asOfDate'].apply(lambda x: pd.to_datetime(x).strftime("%Y"))
641
+ fsdf['Date_begin_pd']=fsdf['Date_y4'].apply(lambda x: pd.to_datetime(str(int(x)-1)+'-'+ar_mm_dd))
642
+
643
+ asOfDate_pd_list=list(fsdf['asOfDate_pd'])
644
+ entry_begin=lambda x: fsdf[fsdf['asOfDate_pd']==x][account_entry].values[0] if x in asOfDate_pd_list else np.nan
645
+ fsdf[account_entry+suffix]=fsdf['Date_begin_pd'].apply(entry_begin)
646
+
647
+ fsdf.drop(['asOfDate_pd','Date_y4','Date_begin_pd'],axis=1,inplace=True)
648
+
649
+ return fsdf
650
+
618
651
  #==============================================================================
619
652
  #==============================================================================
620
653
  #==============================================================================
siat/financials.py CHANGED
@@ -892,10 +892,12 @@ if __name__ == '__main__':
892
892
  fst=fsdf.T #查看科目名称更加方便
893
893
 
894
894
  fsdf=get_financial_statements('3333.HK')
895
+ fsdf=get_financial_statements('601398.SS')
895
896
 
896
897
  def calc_fin_rates(fsdf):
897
898
  """
898
899
  功能:基于财报计算各种指标
900
+ 注意:ROA/ROE/EM/turnover比率基于期初期末均值计算,其余仅基于期末数据计算!
899
901
  """
900
902
  #####前后填充缺失值
901
903
  if fsdf is None: return None
@@ -928,9 +930,13 @@ def calc_fin_rates(fsdf):
928
930
  fs['Debt to Asset']=fs['TotalLiabilities']/fs['TotalAssets']
929
931
  #股东权益比率:股东权益总额 / 资产总额
930
932
  fs['Equity to Asset']=fs['TotalEquities']/fs['TotalAssets']
931
- #权益乘数:资产总额 / 股东权益总额
932
- fs['Equity Multiplier']=fs['TotalAssets']/fs['TotalEquities']
933
+
934
+ #权益乘数:资产总额 / 股东权益总额,使用期初期末均值*****
935
+ fs=fs_entry_begin(fs,account_entry='TotalAssets',suffix='_begin')
936
+ fs=fs_entry_begin(fs,account_entry='TotalEquities',suffix='_begin')
937
+ fs['Equity Multiplier']=((fs['TotalAssets']+fs['TotalAssets_begin'])/2)/((fs['TotalEquities']+fs['TotalEquities_begin'])/2)
933
938
  #fs['Equity Multiplier']=fs['avgTotalAsset']/fs['avgTotalEquity']
939
+
934
940
  #负债股权比率:负债总额 / 股东权益总额
935
941
  fs['Debt to Equity']=fs['TotalLiabilities']/fs['TotalEquities']
936
942
  #有形净值债务率:负债总额 / (股东权益-无形资产净额)
@@ -945,19 +951,23 @@ def calc_fin_rates(fsdf):
945
951
  #存货周转率:销售收入 / 期末存货,平均存货计算困难
946
952
  #fs['Inventory Turnover']=fs['CostOfRevenue']/fs['avgInventory']
947
953
  #fs['Inventory Turnover']=fs['CostOfRevenue']/fs['Inventory']
948
- fs['Inventory Turnover']=fs['TotalRevenue']/fs['Inventory']
954
+ fs=fs_entry_begin(fs,account_entry='Inventory',suffix='_begin')
955
+ fs['Inventory Turnover']=fs['TotalRevenue']/((fs['Inventory']+fs['Inventory_begin'])/2)
949
956
  #应收账款周转率:赊销收入净额 / 平均应收账款余额
950
957
  #fs['Receivable Turnover']=fs['TotalRevenue']/fs['avgReceivables']
951
- fs['Receivable Turnover']=fs['TotalRevenue']/fs['AccountsReceivable']
958
+ fs=fs_entry_begin(fs,account_entry='AccountsReceivable',suffix='_begin')
959
+ fs['Receivable Turnover']=fs['TotalRevenue']/((fs['AccountsReceivable']+fs['AccountsReceivable_begin'])/2)
952
960
  #流动资产周转率:销售收入 / 平均流动资产余额
953
961
  #fs['Current Asset Turnover']=fs['TotalRevenue']/fs['avgCurrentAsset']
954
- fs['Current Asset Turnover']=fs['TotalRevenue']/fs['CurrentAssets']
962
+ fs=fs_entry_begin(fs,account_entry='CurrentAssets',suffix='_begin')
963
+ fs['Current Asset Turnover']=fs['TotalRevenue']/((fs['CurrentAssets']+fs['CurrentAssets_begin'])/2)
955
964
  #固定资产周转率:销售收入 / 平均固定资产净额
956
965
  #fs['Fixed Asset Turnover']=fs['TotalRevenue']/fs['avgPPE']
957
- fs['Fixed Asset Turnover']=fs['TotalRevenue']/fs['NetPPE']
966
+ fs=fs_entry_begin(fs,account_entry='NetPPE',suffix='_begin')
967
+ fs['Fixed Asset Turnover']=fs['TotalRevenue']/((fs['NetPPE']+fs['NetPPE_begin'])/2)
958
968
  #总资产周转率:销售收入 / 平均资产总额
959
969
  #fs['Total Asset Turnover']=fs['TotalRevenue']/fs['avgTotalAsset']
960
- fs['Total Asset Turnover']=fs['TotalRevenue']/fs['TotalAssets']
970
+ fs['Total Asset Turnover']=fs['TotalRevenue']/((fs['TotalAssets']+fs['TotalAssets_begin'])/2)
961
971
 
962
972
  #主营业务利润率=主营业务利润/主营业务收入
963
973
  fs['Operating Margin']=fs['OperatingIncome']/fs['OperatingRevenue']
@@ -979,19 +989,22 @@ def calc_fin_rates(fsdf):
979
989
  #资产报酬率:净利润 / 期末资产总额,平均总资产计算困难
980
990
  #fs['Return on Asset']=(fs['NetIncome']+fs['InterestExpense'])/fs['avgTotalAsset']
981
991
  #fs['Return on Asset']=(fs['NetIncome']+fs['InterestExpense'])/fs['TotalAssets']
982
- fs['Return on Asset']=(fs['NetIncome'])/fs['TotalAssets']
992
+ #fs=fs_entry_begin(fs,account_entry='TotalAssets',suffix='_begin')
993
+ fs['Return on Asset']=(fs['NetIncome'])/((fs['TotalAssets']+fs['TotalAssets_begin'])/2)
983
994
  fs['ROA']=fs['Return on Asset']
984
995
  #(投入)资本回报率(Return on Invested Capital,简称ROIC)
985
996
  #ROIC=NOPLAT(息前税后经营利润)/IC(投入资本)
986
997
  #NOPLAT=EBIT×(1-T)=(营业利润+财务费用-非经常性投资损益) ×(1-所得税率)
987
998
  #IC=有息负债+净资产-超额现金-非经营性资产
988
999
  #fs['Return on Invested Capital']=(fs['OperatingIncome']+fs['InterestExpense'])*(1-fs['TaxRateForCalcs'])/fs['InvestedCapital']
989
- fs['Return on Invested Capital']=(fs['OperatingIncome'])*(1-fs['TaxRateForCalcs'])/fs['InvestedCapital']
1000
+ fs=fs_entry_begin(fs,account_entry='InvestedCapital',suffix='_begin')
1001
+ fs['Return on Invested Capital']=(fs['OperatingIncome'])*(1-fs['TaxRateForCalcs'])/((fs['InvestedCapital']+fs['InvestedCapital_begin'])/2)
990
1002
  #fs['Return on Invested Capital']=fs['Return on Invested Capital']
991
1003
  fs['ROIC']=fs['Return on Invested Capital']
992
1004
  #净资产报酬率:净利润 / 平均净资产
993
1005
  #fs['Return on Net Asset']=fs['NetIncome']/fs['avgTotalEquity']
994
- fs['Return on Net Asset']=fs['NetIncome']/fs['TotalEquities']
1006
+
1007
+ fs['Return on Net Asset']=fs['NetIncome']/((fs['TotalEquities']+fs['TotalEquities_begin'])/2)
995
1008
  #股东权益报酬率:净利润 / 平均股东权益总额
996
1009
  fs['Return on Equity']=fs['Return on Net Asset']
997
1010
  fs['ROE']=fs['Return on Equity']
@@ -1026,6 +1039,13 @@ def calc_fin_rates(fsdf):
1026
1039
  fs['date']=fs['endDate']
1027
1040
  fs.set_index('date',inplace=True)
1028
1041
 
1042
+ # 删除起初_begin字段
1043
+ list_begin=[]
1044
+ for b in list(fs):
1045
+ if '_begin' in b:
1046
+ list_begin=list_begin+[b]
1047
+ fs.drop(list_begin,axis=1,inplace=True)
1048
+
1029
1049
  return fs
1030
1050
 
1031
1051
 
@@ -1036,6 +1056,8 @@ if __name__ == '__main__':
1036
1056
  if __name__ == '__main__':
1037
1057
  ticker='AAPL'
1038
1058
  ticker='00700.HK'
1059
+ ticker='601398.SS'
1060
+
1039
1061
  fsr=get_financial_rates(ticker)
1040
1062
 
1041
1063
  def get_financial_rates(ticker):
@@ -2022,5 +2044,8 @@ if __name__=='__main__':
2022
2044
  tickerlist=['IBM','DELL','WMT']
2023
2045
  df=compare_dupont(tickerlist,fsdate='latest',scale1 = 100,scale2 = 10)
2024
2046
  #==============================================================================
2047
+
2048
+
2049
+
2025
2050
  #==============================================================================
2026
2051
  #==============================================================================
siat/financials2.py CHANGED
@@ -183,7 +183,8 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
183
183
 
184
184
  # 删除不用的列
185
185
  currency=fsdf2['currencyCode'].values[0]
186
- droplist=['currencyCode','TA-TL-TE','asOfDate']
186
+ #droplist=['currencyCode','TA-TL-TE','asOfDate']
187
+ droplist=['currencyCode','asOfDate']
187
188
  fsdf2.drop(droplist,axis=1,inplace=True)
188
189
 
189
190
  # 打印前处理
@@ -234,6 +235,8 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
234
235
  fsdf5=fsdf4[['Item']+collist]
235
236
  fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
236
237
 
238
+ fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
239
+
237
240
  alignlist=['left']+['right']*(len(list(fsdf5))-1)
238
241
  print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
239
242
 
@@ -306,6 +309,8 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
306
309
  fsdf5=fsdf4[['Item']+collist]
307
310
  fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
308
311
 
312
+ fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
313
+
309
314
  alignlist=['left']+['right']*(len(list(fsdf5))-1)
310
315
  print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
311
316
 
@@ -376,6 +381,8 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
376
381
  fsdf5=fsdf4[['Item']+collist]
377
382
  fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
378
383
 
384
+ fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
385
+
379
386
  alignlist=['left']+['right']*(len(list(fsdf5))-1)
380
387
  print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
381
388
 
@@ -477,11 +484,13 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
477
484
  fsdf5=fsdf4[['Item']+collist]
478
485
  fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
479
486
 
487
+ fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
488
+
480
489
  alignlist=['left']+['right']*(len(list(fsdf5))-1)
481
490
  print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
482
491
 
483
492
  footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
484
- footnote2="*** Some fin ratios (e.g. ROx) are based simply by term-end amounts"
493
+ footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
485
494
  footnote3="*** Data source: Yahoo Finance, "+todaydt
486
495
  print('\n',footnote1,'\n',footnote2,'\n',footnote3)
487
496
 
@@ -562,7 +571,7 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
562
571
 
563
572
  fsdf4.replace(0,'---',inplace=True)
564
573
 
565
- titletxt="\n***** COMPARISON OF FINANCIAL STATEMENT SUMMARY *****\n"
574
+ titletxt="\n***** PEER COMPARISON OF FINANCIAL STATEMENT SUMMARY *****\n"
566
575
  print(titletxt)
567
576
 
568
577
  collist=list(fsdf4)
@@ -570,11 +579,13 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
570
579
  fsdf5=fsdf4[['Item']+collist]
571
580
  fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
572
581
 
582
+ fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType','reportDate','currencyCode'],ascending=True)
583
+
573
584
  alignlist=['left']+['right']*(len(list(fsdf5))-1)
574
585
  print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
575
586
 
576
- footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
577
- footnote2="*** Some fin ratios (e.g. ROx) are based simply by term-end amounts"
587
+ footnote1="*** Amount unit: billion, based on exchange's local accounting standards"
588
+ footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
578
589
  footnote3="*** Data source: Yahoo Finance, "+todaydt
579
590
  print('\n',footnote1,'\n',footnote2,'\n',footnote3)
580
591
 
@@ -670,11 +681,13 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
670
681
  fsdf5=fsdf4[['Item']+collist]
671
682
  fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
672
683
 
684
+ fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType'],ascending=True)
685
+
673
686
  alignlist=['left']+['right']*(len(list(fsdf5))-1)
674
687
  print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
675
688
 
676
689
  footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
677
- footnote2="*** Some fin ratios (e.g. ROx) are based simply by term-end amounts"
690
+ footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
678
691
  footnote3="*** Data source: Yahoo Finance, "+todaydt
679
692
  print('\n',footnote1,'\n',footnote2,'\n',footnote3)
680
693
 
@@ -756,7 +769,7 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
756
769
 
757
770
  fsdf4.replace(0,'---',inplace=True)
758
771
 
759
- titletxt="\n***** COMPARISON OF FINANCIAL INDICATORS *****\n"
772
+ titletxt="\n***** PEER COMPARISON OF FINANCIAL INDICATORS *****\n"
760
773
  print(titletxt)
761
774
 
762
775
  collist=list(fsdf4)
@@ -764,11 +777,13 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
764
777
  fsdf5=fsdf4[['Item']+collist]
765
778
  fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
766
779
 
780
+ fsdf6=df_sort_priority_list(fsdf6,sort_column='Item',priorityList=['periodType','reportDate','currencyCode'],ascending=True)
781
+
767
782
  alignlist=['left']+['right']*(len(list(fsdf5))-1)
768
783
  print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
769
784
 
770
- footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
771
- footnote2="*** Some fin ratios (e.g. ROx) are based simply by term-end amounts"
785
+ footnote1="*** Amount unit: billion, based on exchange's local accounting standards"
786
+ footnote2="*** ROx/EM/turnover rates are based on periodic mean, others on end-term"
772
787
  footnote3="*** Data source: Yahoo Finance, "+todaydt
773
788
  print('\n',footnote1,'\n',footnote2,'\n',footnote3)
774
789
 
@@ -841,6 +856,8 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
841
856
  df2=df.copy()
842
857
  df2[name1]=df2[name1].apply(lambda x: x * scale1)
843
858
  df2[name2]=df2[name2].apply(lambda x: x * scale2)
859
+
860
+ fin_period=df2['endDate'].values[0]
844
861
 
845
862
  f,ax1 = plt.subplots(1,figsize=(10,5))
846
863
  w = 0.75
@@ -860,9 +877,9 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
860
877
  plt.ylabel("Items (Amplified)")
861
878
 
862
879
  footnote1="[Bar amplifier] "+name1+':x'+str(scale1)+','+name2+':x'+str(scale2)
863
- footnote2='Financial statement period: '+business_period
880
+ footnote2='Financial statement period: '+fin_period+'. Bar height does not indicate ROE value.'
864
881
  footnote3="Data source: Yahoo Finance,"+todaydt
865
- footnote ='\n'+footnote1+'\n'+footnote2+'. '+footnote3
882
+ footnote ='\n'+footnote1+'\n'+footnote2+'\n'+footnote3
866
883
  plt.xlabel(footnote,fontsize=10)
867
884
 
868
885
  plt.legend(loc='best',fontsize=10)
@@ -882,10 +899,13 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
882
899
  except:
883
900
  continue
884
901
 
902
+ for d in list(df):
903
+ df[d]=df[d].apply(lambda x: round(x,5) if isinstance(x,float) else x)
904
+
885
905
  alignlist=['left']+['right']*(len(list(df))-1)
886
906
  print(df.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
887
907
 
888
- footnote1="*** Based on exchange's local accounting standards"
908
+ footnote1="*** Based on exchange's local accounting standards, EM/TAT are on periodic mean"
889
909
  footnote2="Data source: Yahoo Finance, "+todaydt
890
910
  print('\n',footnote1,'\b.',footnote2)
891
911
 
@@ -897,5 +917,32 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
897
917
 
898
918
 
899
919
  #==============================================================================
920
+
921
+ if __name__ == '__main__':
922
+ sort_column='Item'
923
+ priorityList=['periodType']
924
+
925
+ df_sort_priority_list(df,sort_column='Item',priorityList=['periodType'],ascending=True)
926
+ df_sort_priority_list(df,sort_column='Item',priorityList=['periodType'],ascending=False)
927
+
928
+ def df_sort_priority_list(df,sort_column='',priorityList=[],ascending=True):
929
+ """
930
+ 功能:为df排序,但保持某些优先项目按顺序排在前面
931
+ """
932
+ if sort_column == '': #无需排序
933
+ return df
934
+
935
+ if len(priorityList) > 0: # 存在优先项目
936
+ df['priority_seq']=df[sort_column].apply(lambda x: priorityList.index(x) if x in priorityList else 9)
937
+
938
+ df.sort_values(by=['priority_seq',sort_column],ascending=[True,ascending],inplace=True)
939
+
940
+ df.drop('priority_seq',axis=1,inplace=True) #删除列
941
+ else:
942
+ df.sort_values(by=[sort_column],ascending=ascending,inplace=True)
943
+
944
+ return df
945
+
946
+
900
947
  #==============================================================================
901
948
  #==============================================================================
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siat
3
- Version: 2.12.8
3
+ Version: 2.12.14
4
4
  Summary: Securities Investment Analysis Tools (siat)
5
5
  Home-page: https://pypi.org/project/siat/
6
6
  Author: Prof. WANG Dehong, Business School, BFSU
@@ -33,11 +33,11 @@ siat/exchange_bond_china.pickle,sha256=78r6E3vPFZlCYPcmS1asgVbe0FGAxsCWaw8ek42Sd
33
33
  siat/fama_french.py,sha256=tNtr0WRyPxDbgN6Nu_ZnDtVC-RIiQfh6w0JiPjevWa0,47538
34
34
  siat/fama_french_test.py,sha256=M4O23lBKsJxhWHRluwCb3l7HSEn3OFTjzGMpehcevRg,4678
35
35
  siat/financial_base.py,sha256=j961-1YS9qBl6LmOzI4gCOpdTmk0d1JgNXMzLmV-lrs,41062
36
- siat/financial_statements.py,sha256=mdUk5nAoAgQuguPxqHay1xsEgXFi2HfPqJezAc4eet0,24045
36
+ siat/financial_statements.py,sha256=luukwpaUnOAbHBdL20WobLeREOfe-soe-qFJSejsIFs,25361
37
37
  siat/financial_statements_test.py,sha256=FLhx8JD-tVVWSBGux6AMz1jioXX4U4bp9DmgFHYXb_w,716
38
- siat/financials.py,sha256=zFYPDvS82oeeRUe3ZTs_jmRWZCEDUG50hQHgc1Zpljc,79125
38
+ siat/financials.py,sha256=RMHdzV8Vf8F2RfhboIwlApGBMtAA3NL_m0xbEl-a0ro,80443
39
39
  siat/financials2 - 副本.py,sha256=dKlNjIfKeoSy055fQ6E6TUj9HEoO5Ney9grD84J5kfk,14389
40
- siat/financials2.py,sha256=Es9wga_1SbGtiw9LyPRFzwehmuKOIVCQ0XMxT569HC8,38477
40
+ siat/financials2.py,sha256=_RVb-9q7cV74jWpyLQlNcqPT0pOwyqwdouMi_V2hJnQ,40750
41
41
  siat/financials_china.py,sha256=nUSPS4SDLP1RaOZF6uIvel8pFl3X_aBO_I0Opl1O8RI,177685
42
42
  siat/financials_china2.py,sha256=12wgmTz1iV7N3IKm6Z0b6_punUzlkBMQ8I8yqvBsScU,73675
43
43
  siat/financials_china2_test.py,sha256=Erz5k4LyOplBBvYls2MypuqHpVNJ3daiLdyeJezNPu0,2722
@@ -125,7 +125,7 @@ siat/valuation.py,sha256=3VKrO9b9xY9dOJGGuF0ZhytzB5d2pCx3kO3TtMml7mo,44025
125
125
  siat/valuation_china.py,sha256=oEQRrktJNHiOG1mJSQN1aSSQAQrwrg-ppIHyNVjMjNg,67603
126
126
  siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
127
127
  siat/var_model_validation.py,sha256=zB_Skk_tmzIR15l6oAW3am4HBGVIG-eZ8gJhCdXZ8Qw,14859
128
- siat-2.12.8.dist-info/METADATA,sha256=gdKucGMMJC2CSavAZQ9Uv0pkHysimwA6IwmAgyRBf2o,1366
129
- siat-2.12.8.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
130
- siat-2.12.8.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
131
- siat-2.12.8.dist-info/RECORD,,
128
+ siat-2.12.14.dist-info/METADATA,sha256=_6DCyj3gCXtCzZDYh9eSfvqp8u6XTe6RT5BKrEQ5qsA,1367
129
+ siat-2.12.14.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
130
+ siat-2.12.14.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
131
+ siat-2.12.14.dist-info/RECORD,,
File without changes