siat 3.0.42__py3-none-any.whl → 3.0.43__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/financials_china.py CHANGED
@@ -655,7 +655,8 @@ if __name__=='__main__':
655
655
 
656
656
  def compare_dupont_china(tickerlist,fsdate='latest',scale1 = 10,scale2 = 10, \
657
657
  hatchlist=['.', 'o', '\\'],printout=True,sort='PM', \
658
- facecolor='papayawhip',font_size='16px'):
658
+ facecolor='papayawhip',font_size='16px',
659
+ loc='best'):
659
660
  """
660
661
  功能:获得tickerlist中每只股票的杜邦分析项目,绘制柱状叠加比较图
661
662
  tickerlist:股票代码列表,建议在10只以内
@@ -724,6 +725,12 @@ def compare_dupont_china(tickerlist,fsdate='latest',scale1 = 10,scale2 = 10, \
724
725
  }
725
726
 
726
727
  df = pd.DataFrame(raw_data,columns=[ticker,name1,name2,name3,name4,name5])
728
+ if len(df)==0:
729
+ print('')
730
+ print(" #Error(compare_dupont_china): no data to plot dupont identity bar chart.")
731
+ print(" If the stock code is correct, you may suffer from anti-spyder from data source. Try later")
732
+ return None
733
+
727
734
  if sort=='PM':
728
735
  df.sort_values(name1,ascending=False,inplace=True)
729
736
  elif sort=='TAT':
@@ -752,6 +759,11 @@ def compare_dupont_china(tickerlist,fsdate='latest',scale1 = 10,scale2 = 10, \
752
759
  ax1.bar(x,df[name1],width=w,label=name1,alpha=0.5,color='blue', \
753
760
  hatch=hatchlist[2], edgecolor='black',align='center')
754
761
 
762
+ #判断是否绘制零线
763
+ pm_max=df[name1].max(); pm_min=df[name1].min()
764
+ if pm_max * pm_min < 0:
765
+ plt.axhline(y=0,ls=":",c="black",linewidth=2,label='')
766
+
755
767
  plt.xticks(tick_pos,df[ticker])
756
768
  plt.ylabel("杜邦分析分解项目")
757
769
 
@@ -768,8 +780,17 @@ def compare_dupont_china(tickerlist,fsdate='latest',scale1 = 10,scale2 = 10, \
768
780
  footnote2=footnote+'\n'+footnote1+'\n'+"数据来源:sina/EM,"+str(today)
769
781
  plt.xlabel(footnote2)
770
782
 
771
- plt.legend(loc='best')
772
- plt.title("杜邦分析对比图")
783
+ plt.legend(loc=loc)
784
+
785
+ titletxt1="杜邦分析对比图:"
786
+ if sort=='PM':
787
+ titletxt2="按照"+name1+"降序排列"
788
+ elif sort=='TAT':
789
+ titletxt2="按照"+name2+"降序排列"
790
+ else:
791
+ titletxt2="按照"+name3+"降序排列"
792
+
793
+ plt.title(titletxt1+titletxt2)
773
794
  plt.xlim([min(tick_pos)-w,max(tick_pos)+w])
774
795
 
775
796
  plt.gca().set_facecolor('whitesmoke')
@@ -794,7 +815,7 @@ def compare_dupont_china(tickerlist,fsdate='latest',scale1 = 10,scale2 = 10, \
794
815
  print("===== 杜邦分析分项数据表 =====")
795
816
  print("*** 数据来源:sina/EM,"+str(today))
796
817
  """
797
- title_txt="杜邦分析分项数据表"
818
+ title_txt="杜邦分析分项数据表:"+titletxt2
798
819
  footnote0="1、表中各个上市公司的财报日期可能存在差异,但均为可获得(已公布)的最新财报"
799
820
  footnote1="2、表中数值基于期末数字直接计算,而非期初期末均值,可能与公告数字存在差异。"
800
821
  footnote2="*** 数据来源:sina/EM,"+str(today)
siat/financials_china2.py CHANGED
@@ -1957,8 +1957,8 @@ if __name__=='__main__':
1957
1957
 
1958
1958
  def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
1959
1959
  category='profile',business_period='recent', \
1960
- printout=False,gview=False, \
1961
- loc1='upper left',loc2='upper right', \
1960
+ sort='PM',printout=False,gview=False, \
1961
+ loc1='best',loc2='best', \
1962
1962
  facecolor='papayawhip',font_size='16px'):
