siat 3.4.1__py3-none-any.whl → 3.4.3__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/__init__.py CHANGED
@@ -23,7 +23,7 @@ try:
23
23
  import pkg_resources
24
24
  current_version=pkg_resources.get_distribution("siat").version
25
25
  current_list=current_version.split('.')
26
- print("Successfully imported siat version",current_version)
26
+ print("Successfully enabled siat version",current_version)
27
27
 
28
28
  if check_newer_version:
29
29
  import luddite
@@ -38,11 +38,11 @@ try:
38
38
 
39
39
  if not newest:
40
40
  #print("The latest version of siat is",latest_version,'\n')
41
- print("Now there is a newer version of siat",latest_version,'\n')
41
+ print("There is a newer version of siat",latest_version,'\n')
42
42
  print("*** How to upgrade siat?")
43
- print("Upgrade directly from official source? use command: upgrade_siat()")
44
- print("Upgrade from Tsinghua? use command: upgrade_siat(alternative='tsinghua')")
45
- print("Upgrade from Alibaba? use command: upgrade_siat(alternative='alibaba')")
43
+ print("Upgrade from official website? Command: upgrade_siat()")
44
+ print("Upgrade from Tsinghua? Command: upgrade_siat(alternative='tsinghua')")
45
+ print("Upgrade from Alibaba? Command: upgrade_siat(alternative='alibaba')")
46
46
 
47
47
  except:
48
48
  pass
siat/financials_china.py CHANGED
@@ -56,6 +56,8 @@ if __name__=='__main__':
56
56
  ticker='601398.SS'
57
57
  ticker='600791.SS'
58
58
 
59
+ ticker="601375.SS"
60
+
59
61
  akfs=get_fin_stmt_ak(ticker)
60
62
 
61
63
  def get_fin_stmt_ak(ticker):
@@ -218,16 +220,35 @@ def get_fin_stmt_ak(ticker):
218
220
  fs4['预收款项']=fs4['预收账款']
219
221
 
220
222
  if not ('实收资本(或股本)' in fslist):
221
- fs4['实收资本(或股本)']=fs4['股本']
223
+ if '股本' in fslist:
224
+ fs4['实收资本(或股本)']=fs4['股本']
225
+ if '实收资本净额' in fslist:
226
+ fs4['实收资本(或股本)']=fs4['实收资本净额']
227
+
222
228
 
223
229
  if not ('流动资产合计' in fslist):
224
- fs4['流动资产合计']=fs4['资产总计']-fs4['固定资产合计']-fs4['无形资产']-fs4['商誉']-fs4['递延税款借项']-fs4['其他资产']
230
+ if '其他资产' in fslist:
231
+ fs4['流动资产合计']=fs4['资产总计']-fs4['固定资产合计']-fs4['无形资产']-fs4['商誉']-fs4['递延税款借项']-fs4['其他资产']
232
+ else:
233
+ fs4['流动资产合计']=fs4['资产总计']-fs4['固定资产合计']-fs4['无形资产']-fs4['商誉']-fs4['递延税款借项']
225
234
 
226
235
  if not ('速动资产合计' in fslist):
236
+ if not('存货' in fslist) and ('存货净额' in fslist):
237
+ fs4['存货']=fs4['存货净额']
238
+
227
239
  fs4['速动资产合计']=fs4['流动资产合计']-fs4['存货']
228
240
 
229
241
  if not ('流动负债合计' in fslist):
230
- fs4['流动负债合计']=fs4['负债合计']-fs4['应付债券']-fs4['递延所得税负债']-fs4['其他负债']
242
+ if not ('应付债券' in fslist) and ('应付债券款' in fslist):
243
+ fs4['应付债券']=fs4['应付债券款']
244
+
245
+ if not ('递延所得税负债' in fslist) and ('递延税款贷项' in fslist):
246
+ fs4['递延所得税负债']=fs4['递延税款贷项']
247
+
248
+ if '其他负债' in fslist:
249
+ fs4['流动负债合计']=fs4['负债合计']-fs4['应付债券']-fs4['递延所得税负债']-fs4['其他负债']
250
+ else:
251
+ fs4['流动负债合计']=fs4['负债合计']-fs4['应付债券']-fs4['递延所得税负债']
231
252
 
232
253
  #银行利润表
233
254
  if not ('营业总收入' in fslist):
siat/financials_china2.py CHANGED
@@ -138,7 +138,9 @@ def get_fin_stmt_ak_multi(tickers,fsdates):
138
138
 
139
139
  if not ('所得税费用' in entry_list) and ('减:所得税' in entry_list):
140
140
  dfs['所得税费用']=dfs['减:所得税']
141
- dfs['实际所得税率%']=dfs.apply(lambda x:round(x['所得税费用']/x['利润总额']*100,2),axis=1)
141
+ if '所得税费用' in list(dfs):
142
+ dfs['实际所得税率%']=dfs.apply(lambda x:round(x['所得税费用']/x['利润总额']*100,2),axis=1)
143
+
142
144
  dfs['净利润率%']=dfs.apply(lambda x:round(x['净利润']/x['营业总收入']*100,2),axis=1)
143
145
 
144
146
  #dfs['流通股股数']=dfs.apply(lambda x:round(x['净利润']/x['基本每股收益'],0),axis=1)
@@ -1345,7 +1347,7 @@ def asset_liab_structure_china(tickers,fsdates,facecolor='papayawhip',font_size=
1345
1347
  print(" Conducting asset-liability analysis ...")
1346
1348
  print(" Focus on:",ticker_name(comparator,'stock'))
1347
1349
  #print(" Comparee :",ticker_name(comparee))
1348
- print(" Peers :",end='')
1350
+ print(" Peers:",end='')
1349
1351
  if comparee != []:
1350
1352
  print_list(ticker_name(comparee,'stock'))
1351
1353
  else:
@@ -1586,7 +1588,7 @@ def income_cost_structure_china(tickers,fsdates,facecolor='papayawhip',font_size
1586
1588
  print(" Conducting income-cost analysis ...")
1587
1589
  print(" Focus on:",ticker_name(comparator,'stock'))
1588
1590
  #print(" Comparee :",ticker_name(comparee))
1589
- print(" Peers :",end='')
1591
+ print(" Peers:",end='')
1590
1592
  if comparee != []:
1591
1593
  print_list(ticker_name(comparee,'stock'))
1592
1594
  else:
@@ -1794,7 +1796,7 @@ def cash_flow_structure_china(tickers,fsdates,facecolor='papayawhip',font_size='
1794
1796
  comparee=tickers[1:]
1795
1797
  print(" Conducting cash flow analysis ...")
1796
1798
  print(" Focus on:",ticker_name(comparator,'stock'))
1797
- print(" Peers :",end='')
1799
+ print(" Peers:",end='')
1798
1800
  if comparee != []:
1799
1801
  print_list(ticker_name(comparee,'stock'))
1800
1802
  else:
siat/market_china.py CHANGED
@@ -975,9 +975,13 @@ def market_detail_china2(category='price',
975
975
  nowstr0=str(dt.datetime.now())
976
976
  nowstr=nowstr0[:19]
977
977
 
978
+ #检查语言环境
979
+ lang=check_language()
980
+
978
981
  # 前置空格个数
979
982
  heading=' '*1
980
- df.rename(columns={'项目':'Item','上海证券交易所':'Shanghai SE','深圳证券交易所':'Shenzhen SE','北京证券交易所':'Beijing SE'},inplace=True)
983
+ if lang == "English":
984
+ df.rename(columns={'项目':'Item','上海证券交易所':'Shanghai SE','深圳证券交易所':'Shenzhen SE','北京证券交易所':'Beijing SE'},inplace=True)
981
985
 
982
986
  if category1=='PRICE':
983
987
  titletxt=text_lang("中国三大股票交易所横向对比:股价与涨跌","China Stock Exchanges: Differences in Price")
@@ -997,19 +1001,20 @@ def market_detail_china2(category='price',
997
1001
 
998
1002
  footnote=ft0+ft1+ft2+ft3+ft4+ft5+ft6+ft7+ft8+ft9+ft10
999
1003
 
1000
- itme_list=['Tradeable stocks',
1001
- 'Stock Price Level',
1002
- '.....Prev close mean',
1003
- '.....Today open mean',
1004
- '.....Current price mean',
1005
- 'Stock Price Up-down',
1006
- '.....Current change%',
1007
- '.....Last 5 min change%',
1008
- 'Today vs. Prev',
1009
- '.....Amplitude%',
1010
- '.....Change% mean',
1011
- '.....Change mean(RMB)']
1012
- df['Item']=itme_list
1004
+ if lang == "English":
1005
+ itme_list=['Tradeable stocks',
1006
+ 'Stock Price Level',
1007
+ '.....Prev close mean',
1008
+ '.....Today open mean',
1009
+ '.....Current price mean',
1010
+ 'Stock Price Up-down',
1011
+ '.....Current change%',
1012
+ '.....Last 5 min change%',
1013
+ 'Today vs. Prev',
1014
+ '.....Amplitude%',
1015
+ '.....Change% mean',
1016
+ '.....Change mean(RMB)']
1017
+ df['Item']=itme_list
1013
1018
 
1014
1019
  df_display_CSS(df,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
1015
1020
  first_col_align='left',second_col_align='right', \
@@ -1035,14 +1040,15 @@ def market_detail_china2(category='price',
1035
1040
 
1036
1041
  footnote=ft0+ft1+ft2+ft3+ft4+ft5+ft6 + ft9+ft10
1037
1042
 
1038
- itme_list=['Tradeable stocks',
1039
- 'Volume Level Today',
1040
- '.....Volume mean(million)',
1041
- '.....Amount mean(100 millions)',
1042
- '.....Turnover rate mean %',
1043
- 'Today vs. Prev',
1044
- '.....Volume ratio(times)']
1045
- df['Item']=itme_list
1043
+ if lang == "English":
1044
+ itme_list=['Tradeable stocks',
1045
+ 'Volume Level Today',
1046
+ '.....Volume mean(million)',
1047
+ '.....Amount mean(100 millions)',
1048
+ '.....Turnover rate mean %',
1049
+ 'Today vs. Prev',
1050
+ '.....Volume ratio(times)']
1051
+ df['Item']=itme_list
1046
1052
 
1047
1053
  df_display_CSS(df,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
1048
1054
  first_col_align='left',second_col_align='right', \
@@ -1066,18 +1072,19 @@ def market_detail_china2(category='price',
1066
1072
 
1067
1073
  footnote=ft0+ft1+ft2+ft3+ft4 + ft9+ft10
1068
1074
 
1069
- itme_list=['Tradeable stocks',
1070
- 'MRQ Investment Return',
1071
- '.....MRQ change% mean',
1072
- '.....MRQ change% median',
1073
- '.....MRQ change% std',
1074
- '.....MRQ rising stock%',
1075
- 'YTD Investment Return',
1076
- '.....YTD change% mean',
1077
- '.....YTD change% median',
1078
- '.....YTD change% std',
1079
- '.....YTD rising stock%']
1080
- df['Item']=itme_list
1075
+ if lang == "English":
1076
+ itme_list=['Tradeable stocks',
1077
+ 'MRQ Investment Return',
1078
+ '.....MRQ change% mean',
1079
+ '.....MRQ change% median',
1080
+ '.....MRQ change% std',
1081
+ '.....MRQ rising stock%',
1082
+ 'YTD Investment Return',
1083
+ '.....YTD change% mean',
1084
+ '.....YTD change% median',
1085
+ '.....YTD change% std',
1086
+ '.....YTD rising stock%']
1087
+ df['Item']=itme_list
1081
1088
 
1082
1089
  df_display_CSS(df,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
1083
1090
  first_col_align='left',second_col_align='right', \
@@ -1102,28 +1109,29 @@ def market_detail_china2(category='price',
1102
1109
 
1103
1110
  footnote=ft0+ft1+ft2+ft3+ft4+ft5 + ft9+ft10
1104
1111
 
1105
- itme_list=['Tradeable stocks',
1106
- 'Total Market Cap (TMC)',
1107
- '.....Whole Market TMC(trillion)',
1108
- '.....Stock TMC mean(billion)',
1109
- '.....Stock TMC median(billion)',
1110
- '.....Stock TMC std/mean',
1111
- 'Outstanding Market Cap (OMC)',
1112
- '.....Whole Market OMC(trillion)',
1113
- '.....Whole Market outstanding %',
1114
- '.....Stock OMC mean(billion)',
1115
- '.....Stock OMC median(billion)',
1116
- '.....Stock OMC std/mean',
1117
- 'Valuation: P/E',
1118
- '.....Stock P/E mean',
1119
- '.....Stock P/E median',
1120
- '.....Stock P/E std/mean',
1121
- 'Valuation: P/B',
1122
- '.....Stock P/B mean',
1123
- '.....Stock P/B median',
1124
- '.....Stock P/B std/mean']
1125
-
1126
- df['Item']=itme_list
1112
+ if lang == "English":
1113
+ itme_list=['Tradeable stocks',
1114
+ 'Total Market Cap (TMC)',
1115
+ '.....Whole Market TMC(trillion)',
1116
+ '.....Stock TMC mean(billion)',
1117
+ '.....Stock TMC median(billion)',
1118
+ '.....Stock TMC std/mean',
1119
+ 'Outstanding Market Cap (OMC)',
1120
+ '.....Whole Market OMC(trillion)',
1121
+ '.....Whole Market outstanding %',
1122
+ '.....Stock OMC mean(billion)',
1123
+ '.....Stock OMC median(billion)',
1124
+ '.....Stock OMC std/mean',
1125
+ 'Valuation: P/E',
1126
+ '.....Stock P/E mean',
1127
+ '.....Stock P/E median',
1128
+ '.....Stock P/E std/mean',
1129
+ 'Valuation: P/B',
1130
+ '.....Stock P/B mean',
1131
+ '.....Stock P/B median',
1132
+ '.....Stock P/B std/mean']
1133
+
1134
+ df['Item']=itme_list
1127
1135
 
1128
1136
 
1129
1137
  df_display_CSS(df,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
siat/security_price2.py CHANGED
@@ -290,7 +290,7 @@ def get_price_mticker(ticker,fromdate,todate, \
290
290
  if ticker_num == 1:
291
291
  df,found=get_price_1ticker(ticker=ticker_list[0],fromdate=fromdate,todate=todate, \
292
292
  adjust=adjust_list[0],source=source_list[0], \
293
- ticker_type=ticker_type_list[0])
293
+ ticker_type=ticker_type_list[0],fill=fill)
294
294
 
295
295
  #多个普通证券
296
296
  if ticker_num > 1:
@@ -301,7 +301,8 @@ def get_price_mticker(ticker,fromdate,todate, \
301
301
  tt=ticker_type_list[pos]
302
302
 
303
303
  #普通单个证券
304
- dft,found=get_price_1ticker(t,fromdate,todate,adjust=at,source=st,ticker_type=tt)
304
+ dft,found=get_price_1ticker(t,fromdate,todate,adjust=at,source=st, \
305
+ ticker_type=tt,fill=fill)
305
306
  if found=='Found':
306
307
  columns=create_tuple_for_columns(dft,t)
307
308
  dft.columns=pd.MultiIndex.from_tuples(columns)
@@ -653,6 +654,9 @@ def get_price_1ticker_mixed(ticker,fromdate,todate, \
653
654
  df,found=get_price_1portfolio(ticker=ticker,fromdate=fromdate,todate=todate, \
654
655
  ticker_type=ticker_type,source=source, \
655
656
  adjust=adjust,fill=fill)
657
+ #对空缺值填充,以免影响后续计算
658
+ df=df.fillna(method='ffill')
659
+ df=df.fillna(method='bfill')
656
660
 
657
661
  return df,found
658
662
 
siat/stock.py CHANGED
@@ -474,10 +474,10 @@ def stock_price(ticker,fromdate,todate,adj=False, \
474
474
  lang=check_language()
475
475
  if lang == 'English':
476
476
  titletxt=texttranslate("Security Price Trend:")+tickername
477
- footnote=texttranslate("Source: sina/stooq/yahoo,")+str(today)
477
+ footnote=texttranslate("Data source: Sina/Stooq/Yahoo/EM, ")+str(today)
478
478
  else:
479
479
  titletxt=texttranslate("证券价格走势图:")+tickername
480
- footnote=texttranslate("数据来源:新浪/东方财富/stooq/yahoo,")+str(today)
480
+ footnote=texttranslate("数据来源:Sina/EM/Stooq/Yahoo,")+str(today)
481
481
 
482
482
  pricetype='Close'
483
483
  import pandas as pd
@@ -706,7 +706,7 @@ def security_indicator(ticker,indicator, \
706
706
  titletxt1=text_lang("证券趋势分析:","Security Trend: ")
707
707
  titletxt=titletxt1+ticker_name(ticker,ticker_type=ticker_type)
708
708
  import datetime; todaydt = datetime.date.today()
709
- sourcetxt=text_lang("数据来源:新浪/东方财富/stooq/雅虎财经,","Data source: Sina/EM/Stooq/Yahoo, ")
709
+ sourcetxt=text_lang("数据来源:Sina/EM/Stooq/Yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")
710
710
  footnote=sourcetxt+str(todaydt)
711
711
  collabel=ectranslate(indicator)
712
712
 
@@ -788,7 +788,7 @@ def stock_ret(ticker,fromdate,todate, \
788
788
  return
789
789
 
790
790
  import datetime; todaydt = datetime.date.today()
791
- footnote=text_lang("数据来源:综合新浪/东方财富/stooq/雅虎财经,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
791
+ footnote=text_lang("数据来源:Sina/EM/Stooq/Yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
792
792
  collabel=ectranslate(rtype)
793
793
  ylabeltxt=ectranslate(rtype)
794
794
  titletxt=text_lang("证券趋势分析:","Security Trend: ")+ticker_name(ticker,ticker_type=ticker_type)+text_lang(",收益率",", Rate of Return")
@@ -927,7 +927,7 @@ def security_mindicators(ticker,measures,
927
927
 
928
928
  y_label=text_lang('证券指标',"Indicator")
929
929
  import datetime; todaydt = datetime.date.today()
930
- x_label=text_lang("数据来源:综合新浪/东方财富/stooq/yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
930
+ x_label=text_lang("数据来源:Sina/EM/Stooq/Yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
931
931
 
932
932
  axhline_value=0
933
933
  axhline_label=''
@@ -995,7 +995,7 @@ def stock_price_volatility(ticker,fromdate,todate,type="Weekly Price Volatility"
995
995
 
996
996
  titletxt=texttranslate("证券价格波动风险走势图:")+ticker_name(ticker)
997
997
  import datetime; today = datetime.date.today()
998
- footnote=texttranslate("数据来源:新浪/东方财富/stooq,")+str(today)
998
+ footnote=texttranslate("数据来源:Sina/EM/Stooq/Yahoo,")+str(today)
999
999
  collabel=ectranslate(type)
1000
1000
  ylabeltxt=ectranslate(type)
1001
1001
  pltdf=erdf[erdf.index >= fromdate]
@@ -1052,7 +1052,7 @@ def price_volatility2(pricedf,ticker,fromdate,todate, \
1052
1052
 
1053
1053
  titletxt=text_lang("证券趋势分析:","Security Trend: ")+ticker_name(ticker,ticker_type=ticker_type)+text_lang(",价格波动风险",", Price Volatility Risk")
1054
1054
  import datetime; todaydt = datetime.date.today()
1055
- footnote=texttranslate("数据来源:综合新浪/东方财富/stooq/yahoo,")+str(todaydt)
1055
+ footnote=texttranslate("数据来源:Sina/EM/Stooq/Yahoo,")+str(todaydt)
1056
1056
  collabel=ectranslate(type)
1057
1057
  ylabeltxt=ectranslate(type)
1058
1058
  pltdf=erdf[erdf.index >= fromdate]
@@ -1111,7 +1111,7 @@ def stock_ret_volatility(ticker,fromdate,todate,type="Weekly Ret Volatility%",da
1111
1111
 
1112
1112
  titletxt=texttranslate("证券收益率波动风险走势图:")+ticker_name(ticker)
1113
1113
  import datetime; today = datetime.date.today()
1114
- footnote=texttranslate("数据来源:新浪/东方财富/stooq,")+str(today)
1114
+ footnote=texttranslate("数据来源:Sina/EM/Stooq/Yahoo,")+str(today)
1115
1115
  collabel=ectranslate(type)
1116
1116
  ylabeltxt=ectranslate(type)
1117
1117
  pltdf=erdf[erdf.index >= fromdate]
@@ -1171,7 +1171,7 @@ def ret_volatility2(retdf,ticker,fromdate,todate, \
1171
1171
 
1172
1172
  titletxt=text_lang("证券趋势分析:","Security Trend: ")+ticker_name(ticker,ticker_type=ticker_type)+text_lang(",收益率波动风险",", Return Volatility Risk")
1173
1173
  import datetime; todaydt = datetime.date.today()
1174
- footnote=text_lang("数据来源:综合新浪/东方财富/stooq/yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
1174
+ footnote=text_lang("数据来源:Sina/EM/Stooq/Yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
1175
1175
  collabel=ectranslate(type)
1176
1176
  ylabeltxt=ectranslate(type)
1177
1177
  pltdf=erdf[erdf.index >= fromdate]
@@ -1230,7 +1230,7 @@ def ret_lpsd(ticker,fromdate,todate,type="Weekly Ret Volatility%",datatag=False,
1230
1230
 
1231
1231
  titletxt=texttranslate("证券收益率波动损失风险走势图:")+ticker_name(ticker)
1232
1232
  import datetime; today = datetime.date.today()
1233
- footnote=texttranslate("数据来源:新浪/东方财富/stooq,")+str(today)
1233
+ footnote=texttranslate("数据来源:Sina/EM/Stooq/Yahoo,")+str(today)
1234
1234
  collabel=ectranslate(type)
1235
1235
  ylabeltxt=ectranslate(type)
1236
1236
  pltdf=erdf[erdf.index >= fromdate]
@@ -1288,7 +1288,7 @@ def ret_lpsd2(retdf,ticker,fromdate,todate, \
1288
1288
 
1289
1289
  titletxt=text_lang("证券趋势分析:","Security Trend: ")+ticker_name(ticker,ticker_type=ticker_type)+text_lang("波动损失风险","Volatility Loss Risk")
1290
1290
  import datetime; todaydt = datetime.date.today()
1291
- footnote=text_lang("数据来源:综合新浪/东方财富/stooq/yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
1291
+ footnote=text_lang("数据来源:Sina/EM/Stooq/Yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")+str(todaydt)
1292
1292
  collabel=ectranslate(rtype)
1293
1293
  ylabeltxt=ectranslate(rtype)
1294
1294
  pltdf=erdf[erdf.index >= fromdate]
@@ -1351,7 +1351,7 @@ def comp_1security_2measures(df,measure1,measure2,twinx=False, \
1351
1351
  titletxt=text_lang("证券趋势分析:","Security Trend: ")+tname
1352
1352
 
1353
1353
  import datetime; todaydt = datetime.date.today()
1354
- footnote1=text_lang("数据来源:综合Sina/EM/Stooq/Yahoo,","Source: Sina/EM/Stooq/Yahoo, ")
1354
+ footnote1=text_lang("数据来源:Sina/EM/Stooq/Yahoo,","Source: Sina/EM/Stooq/Yahoo, ")
1355
1355
  footnote=footnote1+str(todaydt)
1356
1356
 
1357
1357
  #绘图
@@ -1421,7 +1421,7 @@ def comp_2securities_1measure(df1,df2,measure,twinx=False,loc1='upper left', \
1421
1421
  titletxt=titletxt1+tname1+" vs "+tname2
1422
1422
 
1423
1423
  import datetime; todaydt = datetime.date.today()
1424
- footnote1=text_lang("数据来源:综合/东方财富/stooq/yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")
1424
+ footnote1=text_lang("数据来源:Sina/EM/Stooq/Yahoo,","Data source: Sina/EM/Stooq/Yahoo, ")
1425
1425
  footnote=footnote1+str(todaydt)+text_lang("统计","")
1426
1426
 
1427
1427
  plot_line2(df1,ticker1,measure,label,df2,ticker2,measure,label, \
@@ -1963,7 +1963,7 @@ def compare_msecurity(tickers,measure,start,end, \
1963
1963
  #y_label='指标'
1964
1964
  y_label='指标对比'
1965
1965
 
1966
- x_label1cn="数据来源: 综合Sina/EM/Stooq/Yahoo等,"
1966
+ x_label1cn="数据来源: Sina/EM/Stooq/Yahoo"
1967
1967
  x_label1en="Source: Sina/EM/Stooq/Yahoo, "
1968
1968
  x_label1=text_lang(x_label1cn,x_label1en)
1969
1969
  import datetime; todaydt = datetime.date.today()
@@ -2478,7 +2478,7 @@ def candlestick_demo(stkcd,fromdate,todate, \
2478
2478
  titletxt0=text_lang("K线图/蜡烛图演示:","Candlestick Chart Demo: ")
2479
2479
  titletxt=titletxt0 + ticker_name(str(stkcd),ticker_type=ticker_type)
2480
2480
  price_txt=text_lang('价格','Price')
2481
- source_txt=text_lang("数据来源: 综合新浪/Stooq/雅虎等","Data source: Sina/Stooq/Yahoo")
2481
+ source_txt=text_lang("数据来源: Sina/EM/Stooq/Yahoo","Data source: Sina/Stooq/Yahoo")
2482
2482
 
2483
2483
  plt.title(titletxt,fontsize=title_txt_size,fontweight='bold')
2484
2484
  plt.ylabel(price_txt,fontsize=ylabel_txt_size)
@@ -3977,7 +3977,7 @@ def compare_mmeasure(ticker,measures,fromdate,todate, \
3977
3977
  y_label=''
3978
3978
  import datetime; today = datetime.date.today()
3979
3979
 
3980
- x_label=text_lang("数据来源: 综合新浪/Yahoo/stooq,","Data source: Sina/Yahoo/Stooq, ")+str(today)
3980
+ x_label=text_lang("数据来源: Sina/EM/Stooq/Yahoo,","Data source: Sina/Yahoo/Stooq/EM, ")+str(today)
3981
3981
  title_txt=text_lang("证券趋势分析:","Security Trend: ")+ticker_name(ticker)
3982
3982
 
3983
3983
  draw_lines(df3,y_label=y_label,x_label=x_label, \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siat
3
- Version: 3.4.1
3
+ Version: 3.4.3
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
@@ -1,5 +1,5 @@
1
1
  siat/__init__ -20240701.py,sha256=gP5uajXnJesnH5SL0ZPwq_Qhv59AG1bs4qwZv26Fo2Y,2894
2
- siat/__init__.py,sha256=NJn2HSa0cdet21YFoJs5nafHgrM3H3J3wdtFYi1KzfM,2065
2
+ siat/__init__.py,sha256=sJP_LlLfNAssg5ZCPxxkVMi2v6h5x3WcSco3KBN5CsE,2040
3
3
  siat/allin.py,sha256=mGm28SxvGGiNAsg6RleiqgyFQvrpgQZERYqpPkdDzPw,2851
4
4
  siat/alpha_vantage_test.py,sha256=tKr-vmuFH3CZAqwmISz6jzjPHzV1JJl3sPfZdz8aTfM,747
5
5
  siat/assets_liquidity.py,sha256=o_UZdLs693uNWPEQB2OzxDH0mdWimOmq4qe_vx1pue0,28987
@@ -41,8 +41,8 @@ siat/financial_statements_test.py,sha256=FLhx8JD-tVVWSBGux6AMz1jioXX4U4bp9DmgFHY
41
41
  siat/financials.py,sha256=mbEZSNeHMMFcnPUryQWvdmNlWQvpnOG9eItgS7IVw3k,80458
42
42
  siat/financials2 - 副本.py,sha256=dKlNjIfKeoSy055fQ6E6TUj9HEoO5Ney9grD84J5kfk,14389
43
43
  siat/financials2.py,sha256=7mnsTncKsgwFu8PP4refh5C5iMIO9P0KOMSF87ZyncY,45736
44
- siat/financials_china.py,sha256=CJHMZAWwE0dTYqCL_ffgpbt_UkuJ26InAM0j7CpLGUg,190406
45
- siat/financials_china2.py,sha256=8qOHl617G_54GlqVJIUfXCitJy0pkEDRil30tpkuHJ0,92665
44
+ siat/financials_china.py,sha256=BkfY8A3YH2_NRyqIwGZ3MA1dq75VGhMaTqE0SAlbYrk,191413
45
+ siat/financials_china2.py,sha256=UgLKLoRbWkKLdpQYBN6pkK55DLoBRdEFminkUuU56qI,92718
46
46
  siat/financials_china2_test.py,sha256=Erz5k4LyOplBBvYls2MypuqHpVNJ3daiLdyeJezNPu0,2722
47
47
  siat/financials_china2_test2.py,sha256=C8CuYTMHN4Mhp-sTu-Bmg0zMXRCaYV6ezGDoYartRYQ,3507
48
48
  siat/financials_china2_test3.py,sha256=UXYSA80DNSPRhHpovc2MA9JkpILWMAQaRatbWCHBNPs,3118
@@ -66,7 +66,7 @@ siat/holding_risk.py,sha256=G3wpaewAKF9CwEqRpr4khyuDu9SU2EGyQUHdk7cmHOA,30693
66
66
  siat/holding_risk_test.py,sha256=FRlw_9wFG98BYcg_cSj95HX5WZ1TvkGaOUdXD7-V86s,474
67
67
  siat/local_debug_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
68
68
  siat/luchy_draw.py,sha256=8Ue-NKnvSVqINPY1eXat0NJat5MR-gex_K62aOYFdmA,20486
69
- siat/market_china.py,sha256=EOO-RvdnzJThTrgNHWW3TlWhx4k4rfdjbooOnQsYdQU,50299
69
+ siat/market_china.py,sha256=W39wwOG9qr0-NQuOXH8gIKEyA6OiThiju8KHOV-G73o,50732
70
70
  siat/markowitz.py,sha256=DsfS6vG9TAfdJP4GgN-CCArujPi84XjD23CWbxaA2o4,97627
71
71
  siat/markowitz2-20240620.py,sha256=irZAPnjaatFsKQmFRMENP-cO6bEUl2narYtkU5NKTWI,108019
72
72
  siat/markowitz2.py,sha256=LK2pDEtE5PUmBtCHmCcRs8FlPqZKmhFXiuLIL4JeQa8,121991
@@ -97,7 +97,7 @@ siat/risk_free_rate_test.py,sha256=CpmhUf8aEAEZeNu4gvWP2Mz2dLoIgBX5bI41vfUBEr8,4
97
97
  siat/sector_china.py,sha256=nP6kfYsnaQWZj8dK-zklwSDW8FDS-obZWp_zL0ec2Ig,118603
98
98
  siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
99
99
  siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
100
- siat/security_price2.py,sha256=4xvc9AzRhLKJMu6AxVzIqcn1-NrHoeCF2Ao2p9nwYjU,25978
100
+ siat/security_price2.py,sha256=65s64L68aRZdVVK3V8UYxdPd_JHMqgJ2FBJJX5MSW-Q,26174
101
101
  siat/security_prices.py,sha256=2aLBSyVRfcZ1-5jqF_r3N02RvlaNNqssJS9GgxGidgM,106235
102
102
  siat/security_prices_test.py,sha256=OEphoJ87NPKoNow1QA8EU_5MUYrJF-qKoWKNapVfZNI,10779
103
103
  siat/security_trend.py,sha256=o0vpWdrJkmODCP94X-Bvn-w7efHhj9HpUYBHtLl55D0,17240
@@ -105,7 +105,7 @@ siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmW
105
105
  siat/security_trend2.py,sha256=lUMab8HilXIUPo_z9ZkztMiZ5kf3jAbbCwPPkYbQ1TI,25288
106
106
  siat/setup.py,sha256=up65rQGLmTBkhtaMLowjoQXYmIsnycnm4g1SYmeQS6o,1335
107
107
  siat/shenwan index history test.py,sha256=JCVAzOSEldHalhSFa3pqD8JI_8_djPMQOxpkuYU-Esg,1418
108
- siat/stock.py,sha256=cKtez5i9G143rSw7rRll6rRIFTWnQ3RaHF7CVnu7qk8,152571
108
+ siat/stock.py,sha256=ouP2nnjYqgzAol0ljQHnnMPfG63U0NrEdME75w2J_ps,152394
109
109
  siat/stock_advice_linear.py,sha256=-twT7IGP-NEplkL1WPSACcNJjggRB2j4mlAQCkzOAuo,31655
110
110
  siat/stock_base.py,sha256=uISvbRyOGy8p9QREA96CVydgflBkn5L3OXOGKl8oanc,1312
111
111
  siat/stock_china.py,sha256=zyUyghIrkkkYWlHRRP7Hoblxzfp-jrck60pTJpwMahg,91553
@@ -139,7 +139,7 @@ siat/valuation_china.py,sha256=EkZQaVkoBjM0c4MCNbaX-bMnlG0e3FXeaWczZDnkptU,67784
139
139
  siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
140
140
  siat/var_model_validation.py,sha256=R0caWnuZarrRg9939hxh3vJIIpIyPfvelYmzFNZtPbo,14910
141
141
  siat/yf_name.py,sha256=H1EM8YYXA8nQHIqsJlso0I3HKPiJLT3QujO4gRVQXWs,13945
142
- siat-3.4.1.dist-info/METADATA,sha256=0s5TpzHfnUzzwRFnFeoBNXS-3miIuEZglezF2dKX0rs,7309
143
- siat-3.4.1.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
144
- siat-3.4.1.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
145
- siat-3.4.1.dist-info/RECORD,,
142
+ siat-3.4.3.dist-info/METADATA,sha256=BdluGvWZfaW-u4lZ4vOXaiYFqvURkobsftROJxS5Fh8,7309
143
+ siat-3.4.3.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
144
+ siat-3.4.3.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
145
+ siat-3.4.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.38.4)
2
+ Generator: bdist_wheel (0.41.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5