1963
1963
  """
1964
1964
  【功能】财务报表分析,仅适用于中国A股,注意不适用于港股和美股(含中概股)
@@ -2134,8 +2134,8 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
2134
2134
 
2135
2135
  # 多只股票的杜邦分析对比
2136
2136
  from siat.financials_china import compare_dupont_china
2137
- df_db=compare_dupont_china(tickers,fsdate=fsdates,printout=printout, \
2138
- facecolor=facecolor,font_size=font_size)
2137
+ df_db=compare_dupont_china(tickers,fsdate=fsdates,sort=sort,printout=printout, \
2138
+ facecolor=facecolor,font_size=font_size,loc=loc1)
2139
2139
  return
2140
2140
 
2141
2141
  elif ('dupont' in analysis_type1) and ('decompose' in analysis_type1):
@@ -793,7 +793,7 @@ def compare_mticker_1rar(ticker,start,end,rar='sharpe', \
793
793
  footnotey=footnote6+'\n'+footnote7+'\n'+footnotex
794
794
 
795
795
  #删除含有Nan的行,否则可能引起近期优先加权平均计算结果市场出现Nan
796
- df1.dropna(inplace=True)
796
+ df1.dropna(inplace=True,axis=1)
797
797
  recommenddf=descriptive_statistics2(df1,title_txt,footnotey,decimals=4, \
798
798
  sortby=sortby,recommend_only=True,trailing=trailing, \
799
799
  trend_threshhold=trend_threshhold, \
siat/translate.py CHANGED
@@ -3256,6 +3256,10 @@ def ticker1_name(ticker,ticker_type='auto'):
3256
3256
  #查找证券名称文件:优先股票
3257
3257
  if tt in ['stock']:
3258
3258
  df1=file_position(file='stock_info.pickle',package='siat',mode='read')
3259
+
3260
+ #港股
3261
+ if '.HK' in symbol and len(symbol)==8: symbol=symbol[1:]
3262
+
3259
3263
  try:
3260
3264
  tname=df1[df1['SYMBOL']==symbol]['CNAME'].values[0]
3261
3265
  except: pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siat
3
- Version: 3.0.42
3
+ Version: 3.0.43
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
@@ -40,8 +40,8 @@ siat/financial_statements_test.py,sha256=FLhx8JD-tVVWSBGux6AMz1jioXX4U4bp9DmgFHY
40
40
  siat/financials.py,sha256=mbEZSNeHMMFcnPUryQWvdmNlWQvpnOG9eItgS7IVw3k,80458
41
41
  siat/financials2 - 副本.py,sha256=dKlNjIfKeoSy055fQ6E6TUj9HEoO5Ney9grD84J5kfk,14389
42
42
  siat/financials2.py,sha256=7mnsTncKsgwFu8PP4refh5C5iMIO9P0KOMSF87ZyncY,45736
43
- siat/financials_china.py,sha256=IjTuQNoG70g1evz66El9xnwMpHklB5yo5YdQ3Dx1jy8,189361
44
- siat/financials_china2.py,sha256=ESxKyBoIETokRXLIkjkyhSjM0b1YSdXcP_rP2R5BUlU,92639
43
+ siat/financials_china.py,sha256=HdX6YKI4tUC7VnPCTAjtdC3JxGgGepu07wdrpyykxbE,190119
44
+ siat/financials_china2.py,sha256=mFwWtzwPbantjmXkGsr4CTEj9VRdZe5yITG3VwlJC9E,92655
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
@@ -85,7 +85,7 @@ siat/option_sina_api_test.py,sha256=dn-k_wrQnAaNKHoROvWJEc7lqlU0bwiV2Aa4usWAFGM,
85
85
  siat/proxy_test.py,sha256=erQJrmGs2X46z8Gb1h-7GYQ0rTUcaR8dxHExWoBz2eM,2610
86
86
  siat/quandl_test.py,sha256=EcPoXnLuqzPl5dKyVEZi3j3PJZFpsnU_iNPhLWC9p-A,1552
87
87
  siat/risk_adjusted_return.py,sha256=L5FoeOFzvItT03gNBTCaIo32hUvncOJkbchtHOveSBM,54929
88
- siat/risk_adjusted_return2.py,sha256=M01nDhPr49RdCyNPFzCI6h9yzLS10SBTlLXelTQj73c,64331
88
+ siat/risk_adjusted_return2.py,sha256=y9Eux9bbQgprFs_a-0J-7pC9P4yEpJHssDbcbFct0K0,64338
89
89
  siat/risk_adjusted_return_test.py,sha256=m_VHL5AtT74cJv5i7taTeTfnkX48y0AFJk5phawyYWg,3416
90
90
  siat/risk_evaluation.py,sha256=I6B3gty-t--AkDCO0tKF-291YfpnF-IkXcFjqNKCt9I,76286
91
91
  siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
@@ -126,13 +126,13 @@ siat/transaction_test.py,sha256=Z8g1LJCN4-mnUByXMUMoFmN0t105cbmsz2QmvSuIkbU,1858
126
126
  siat/translate-20230125.py,sha256=NPPSXhT38s5t9fzMvl_fvi4ckSB73ThLmZetVI-xGdU,117953
127
127
  siat/translate-20230206.py,sha256=-vtI125WyaJhmPotOpDAmclt_XnYVaWU9ByLWZ6FyYE,118133
128
128
  siat/translate-20230215.py,sha256=TJgtPE3n8IjljmZ4Pefy8dmHoNdFF-1zpML6BhA9FKE,121657
129
- siat/translate.py,sha256=GsxDuo02bbXzWpoULxd7nqAaRON3-y_nVdkmy9kAFRQ,214915
129
+ siat/translate.py,sha256=dqzySnqC0A0IxFKhY1AUvBbj3RIE5_l_wRMn-ZJNJxs,215034
130
130
  siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
131
131
  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.42.dist-info/METADATA,sha256=mzi8bdptIZ54rZ19MJ7S23h_LIS_vfeGH_B4dUAYEhk,1448
136
- siat-3.0.42.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
137
- siat-3.0.42.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
138
- siat-3.0.42.dist-info/RECORD,,
135
+ siat-3.0.43.dist-info/METADATA,sha256=8x9wW6A3GWrxYLw-PKD4UfzcY4MPZby_RNo1socVEyw,1448
136
+ siat-3.0.43.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
137
+ siat-3.0.43.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
138
+ siat-3.0.43.dist-info/RECORD,,
File without changes