siat 3.2.51__py3-none-any.whl → 3.2.53__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
siat/common.py CHANGED
@@ -2436,6 +2436,17 @@ def descriptive_statistics2(df,titletxt,footnote,decimals=4,sortby='tpw_mean', \
2436
2436
  titile_font_size=font_size
2437
2437
  heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
2438
2438
 
2439
+ dst6.rename(columns={"比较对象":text_lang("比较对象","Securities"), \
2440
+ "最小值":text_lang("最小值","Minimum"), \
2441
+ "最大值":text_lang("最大值","Maximum"), \
2442
+ "中位数":text_lang("中位数","Median"), \
2443
+ "平均值":text_lang("平均值","Mean"), \
2444
+ "标准差":text_lang("标准差","Std Dev"), \
2445
+ "近期优先加权平均":text_lang("近期优先加权平均","RWA"), \
2446
+ "期间趋势":text_lang("期间趋势","Periodic Trend"), \
2447
+ "近期趋势":text_lang("近期趋势","Recent Trend"), \
2448
+ "推荐标记":text_lang("推荐标记","Recommend")},inplace=True)
2449
+
2439
2450
  df_display_CSS(dst6,titletxt=titletxt,footnote=footnote,facecolor=facecolor, \
2440
2451
  titile_font_size=titile_font_size,heading_font_size=heading_font_size, \
2441
2452
  data_font_size=data_font_size)
siat/luchy_draw.py CHANGED
@@ -195,7 +195,7 @@ def lucky_draw_header_modify(course,file_path="current",pickle_path="current", \
195
195
  'skiprows':skiprows,'column':column,'draw_limit':draw_limit, \
196
196
  'absent_limit':absent_limit,'pass_limit':pass_limit}
197
197
 
198
- pickle_write(header_dict,pickle_path,overlap_confirm=False)
198
+ pickle_write(header_dict,header_path,overlap_confirm=False)
199
199
  print(header_path,"is modified in",cur_dir)
200
200
 
201
201
  return
@@ -282,7 +282,7 @@ def lucky_draw_detail_add(course,name):
282
282
 
283
283
  #写回明细文件
284
284
  if added:
285
- pickle_write(df,header_dict['pickle_path'],overlap_confirm=False)
285
+ pickle_write(df,detail_path,overlap_confirm=False)
286
286
 
287
287
  return
288
288
 
@@ -326,7 +326,7 @@ def lucky_draw_detail_remove(course,name):
326
326
 
327
327
  #写回明细文件
328
328
  if found:
329
- pickle_write(df,header_dict['pickle_path'],overlap_confirm=False)
329
+ pickle_write(df,detail_path,overlap_confirm=False)
330
330
 
331
331
  return
332
332
 
@@ -635,7 +635,7 @@ def compare_1ticker_mrar(ticker,start,end,rar=['sharpe','sortino','treynor','alp
635
635
 
636
636
  footnote1="注:基于"+ectranslate(ret_type)+","
637
637
  if RF !=0:
638
- footnote2="年化无风险利率为"+str(round(RF*100,4))+'%。'
638
+ footnote2="年化无风险利率为"+str(round(RF*100,4))+text_lang('%。','%')
639
639
  else:
640
640
  footnote2="不考虑年化无风险利率时。"
641
641
 
@@ -644,7 +644,7 @@ def compare_1ticker_mrar(ticker,start,end,rar=['sharpe','sortino','treynor','alp
644
644
  footnote3="贝塔系数回归期间"+str(regression_period)+"个自然日"
645
645
 
646
646
  import datetime; todaydt = datetime.date.today()
647
- footnote4="数据来源: 综合新浪/stooq/Yahoo,"+str(todaydt)+"统计"
647
+ footnote4=text_lang("数据来源: 综合新浪/Stooq/Yahoo,","Data source: Sina/Stooq/Yahoo, ")+str(todaydt)
648
648
  if footnote3 !='':
649
649
  footnotex=footnote1+footnote2+footnote3+'\n'+footnote4
650
650
  else:
@@ -654,8 +654,8 @@ def compare_1ticker_mrar(ticker,start,end,rar=['sharpe','sortino','treynor','alp
654
654
  if graph:
655
655
  y_label=''
656
656
  import datetime; todaydt = datetime.date.today()
657
- x_label="数据来源: 综合新浪/stooq/Yahoo,"+str(todaydt)
658
- title_txt="风险调整收益:"+tname
657
+ x_label=text_lang("数据来源: 综合新浪/Stooq/Yahoo,","Data source: Sina/Stooq/Yahoo, ")+str(todaydt)
658
+ title_txt=text_lang("风险调整收益:","Risk-adjusted Return: ")+tname
659
659
 
660
660
  draw_lines(df1,y_label,x_label=footnotex, \
661
661
  axhline_value=axhline_value,axhline_label=axhline_label, \
@@ -667,25 +667,22 @@ def compare_1ticker_mrar(ticker,start,end,rar=['sharpe','sortino','treynor','alp
667
667
  #制表
668
668
  recommenddf=pd.DataFrame()
669
669
  if printout:
670
- #删除含有Nan的行
671
- df1.dropna(inplace=True)
672
-
673
670
  if sortby=='tpw_mean':
674
- sortby_txt='按推荐标记+近期优先加权平均值降序排列'
671
+ sortby_txt=text_lang('按推荐标记+近期优先加权平均值降序排列',"by Recommend + RWA, Descending")
675
672
  elif sortby=='min':
676
- sortby_txt='按推荐标记+最小值降序排列'
673
+ sortby_txt=text_lang('按推荐标记+最小值降序排列',"by Recommend + Min, Descending")
677
674
  elif sortby=='mean':
678
- sortby_txt='按推荐标记+平均值降序排列'
675
+ sortby_txt=text_lang('按推荐标记+平均值降序排列',"by Recommend + Mean, Descending")
679
676
  elif sortby=='median':
680
- sortby_txt='按推荐标记+中位数值降序排列'
677
+ sortby_txt=text_lang('按推荐标记+中位数值降序排列',"by Recommend + Median, Descending")
681
678
  elif sortby=='trailing':
682
- sortby_txt='按推荐标记+短期均值走势降序排列'
679
+ sortby_txt=text_lang('按推荐标记+短期均值走势降序排列',"by Recommend + Recent Trend, Descending")
683
680
 
684
681
  #title_txt='***** 风险调整收益评估:'+tname+','+sortby_txt+' *****'
685
- title_txt='风险调整收益评估:'+tname+','+sortby_txt
682
+ title_txt=text_lang('风险调整收益评估:基于',"RAR Evaluation: Based on ")+ectranslate(rar)+text_lang(',',', ')+sortby_txt
686
683
 
687
- footnote6='期间:'+str(start)+'至'+str(end)+";近期指近"+str(trailing)+"个交易日。趋势变化率阈值:"+str(trend_threshhold)+"。"
688
- footnote7="近期优先趋势和星号为多项因素综合研判,最多五颗星"
684
+ footnote6=text_lang('期间为',"Period: ")+str(start)+text_lang('至'," to ")+str(end)+text_lang(";近期指近","; Recent uses ")+str(trailing)+text_lang("个交易日。趋势变化率阈值:", " trading days. Trend change threshhold ")+str(trend_threshhold)
685
+ footnote7=text_lang("近期优先趋势和星号为风险调整收益指标加趋势等多项因素综合研判,最多五颗星","Recent trend rated by multiple factors, Recommend max 5 stars. RWA=Recent Weighted Average")
689
686
  footnotey=footnote6+footnote7+'\n'+footnotex
690
687
 
691
688
  recommenddf=descriptive_statistics2(df1,title_txt,footnotey,decimals=4, \
@@ -796,18 +793,18 @@ def compare_mticker_1rar(ticker,start,end,rar='sharpe', \
796
793
  #df1.rename(columns={c:ticker_name(c)},inplace=True)
797
794
 
798
795
  #共同脚注
799
- footnote1=ectranslate(rar)+"基于"+ectranslate(ret_type)+"。"
796
+ footnote1=text_lang("注:","Notes: ")+ectranslate(rar)+text_lang("基于"," is based on ")+ectranslate(ret_type)+text_lang("。",", ")
800
797
  if RF !=0:
801
- footnote2="年化无风险利率"+str(round(RF*100,4))+'%。'
798
+ footnote2=text_lang("年化无风险利率","annual RF = ")+str(round(RF*100,4))+text_lang('%。','%')
802
799
  else:
803
- footnote2="假设年化无风险利率为零。"
800
+ footnote2=text_lang("假设年化无风险利率为零。","assuming annual RF = 0.")
804
801
 
805
802
  footnote3=''
806
803
  if rar.lower() in ['treynor','alpha']:
807
804
  footnote3="贝塔系数回归期间"+str(regression_period)+"个自然日"
808
805
 
809
806
  import datetime; todaydt = datetime.date.today()
810
- footnote4="数据来源: 综合新浪/stooq/Yahoo,"+str(todaydt)+"统计"
807
+ footnote4=text_lang("数据来源: 综合新浪/Stooq/Yahoo,","Data source: Sina/Stooq/Yahoo, ")+str(todaydt)
811
808
  if footnote3 !='':
812
809
  footnotex=footnote1+footnote2+footnote3+'\n'+footnote4
813
810
  else:
@@ -815,7 +812,7 @@ def compare_mticker_1rar(ticker,start,end,rar='sharpe', \
815
812
 
816
813
  #绘图
817
814
  if graph:
818
- title_txt="风险调整收益:"+ectranslate(rar)
815
+ title_txt=text_lang("风险调整收益:","Risk-adjusted Return: ")+ectranslate(rar)
819
816
  y_label=ectranslate(rar)
820
817
 
821
818
  draw_lines(df1,y_label,x_label=footnotex, \
@@ -826,24 +823,24 @@ def compare_mticker_1rar(ticker,start,end,rar='sharpe', \
826
823
  facecolor=facecolor,loc=loc1)
827
824
 
828
825
  #制表
829
- #recommenddf=pd.DataFrame()
826
+ recommenddf=pd.DataFrame()
830
827
  if printout:
831
828
  if sortby=='tpw_mean':
832
- sortby_txt='按推荐标记+近期优先加权平均值降序排列'
829
+ sortby_txt=text_lang('按推荐标记+近期优先加权平均值降序排列',"by Recommend + RWA, Descending")
833
830
  elif sortby=='min':
834
- sortby_txt='按推荐标记+最小值降序排列'
831
+ sortby_txt=text_lang('按推荐标记+最小值降序排列',"by Recommend + Min, Descending")
835
832
  elif sortby=='mean':
836
- sortby_txt='按推荐标记+平均值降序排列'
833
+ sortby_txt=text_lang('按推荐标记+平均值降序排列',"by Recommend + Mean, Descending")
837
834
  elif sortby=='median':
838
- sortby_txt='按推荐标记+中位数值降序排列'
835
+ sortby_txt=text_lang('按推荐标记+中位数值降序排列',"by Recommend + Median, Descending")
839
836
  elif sortby=='trailing':
840
- sortby_txt='按推荐标记+短期均值走势降序排列'
837
+ sortby_txt=text_lang('按推荐标记+短期均值走势降序排列',"by Recommend + Recent Trend, Descending")
841
838
 
842
839
  #title_txt='***** 风险调整收益评估:基于'+ectranslate(rar)+','+sortby_txt+' *****'
843
- title_txt='风险调整收益评估:基于'+ectranslate(rar)+','+sortby_txt
840
+ title_txt=text_lang('风险调整收益评估:基于',"RAR Evaluation: Based on ")+ectranslate(rar)+text_lang(',',', ')+sortby_txt
844
841
 
845
- footnote6='期间为'+str(start)+'至'+str(end)+";近期指近"+str(trailing)+"个交易日。趋势变化率阈值:"+str(trend_threshhold)
846
- footnote7="近期优先趋势和星号为风险调整收益指标加趋势等多项因素综合研判,最多五颗星"
842
+ footnote6=text_lang('期间为',"Period: ")+str(start)+text_lang('至'," to ")+str(end)+text_lang(";近期指近","; Recent uses ")+str(trailing)+text_lang("个交易日。趋势变化率阈值:", " trading days. Trend change threshhold ")+str(trend_threshhold)
843
+ footnote7=text_lang("近期优先趋势和星号为风险调整收益指标加趋势等多项因素综合研判,最多五颗星","Recent trend rated by multiple factors, Recommend max 5 stars. RWA=Recent Weighted Average")
847
844
  footnotey=footnote6+'\n'+footnote7+'\n'+footnotex
848
845
 
849
846
  #不能简单删除含有Nan的行,否则导致清空df1,应该进行填充
@@ -1027,7 +1024,7 @@ def compare_mticker_mrar(ticker,start,end,rar=['sharpe','alpha','sortino','treyn
1027
1024
  if RF !=0:
1028
1025
  footnote2="年化无风险利率"+str(round(RF*100,4))+'%'
1029
1026
  else:
1030
- footnote2="假设年化无风险利率为零"
1027
+ footnote2=text_lang("假设年化无风险利率为零","Assume annual RF = 0")
1031
1028
 
1032
1029
  footnote3=''
1033
1030
  if 'treynor' in rar or 'alpha' in rar:
@@ -1037,7 +1034,7 @@ def compare_mticker_mrar(ticker,start,end,rar=['sharpe','alpha','sortino','treyn
1037
1034
  footnote3="贝塔系数基于"+mktidx_name+",回归期间"+str(regression_period)+"个自然日"
1038
1035
 
1039
1036
  import datetime; todaydt = datetime.date.today()
1040
- footnote4="数据来源: 综合新浪/stooq/Yahoo,"+str(todaydt)+"统计"
1037
+ footnote4=text_lang("数据来源: 综合新浪/Stooq/Yahoo,","Data source: Sina/Stooq/Yahoo, ")+str(todaydt)+text_lang("统计",'')
1041
1038
  if footnote3 !='':
1042
1039
  footnotex=footnote1+footnote2+'\n'+footnote3+'\n'+footnote4
1043
1040
  else:
@@ -1117,7 +1114,7 @@ def compare_1ticker_1rar_mret(ticker,start,end,rar='sharpe', \
1117
1114
  break
1118
1115
  else:
1119
1116
  dft=df_tmp[[rar]]
1120
- dft.rename(columns={rar:"基于"+ectranslate(t)},inplace=True)
1117
+ dft.rename(columns={rar:text_lang("基于","Based on ")+ectranslate(t)},inplace=True)
1121
1118
 
1122
1119
  if len(df)==0: #第一个
1123
1120
  df=dft
@@ -1138,16 +1135,16 @@ def compare_1ticker_1rar_mret(ticker,start,end,rar='sharpe', \
1138
1135
  #共同脚注
1139
1136
  footnote1="注:"
1140
1137
  if RF !=0:
1141
- footnote2="年化无风险利率为"+str(round(RF*100,4))+'%。'
1138
+ footnote2="年化无风险利率为"+str(round(RF*100,4))+text_lang('%。','%')
1142
1139
  else:
1143
- footnote2="假设年化无风险利率为零。"
1140
+ footnote2=text_lang("假设年化无风险利率为零。","Assume annual RF = 0")
1144
1141
 
1145
1142
  footnote3=''
1146
1143
  if rar.lower() in ['treynor','alpha']:
1147
1144
  footnote3="贝塔系数回归期间"+str(regression_period)+"个自然日"
1148
1145
 
1149
1146
  import datetime; todaydt = datetime.date.today()
1150
- footnote4="数据来源: 综合新浪/stooq/Yahoo,"+str(todaydt)+"统计"
1147
+ footnote4=text_lang("数据来源: 综合新浪/Stooq/Yahoo,","Data source: Sina/Stooq/Yahoo, ")+str(todaydt)
1151
1148
  if footnote3 !='':
1152
1149
  footnotex=footnote1+footnote2+footnote3+'\n'+footnote4
1153
1150
  else:
@@ -1156,7 +1153,7 @@ def compare_1ticker_1rar_mret(ticker,start,end,rar='sharpe', \
1156
1153
  #绘图
1157
1154
  if graph:
1158
1155
 
1159
- title_txt="风险调整收益:"+ticker_name(ticker,ticker_type)
1156
+ title_txt=text_lang("风险调整收益:","Risk-adjusted Return: ")+ticker_name(ticker,ticker_type)
1160
1157
  y_label=ectranslate(rar)
1161
1158
 
1162
1159
  draw_lines(df1,y_label,x_label=footnotex, \
@@ -1170,21 +1167,21 @@ def compare_1ticker_1rar_mret(ticker,start,end,rar='sharpe', \
1170
1167
  recommenddf=pd.DataFrame()
1171
1168
  if printout:
1172
1169
  if sortby=='tpw_mean':
1173
- sortby_txt='按推荐标记+近期优先加权平均值降序排列'
1170
+ sortby_txt=text_lang('按推荐标记+近期优先加权平均值降序排列',"by Recommend + RWA, Descending")
1174
1171
  elif sortby=='min':
1175
- sortby_txt='按推荐标记+最小值降序排列'
1172
+ sortby_txt=text_lang('按推荐标记+最小值降序排列',"by Recommend + Min, Descending")
1176
1173
  elif sortby=='mean':
1177
- sortby_txt='按推荐标记+平均值降序排列'
1174
+ sortby_txt=text_lang('按推荐标记+平均值降序排列',"by Recommend + Mean, Descending")
1178
1175
  elif sortby=='median':
1179
- sortby_txt='按推荐标记+中位数值降序排列'
1176
+ sortby_txt=text_lang('按推荐标记+中位数值降序排列',"by Recommend + Median, Descending")
1180
1177
  elif sortby=='trailing':
1181
- sortby_txt='按推荐标记+短期均值走势降序排列'
1178
+ sortby_txt=text_lang('按推荐标记+短期均值走势降序排列',"by Recommend + Recent Trend, Descending")
1182
1179
 
1183
1180
  #title_txt='***** 风险调整收益评估:'+'基于'+ectranslate(rar)+','+ticker_name(ticker,ticker_type)+','+sortby_txt+' *****'
1184
- title_txt='风险调整收益评估:'+'基于'+ectranslate(rar)+','+ticker_name(ticker,ticker_type)+''+sortby_txt
1181
+ title_txt=text_lang('风险调整收益评估:基于',"RAR Evaluation: Based on ")+ectranslate(rar)+text_lang(',',', ')+sortby_txt
1185
1182
 
1186
- footnote6='期间:'+str(start)+'至'+str(end)+";近期指近"+str(trailing)+"个交易日。趋势变化率阈值:"+str(trend_threshhold)+"。"
1187
- footnote7="近期优先趋势和星号为多项因素综合研判,最多五颗星"
1183
+ footnote6=text_lang('期间为',"Period: ")+str(start)+text_lang('至'," to ")+str(end)+text_lang(";近期指近","; Recent means ")+str(trailing)+text_lang("个交易日。趋势变化率阈值:", " trading days. Trend change threshhold is ")+str(trend_threshhold)
1184
+ footnote7=text_lang("近期优先趋势和星号为风险调整收益指标加趋势等多项因素综合研判,最多五颗星","Recent trend is rated by multiple factors, Recommend max 5 stars. RWA=Recent Weighted Average")
1188
1185
  footnotey=footnote6+footnote7+'\n'+footnotex
1189
1186
 
1190
1187
  #删除含有Nan的行
@@ -1264,7 +1261,7 @@ def compare_1ticker_1rar_1ret_mRF(ticker,start,end,rar='sharpe', \
1264
1261
  break
1265
1262
  else:
1266
1263
  dft=df_tmp[[rar]]
1267
- dft.rename(columns={rar:"基于无风险利率"+str(round(t*100,4))+'%'},inplace=True)
1264
+ dft.rename(columns={rar:text_lang("基于无风险利率","Based on RF=")+str(round(t*100,4))+'%'},inplace=True)
1268
1265
 
1269
1266
  if len(df)==0: #第一个
1270
1267
  df=dft
@@ -1283,7 +1280,7 @@ def compare_1ticker_1rar_1ret_mRF(ticker,start,end,rar='sharpe', \
1283
1280
  #df1.rename(columns={c:"基于无风险利率"+c},inplace=True)
1284
1281
 
1285
1282
  #共同脚注
1286
- footnote1="注:"+ectranslate(rar)+"基于"+ectranslate(ret_type)+'。'
1283
+ footnote1=text_lang("注:","Notes: ")+ectranslate(rar)+text_lang("基于"," is based on ")+ectranslate(ret_type)+'。'
1287
1284
  footnote2=""
1288
1285
 
1289
1286
  footnote3=""
@@ -1291,7 +1288,7 @@ def compare_1ticker_1rar_1ret_mRF(ticker,start,end,rar='sharpe', \
1291
1288
  footnote3="贝塔系数回归期间"+str(regression_period)+"个自然日"
1292
1289
 
1293
1290
  import datetime; todaydt = datetime.date.today()
1294
- footnote4="数据来源: 综合新浪/stooq/Yahoo,"+str(todaydt)+"统计"
1291
+ footnote4=text_lang("数据来源: 综合新浪/Stooq/Yahoo,","Data source: Sina/Stooq/Yahoo, ")+str(todaydt)
1295
1292
  if footnote3 !='':
1296
1293
  footnotex=footnote1+footnote3+'\n'+footnote4
1297
1294
  else:
@@ -1300,7 +1297,7 @@ def compare_1ticker_1rar_1ret_mRF(ticker,start,end,rar='sharpe', \
1300
1297
  #绘图
1301
1298
  if graph:
1302
1299
 
1303
- title_txt="风险调整收益:"+ticker_name(ticker,ticker_type)
1300
+ title_txt=text_lang("风险调整收益:","Risk-adjusted Return: ")+ticker_name(ticker,ticker_type)
1304
1301
  y_label=ectranslate(rar)
1305
1302
 
1306
1303
  draw_lines(df1,y_label,x_label=footnotex, \
@@ -1314,21 +1311,21 @@ def compare_1ticker_1rar_1ret_mRF(ticker,start,end,rar='sharpe', \
1314
1311
  recommenddf=pd.DataFrame()
1315
1312
  if printout:
1316
1313
  if sortby=='tpw_mean':
1317
- sortby_txt='按推荐标记+近期优先加权平均值降序排列'
1314
+ sortby_txt=text_lang('按推荐标记+近期优先加权平均值降序排列',"by Recommend + RWA, Descending")
1318
1315
  elif sortby=='min':
1319
- sortby_txt='按推荐标记+最小值降序排列'
1316
+ sortby_txt=text_lang('按推荐标记+最小值降序排列',"by Recommend + Min, Descending")
1320
1317
  elif sortby=='mean':
1321
- sortby_txt='按推荐标记+平均值降序排列'
1318
+ sortby_txt=text_lang('按推荐标记+平均值降序排列',"by Recommend + Mean, Descending")
1322
1319
  elif sortby=='median':
1323
- sortby_txt='按推荐标记+中位数值降序排列'
1320
+ sortby_txt=text_lang('按推荐标记+中位数值降序排列',"by Recommend + Median, Descending")
1324
1321
  elif sortby=='trailing':
1325
- sortby_txt='按推荐标记+短期均值走势降序排列'
1322
+ sortby_txt=text_lang('按推荐标记+短期均值走势降序排列',"by Recommend + Recent Trend, Descending")
1326
1323
 
1327
1324
  #title_txt='***** 风险调整收益评估:'+'基于'+ectranslate(rar)+','+ticker_name(ticker,ticker_type)+','+sortby_txt+' *****'
1328
- title_txt='风险调整收益评估:'+'基于'+ectranslate(rar)+','+ticker_name(ticker,ticker_type)+''+sortby_txt
1325
+ title_txt=text_lang('风险调整收益评估:基于',"RAR Evaluation: Based on ")+ectranslate(rar)+text_lang(',',', ')+sortby_txt
1329
1326
 
1330
- footnote6='期间为'+str(start)+'至'+str(end)+";近期指近"+str(trailing)+"个交易日。趋势变化率阈值:"+str(trend_threshhold)+"。"
1331
- footnote7="近期优先趋势和星号为多项因素综合研判,最多五颗星"
1327
+ footnote6=text_lang('期间为',"Period: ")+str(start)+text_lang('至'," to ")+str(end)+text_lang(";近期指近","; Recent uses ")+str(trailing)+text_lang("个交易日。趋势变化率阈值:", " trading days. Trend change threshhold ")+str(trend_threshhold)
1328
+ footnote7=text_lang("近期优先趋势和星号为风险调整收益指标加趋势等多项因素综合研判,最多五颗星","Recent trend rated by multiple factors, Recommend max 5 stars. RWA=Recent Weighted Average")
1332
1329
  footnotey=footnote6+footnote7+'\n'+footnotex
1333
1330
 
1334
1331
  #删除含有Nan的行
@@ -1374,7 +1371,7 @@ if __name__=='__main__':
1374
1371
  rars=compare_rar_security(ticker,start,end,rar,ret_type,RF,printout=True)
1375
1372
 
1376
1373
  def compare_rar_security(ticker,start,end,rar='sharpe', \
1377
- ret_type="Annual Ret%", \
1374
+ ret_type="Annual Adj Ret%", \
1378
1375
  RF=0, \
1379
1376
  regression_period=365, \
1380
1377
  graph=True,loc1='best', \
siat/security_prices.py CHANGED
@@ -960,7 +960,7 @@ def get_price_ak_us(symbol, fromdate, todate, adjust=""):
960
960
  """
961
961
  抓取单个美股股价,不能处理股指
962
962
  """
963
- import pandas as pd
963
+ import pandas as pd #此处需要,去掉会出错!
964
964
  DEBUG=False
965
965
 
966
966
  #检查日期期间
@@ -975,26 +975,25 @@ def get_price_ak_us(symbol, fromdate, todate, adjust=""):
975
975
  import akshare as ak
976
976
  if DEBUG:
977
977
  print(" Searching info in Sina for",symbol,"... ...")
978
- #try:
979
- if adjust=='':
980
- df=ak.stock_us_daily(symbol=symbol,adjust=adjust)
981
- elif adjust=='Adj_only':
982
- df=ak.stock_us_daily(symbol=symbol,adjust='qfq')
983
- df['Adj Close']=df['close']
984
-
985
- else:
986
- #分别获取收盘价和复权价,并合成
987
- dffqno=ak.stock_us_daily(symbol=symbol,adjust='')
988
- dffq=ak.stock_us_daily(symbol=symbol,adjust='qfq')
989
- dffq.rename(columns={'close':'Adj Close'},inplace=True)
990
-
991
- df=pd.merge(dffqno,dffq[['date','Adj Close']],on=['date'])
992
- """
978
+ try:
979
+ if adjust=='':
980
+ df=ak.stock_us_daily(symbol=symbol,adjust=adjust)
981
+ elif adjust=='Adj_only':
982
+ df=ak.stock_us_daily(symbol=symbol,adjust='qfq')
983
+ df['Adj Close']=df['close']
984
+
985
+ else:
986
+ #分别获取收盘价和复权价,并合成
987
+ dffqno=ak.stock_us_daily(symbol=symbol,adjust='')
988
+ dffq=ak.stock_us_daily(symbol=symbol,adjust='qfq')
989
+ dffq.rename(columns={'close':'Adj Close'},inplace=True)
990
+
991
+ df=pd.merge(dffqno,dffq[['date','Adj Close']],on=['date'])
993
992
  except:
994
993
  if DEBUG:
995
994
  print(" #Error(get_price_ak_us): no info found for",symbol)
996
995
  return None
997
- """
996
+
998
997
  #去掉可能出现的时区信息,必须使用datetime中的tz_localize
999
998
  df['date']=pd.to_datetime(df['date'])
1000
999
  #df['date']=df['date'].tz_localize(None)
siat/security_trend2.py CHANGED
@@ -97,7 +97,7 @@ def security_trend(ticker,indicator='Close',adjust='', \
97
97
 
98
98
  dividend=False,split=False, \
99
99
 
100
- ret_type='Annual Ret%',RF=0,regression_period=365,market_index="auto", \
100
+ ret_type='Annual Adj Ret%',RF=0,regression_period=365,market_index="auto", \
101
101
  sortby='tpw_mean',trailing=7,trend_threshhold=0.05, \
102
102
 
103
103
  band_area='', \
siat/stock.py CHANGED
@@ -1350,7 +1350,7 @@ def comp_1security_2measures(df,measure1,measure2,twinx=False, \
1350
1350
  titletxt=text_lang("证券趋势分析:","Security Trend: ")+tname
1351
1351
 
1352
1352
  import datetime; todaydt = datetime.date.today()
1353
- footnote1=text_lang("数据来源:综合新浪/东方财富/stooq/yahoo,","Source: integrating sina/eastmoney/stooq/yahoo, ")
1353
+ footnote1=text_lang("数据来源:综合Sina/EM/Stooq/Yahoo,","Source: Sina/EM/Stooq/Yahoo, ")
1354
1354
  footnote=footnote1+str(todaydt)
1355
1355
 
1356
1356
  #绘图
@@ -1962,13 +1962,13 @@ def compare_msecurity(tickers,measure,start,end, \
1962
1962
  #y_label='指标'
1963
1963
  y_label='指标对比'
1964
1964
 
1965
- x_label1cn="数据来源: 综合新浪/东方财富/stooq/yahoo等,"
1966
- x_label1en="Source: integrating sina/stooq/yahoo, "
1965
+ x_label1cn="数据来源: 综合Sina/EM/Stooq/Yahoo等,"
1966
+ x_label1en="Source: Sina/EM/Stooq/Yahoo, "
1967
1967
  x_label1=text_lang(x_label1cn,x_label1en)
1968
1968
  import datetime; todaydt = datetime.date.today()
1969
1969
  x_label=x_label1+str(todaydt)
1970
1970
 
1971
- title_txt1=text_lang("证券趋势对比分析","Trend Comparative Analysis")
1971
+ title_txt1=text_lang("证券趋势分析","Security Trend")
1972
1972
  if y_label != '':
1973
1973
  title_txt=title_txt1+": "+y_label
1974
1974
  else:
siat/stock_technical.py CHANGED
@@ -867,7 +867,7 @@ def security_MACD(ticker,start='default',end='default', \
867
867
  resample_freq='6H',smooth=True,linewidth=1.5, \
868
868
  loc1='lower left',loc2='lower right', \
869
869
  graph=['ALL'],printout=True,ticker_type='auto',source='auto', \
870
- price_line_color='red'):
870
+ price_line_color='red',facecolor='k'):
871
871
  """
872
872
  套壳函数:可用于股票、交易所债券、交易所基金、部分期货期权(限美股)
873
873
  """
@@ -878,7 +878,7 @@ def security_MACD(ticker,start='default',end='default', \
878
878
  resample_freq=resample_freq,smooth=smooth,linewidth=linewidth, \
879
879
  loc1=loc1,loc2=loc2, \
880
880
  graph=graph,printout=printout,ticker_type=ticker_type,source=source, \
881
- price_line_color=price_line_color)
881
+ price_line_color=price_line_color,facecolor=facecolor)
882
882
  return df
883
883
 
884
884
 
@@ -888,7 +888,7 @@ def stock_MACD(ticker,start='default',end='default', \
888
888
  resample_freq='H',smooth=True,linewidth=1.5, \
889
889
  loc1='lower left',loc2='lower right', \
890
890
  graph=['ALL'],printout=True,ticker_type='auto',source='auto', \
891
- price_line_color='red'):
891
+ price_line_color='red',facecolor='k'):
892
892
  """
893
893
  功能:计算股票的技术分析指标MACD
894
894
  输入:df,四种股价Open/Close/High/Low,成交量Volume
@@ -991,7 +991,7 @@ def stock_MACD(ticker,start='default',end='default', \
991
991
 
992
992
  print(" Rendering graphics ...")
993
993
  draw_lines(df2,y_label,x_label,axhline_value,axhline_label,title_txt, \
994
- data_label=False,resample_freq=resample_freq,smooth=smooth,linewidth=linewidth*2)
994
+ data_label=False,resample_freq=resample_freq,smooth=smooth,linewidth=linewidth*2,facecolor=facecolor)
995
995
 
996
996
  if printout:
997
997
  if len(dft3)!=0:
@@ -1046,7 +1046,7 @@ def stock_MACD(ticker,start='default',end='default', \
1046
1046
  df3.rename(columns={'Close':text_lang('收盘价','Close')},inplace=True)
1047
1047
  title_txt=text_lang("证券价格走势分析:","Security Trend: ")+ticker_name(ticker,ticker_type)+text_lang(",指数移动平均线","Exponential MA Line")
1048
1048
  draw_lines(df3,y_label,x_label,axhline_value,axhline_label,title_txt, \
1049
- data_label=False,resample_freq=resample_freq,smooth=smooth,linewidth=linewidth*2)
1049
+ data_label=False,resample_freq=resample_freq,smooth=smooth,linewidth=linewidth*2,facecolor=facecolor)
1050
1050
 
1051
1051
  if printout:
1052
1052
  if len(dft3)!=0:
@@ -1107,6 +1107,8 @@ def stock_MACD(ticker,start='default',end='default', \
1107
1107
  df1=df[(df.index >= startpd) & (df.index <= endpd)]
1108
1108
 
1109
1109
  # MACD绘图
1110
+ print('') #空一行
1111
+
1110
1112
  df4=df1[['Close','DIF','DEA','MACD']]
1111
1113
  df4.rename(columns={'Close':'收盘价','DIF':'快线DIF','DEA':'慢线DEA','MACD':'柱线MACD'},inplace=True)
1112
1114
  title_txt=text_lang("证券价格走势分析:","Security Trend: ")+ticker_name(ticker,ticker_type)+",MACD"
@@ -1120,7 +1122,8 @@ def stock_MACD(ticker,start='default',end='default', \
1120
1122
  # 设置绘图区的背景颜色为黑色
1121
1123
  fig=plt.figure()
1122
1124
  ax=fig.add_subplot(111)
1123
- ax.patch.set_facecolor('black')
1125
+ #ax.patch.set_facecolor('black')
1126
+ ax.patch.set_facecolor(color=facecolor)
1124
1127
 
1125
1128
  # 绘制曲线
1126
1129
  ax.plot(df4['快线DIF'],label=text_lang('快线DIF','DIF(Fast line)'),linewidth=linewidth*2,color='white')
@@ -1241,7 +1244,7 @@ def security_RSI(ticker,start='default',end='default', \
1241
1244
  resample_freq='6H',smooth=True,linewidth=1.5, \
1242
1245
  loc1='lower left',loc2='lower right', \
1243
1246
  graph=['ALL'],printout=True,ticker_type='auto',source='auto', \
1244
- price_line_color='red'):
1247
+ price_line_color='red',facecolor='k'):
1245
1248
  """
1246
1249
  套壳函数,除了股票,还可用于交易所债券和交易所基金(如ETF和REITS)
1247
1250
  """
@@ -1250,7 +1253,7 @@ def security_RSI(ticker,start='default',end='default', \
1250
1253
  resample_freq=resample_freq,smooth=smooth,linewidth=linewidth, \
1251
1254
  loc1=loc1,loc2=loc2, \
1252
1255
  graph=graph,printout=printout,ticker_type=ticker_type,source=source, \
1253
- price_line_color=price_line_color)
1256
+ price_line_color=price_line_color,facecolor=facecolor)
1254
1257
  return df
1255
1258
 
1256
1259
 
@@ -1259,7 +1262,7 @@ def stock_RSI(ticker,start='default',end='default', \
1259
1262
  resample_freq='H',smooth=True,linewidth=1.5, \
1260
1263
  loc1='lower left',loc2='lower right', \
1261
1264
  graph=['ALL'],printout=True,ticker_type='auto',source='auto', \
1262
- price_line_color='red'):
1265
+ price_line_color='red',facecolor='k'):
1263
1266
  """
1264
1267
  功能:计算股票的技术分析指标RSI
1265
1268
  输入:df,四种股价Open/Close/High/Low,成交量Volume
@@ -1368,7 +1371,7 @@ def stock_RSI(ticker,start='default',end='default', \
1368
1371
  # 设置绘图区的背景颜色为黑色
1369
1372
  fig=plt.figure()
1370
1373
  ax=fig.add_subplot(111)
1371
- ax.patch.set_facecolor('black')
1374
+ ax.patch.set_facecolor(color=facecolor)
1372
1375
 
1373
1376
  # 绘制曲线
1374
1377
  if ('RSI1' in graph) or ('ALL' in graph):
@@ -1379,7 +1382,8 @@ def stock_RSI(ticker,start='default',end='default', \
1379
1382
  ax.plot(df4['RSI3'],label=text_lang('慢速(月)线RSI3','RSI3(1 month, Slow line)'),linewidth=linewidth*2,color='white')
1380
1383
 
1381
1384
  # 绘制水平辅助线
1382
- hl_linestyle_list=['dashed','-.','dotted']
1385
+ #hl_linestyle_list=['dashed','-.','dotted']
1386
+ hl_linestyle_list=['dotted','dotted','dotted','dotted','dotted','dotted']
1383
1387
  #plt.axhline(y=0,label='指标零线',color='cyan',linestyle=':',linewidth=linewidth*2)
1384
1388
  for hl in RSI_lines:
1385
1389
  pos=RSI_lines.index(hl)
@@ -1489,7 +1493,7 @@ def security_KDJ(ticker,start='default',end='default', \
1489
1493
  resample_freq='6H',smooth=True,linewidth=1.5, \
1490
1494
  loc1='lower left',loc2='lower right', \
1491
1495
  graph=['ALL'],printout=True,ticker_type='auto',source='auto', \
1492
- price_line_color='red'):
1496
+ price_line_color='red',facecolor='k'):
1493
1497
  """
1494
1498
  套壳函数
1495
1499
  """
@@ -1498,7 +1502,7 @@ def security_KDJ(ticker,start='default',end='default', \
1498
1502
  resample_freq=resample_freq,smooth=smooth,linewidth=linewidth, \
1499
1503
  loc1=loc1,loc2=loc2, \
1500
1504
  graph=graph,printout=printout,ticker_type=ticker_type,source=source, \
1501
- price_line_color=price_line_color)
1505
+ price_line_color=price_line_color,facecolor=facecolor)
1502
1506
  return df
1503
1507
 
1504
1508
 
@@ -1507,7 +1511,7 @@ def stock_KDJ(ticker,start='default',end='default', \
1507
1511
  resample_freq='H',smooth=True,linewidth=1.5, \
1508
1512
  loc1='lower left',loc2='lower right', \
1509
1513
  graph=['ALL'],printout=True,ticker_type='auto',source='auto', \
1510
- price_line_color='red'):
1514
+ price_line_color='red',facecolor='k'):
1511
1515
  """
1512
1516
  功能:计算股票的技术分析指标KDJ
1513
1517
  输入:df,四种股价Open/Close/High/Low,成交量Volume
@@ -1637,7 +1641,7 @@ def stock_KDJ(ticker,start='default',end='default', \
1637
1641
  # 设置绘图区的背景颜色为黑色
1638
1642
  fig=plt.figure()
1639
1643
  ax=fig.add_subplot(111)
1640
- ax.patch.set_facecolor('black')
1644
+ ax.patch.set_facecolor(color=facecolor)
1641
1645
 
1642
1646
  # 绘制曲线
1643
1647
  if ('K' in graph) or ('ALL' in graph):
@@ -1658,8 +1662,13 @@ def stock_KDJ(ticker,start='default',end='default', \
1658
1662
  minJ=df4['J'].min()
1659
1663
  minKDJ=min(minK,minD,minJ)
1660
1664
 
1665
+ """
1661
1666
  hl_linestyle_list=['dashed','dashed','-.','dotted','dotted']
1662
1667
  hl_color_list=['red','red','white','cyan','cyan']
1668
+ """
1669
+ hl_linestyle_list=['dotted','dotted','dotted','dotted','dotted']
1670
+ hl_color_list=['cyan','cyan','cyan','cyan','cyan']
1671
+
1663
1672
  #plt.axhline(y=0,label='指标零线',color='cyan',linestyle=':',linewidth=linewidth*2)
1664
1673
  for hl in KDJ_lines:
1665
1674
  draw=True
@@ -2159,20 +2168,20 @@ if __name__ =="__main__":
2159
2168
  def security_Bollinger(ticker,start='default',end='default',boll_days=20, \
2160
2169
  graph=True,smooth=True,loc='best', \
2161
2170
  date_range=False,date_freq=False,annotate=False, \
2162
- ticker_type='auto',source='auto'):
2171
+ ticker_type='auto',source='auto',facecolor='white'):
2163
2172
  """
2164
2173
  套壳函数,为了与security_MACD/RSI/KDJ保持相似
2165
2174
  """
2166
2175
  df=stock_Bollinger(ticker=ticker,start=start,end=end,boll_days=boll_days, \
2167
2176
  graph=graph,smooth=smooth,loc=loc, \
2168
2177
  date_range=date_range,date_freq=date_freq, \
2169
- annotate=annotate,ticker_type=ticker_type,source=source)
2178
+ annotate=annotate,ticker_type=ticker_type,source=source,facecolor=facecolor)
2170
2179
  return df
2171
2180
 
2172
2181
  def stock_Bollinger(ticker,start='default',end='default',boll_days=20, \
2173
2182
  graph=True,smooth=True,loc='best', \
2174
2183
  date_range=False,date_freq=False,annotate=False, \
2175
- mark_end=True,ticker_type='auto',source='auto'):
2184
+ mark_end=True,ticker_type='auto',source='auto',facecolor='white'):
2176
2185
  """
2177
2186
  套壳函数,为了与stock_MACD/RSI/KDJ保持相似
2178
2187
  """
@@ -2200,14 +2209,14 @@ def stock_Bollinger(ticker,start='default',end='default',boll_days=20, \
2200
2209
  df=security_bollinger(ticker=ticker,fromdate=start,todate=end,boll_days=boll_days, \
2201
2210
  graph=graph,smooth=smooth,loc=loc, \
2202
2211
  date_range=date_range,date_freq=date_freq,annotate=annotate, \
2203
- mark_end=mark_end,ticker_type=ticker_type,source=source)
2212
+ mark_end=mark_end,ticker_type=ticker_type,source=source,facecolor=facecolor)
2204
2213
  return df
2205
2214
 
2206
2215
 
2207
2216
  def security_bollinger(ticker,fromdate,todate,boll_days=20, \
2208
2217
  graph=True,smooth=True,loc='best', \
2209
2218
  date_range=False,date_freq=False,annotate=False, \
2210
- mark_end=True,ticker_type='auto',source='auto'):
2219
+ mark_end=True,ticker_type='auto',source='auto',facecolor='white'):
2211
2220
  """
2212
2221
  功能:单个证券,绘制布林带
2213
2222
  date_range=False:指定开始结束日期绘图
@@ -2267,7 +2276,8 @@ def security_bollinger(ticker,fromdate,todate,boll_days=20, \
2267
2276
  data_label=False,resample_freq='6H',smooth=smooth, \
2268
2277
  date_range=date_range,date_freq=date_freq,date_fmt='%Y-%m-%d', \
2269
2278
  colorlist=colorlist,lslist=lslist,lwlist=lwlist, \
2270
- band_area=[text_lang('上(压力)线','Upper Line'),text_lang('下(支撑)线','Lower Line')],mark_end=mark_end,loc=loc)
2279
+ band_area=[text_lang('上(压力)线','Upper Line'),text_lang('下(支撑)线','Lower Line')], \
2280
+ mark_end=mark_end,loc=loc,facecolor=facecolor)
2271
2281
 
2272
2282
  return df1
2273
2283
 
@@ -2291,7 +2301,7 @@ def security_Bubble(ticker,start='default',end='default',boll_years=7, \
2291
2301
  indicator='MV', \
2292
2302
  graph=True,smooth=True,loc='best', \
2293
2303
  date_range=False,date_freq=False,annotate=False, \
2294
- mark_end=True):
2304
+ mark_end=True,facecolor='whitesmoke'):
2295
2305
  """
2296
2306
  套壳函数,为了与security_MACD/RSI/KDJ保持相似
2297
2307
  """
@@ -2320,7 +2330,7 @@ def security_Bubble(ticker,start='default',end='default',boll_years=7, \
2320
2330
  indicator=indicator, \
2321
2331
  graph=graph,smooth=smooth,loc=loc, \
2322
2332
  date_range=date_range,date_freq=date_freq,annotate=annotate, \
2323
- mark_end=mark_end)
2333
+ mark_end=mark_end,facecolor=facecolor)
2324
2334
  return df
2325
2335
 
2326
2336
  if __name__ =="__main__":
@@ -2335,7 +2345,7 @@ def security_bubble(ticker,fromdate,todate,boll_years=7, \
2335
2345
  indicator='MV', \
2336
2346
  graph=True,smooth=True,loc='best', \
2337
2347
  date_range=False,date_freq=False,annotate=False, \
2338
- mark_end=True):
2348
+ mark_end=True,facecolor='whitesmoke'):
2339
2349
  """
2340
2350
  功能:单个证券,绘制估值布林带(MV, PE, PB)
2341
2351
  date_range=False:指定开始结束日期绘图
@@ -2444,7 +2454,7 @@ def security_bubble(ticker,fromdate,todate,boll_years=7, \
2444
2454
  date_range=date_range,date_freq=date_freq,date_fmt='%Y-%m-%d', \
2445
2455
  colorlist=colorlist,lslist=lslist,lwlist=lwlist, \
2446
2456
  band_area=['上(压力)线','下(支撑)线'],loc=loc, \
2447
- mark_end=mark_end)
2457
+ mark_end=mark_end,facecolor=facecolor)
2448
2458
 
2449
2459
  return df1
2450
2460
 
@@ -2478,7 +2488,8 @@ def security_technical(ticker,start='default',end='default', \
2478
2488
  date_range=False,date_freq=False,annotate=False, \
2479
2489
  technical=['MACD'],indicator='Close', \
2480
2490
  ticker_type='auto',source='auto', \
2481
- price_line_color='red'):
2491
+ price_line_color='red', \
2492
+ facecolor='k'):
2482
2493
 
2483
2494
  """
2484
2495
  功能:技术分析中的MACD/RSI/KDJ/布林带,支持教学演示,支持参数调节。
@@ -2538,7 +2549,7 @@ def security_technical(ticker,start='default',end='default', \
2538
2549
  resample_freq=resample_freq,smooth=smooth,linewidth=linewidth, \
2539
2550
  loc1=loc1,loc2=loc2, \
2540
2551
  graph=graph1,printout=printout,ticker_type=ticker_type,source=source, \
2541
- price_line_color=price_line_color)
2552
+ price_line_color=price_line_color,facecolor=facecolor)
2542
2553
 
2543
2554
  if 'RSI' in technical1:
2544
2555
  df=security_RSI(ticker=ticker,start=fromdate,end=todate, \
@@ -2546,7 +2557,7 @@ def security_technical(ticker,start='default',end='default', \
2546
2557
  resample_freq=resample_freq,smooth=smooth,linewidth=linewidth, \
2547
2558
  loc1=loc1,loc2=loc2, \
2548
2559
  graph=graph1,printout=printout,ticker_type=ticker_type,source=source, \
2549
- price_line_color=price_line_color)
2560
+ price_line_color=price_line_color,facecolor=facecolor)
2550
2561
 
2551
2562
  if 'KDJ' in technical1:
2552
2563
  df=security_KDJ(ticker=ticker,start=fromdate,end=todate, \
@@ -2554,13 +2565,13 @@ def security_technical(ticker,start='default',end='default', \
2554
2565
  resample_freq=resample_freq,smooth=smooth,linewidth=linewidth, \
2555
2566
  loc1=loc1,loc2=loc2, \
2556
2567
  graph=graph1,printout=printout,ticker_type=ticker_type,source=source, \
2557
- price_line_color=price_line_color)
2568
+ price_line_color=price_line_color,facecolor=facecolor)
2558
2569
 
2559
2570
  if 'Bollinger' in technical1 and 'Close' in indicator1:
2560
2571
  df=security_Bollinger(ticker=ticker,start=fromdate,end=todate,boll_days=boll_days, \
2561
2572
  graph=True,smooth=smooth,loc=loc1, \
2562
2573
  date_range=date_range,date_freq=date_freq,annotate=annotate, \
2563
- ticker_type=ticker_type,source=source)
2574
+ ticker_type=ticker_type,source=source,facecolor=facecolor)
2564
2575
 
2565
2576
  """
2566
2577
  if 'Bollinger' in technical1 and 'MV' in indicator1:
@@ -2596,7 +2607,7 @@ def security_technical(ticker,start='default',end='default', \
2596
2607
  df=security_Bubble(ticker=ticker,start=fromdate,end=todate,boll_years=boll_years, \
2597
2608
  indicator=val, \
2598
2609
  graph=True,smooth=smooth,loc=loc1, \
2599
- date_range=date_range,date_freq=date_freq,annotate=annotate)
2610
+ date_range=date_range,date_freq=date_freq,annotate=annotate,facecolor=facecolor)
2600
2611
 
2601
2612
  return df
2602
2613
 
siat/translate.py CHANGED
@@ -1807,8 +1807,8 @@ def codetranslate1(code):
1807
1807
  ['UBSG.SW','UBS(SW)'],
1808
1808
 
1809
1809
  #股票:高科技
1810
- ['AAPL','Apple'],['Apple','Apple'],['DELL','DELL'],['IBM','IBM'],
1811
- ['MSFT','Microsoft'],['Microsoft','Microsoft'],['HPQ','HP'],['AMD','AMD'],
1810
+ ['AAPL','Apple'],['Apple','Apple'],['DELL','DELL Corp'],['IBM','IBM Corp'],
1811
+ ['MSFT','Microsoft'],['Microsoft','Microsoft'],['HPQ','HP'],['AMD','AMD Corp'],
1812
1812
  ['NVDA','NVidia'],['INTC','Intel'],['QCOM','Qualcomm'],['BB','Blackberry'],
1813
1813
 
1814
1814
  #股票:电商、互联网
@@ -1946,7 +1946,10 @@ def codetranslate1(code):
1946
1946
  ['000057.SS','SSE Growth Index'],['000058.SS','SSE Value Index'],
1947
1947
  ['000019.SS','SSE Governance Index'],['000048.SS','SSE CSR Index'],
1948
1948
 
1949
- ['899050.BJ','BSE50 Index'],
1949
+ ['899050.BJ','BSE50 Index'],['^SPX','Standard & Poor 500 Index'],
1950
+ ['^RUT','Russell 2000 Index'],['^NKX','Nikkei 225 Index'],
1951
+ ['^NDQ','NASDAQ Composite Index'],['^NDX','NASDAQ 100 Index'],
1952
+ ['IBM','IBM Corp'],
1950
1953
 
1951
1954
  ['000002.SS','SSE A Index'],['000003.SS','SSE B Index'],
1952
1955
  ['399107.SZ','SZE A Index'],['399108.SZ','SZE B Index'],
@@ -1957,7 +1960,7 @@ def codetranslate1(code):
1957
1960
  ['399234.SZ','SZE Utility Index'],['399236.SZ','SZE Commercial Index'],
1958
1961
  ['399237.SZ','SZE Logistics Index'],['399240.SZ','SZE Financial Index'],
1959
1962
  ['399241.SZ','SZE Realestate Index'],['399244.SZ','SZE EP Index'],
1960
- ['399991.SZ','SZSE BRI Index'],['399997.SZ','CSI China Baijiu Index'],
1963
+ ['399991.SZ','SZE BRI Index'],['399997.SZ','CSI China Baijiu Index'],
1961
1964
 
1962
1965
  ['000903.SS','CSI100 Index'],['399903.SZ','CSI100 Index'],
1963
1966
  ['000904.SS','CSI200 Index'],['399904.SZ','CSI200 Index'],
@@ -3222,6 +3225,7 @@ if __name__=='__main__':
3222
3225
  ticker='sh010303' #国债/基金重码
3223
3226
  ticker='sh018001' #金融债
3224
3227
  ticker='PDD'
3228
+ ticker='IBM'
3225
3229
 
3226
3230
  ticker_type='auto'
3227
3231
  ticker_type='bond'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siat
3
- Version: 3.2.51
3
+ Version: 3.2.53
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
@@ -18,7 +18,7 @@ siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
18
18
  siat/capm_beta2.py,sha256=07y3q4nJdkM-anpZepj4gK0gvTKj-BB0ppDDI5-TCcY,26904
19
19
  siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
20
20
  siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
21
- siat/common.py,sha256=-0zmR2N_t2xaTyYedwztT7HcHKG39DwaoLoX1u5Wm7s,150656
21
+ siat/common.py,sha256=493MZpsrKnb_RP1myq_uHj0wCdqvDk0kiRBzNF-syQI,151521
22
22
  siat/compare_cross.py,sha256=3iP9TH2h3w27F2ARZc7FjKcErYCzWRc-TPiymOyoVtw,24171
23
23
  siat/compare_cross_test.py,sha256=xra5XYmQGEtfIZL2h-GssdH2hLdFIhG3eoCrkDrL3gY,3473
24
24
  siat/concepts_iwencai.py,sha256=m1YEDtECRT6FqtzlKm91pt2I9d3Z_XoP59BtWdRdu8I,3061
@@ -65,7 +65,7 @@ siat/grafix_test.py,sha256=kXvcpLgQNO7wd30g_bWljLj5UH7bIVI0_dUtXbfiKR0,3150
65
65
  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
- siat/luchy_draw.py,sha256=CESMhLYcsC6UtYfTZOfYnVQ84zz1MnXRN81P7OZHEgE,20516
68
+ siat/luchy_draw.py,sha256=8Ue-NKnvSVqINPY1eXat0NJat5MR-gex_K62aOYFdmA,20486
69
69
  siat/market_china.py,sha256=EOO-RvdnzJThTrgNHWW3TlWhx4k4rfdjbooOnQsYdQU,50299
70
70
  siat/markowitz.py,sha256=glHikhabFAF6Hb6df1pYfhkxid2IZXBYAVQng5wd9Wk,97526
71
71
  siat/markowitz2-20240620.py,sha256=irZAPnjaatFsKQmFRMENP-cO6bEUl2narYtkU5NKTWI,108019
@@ -88,7 +88,7 @@ siat/option_sina_api_test.py,sha256=dn-k_wrQnAaNKHoROvWJEc7lqlU0bwiV2Aa4usWAFGM,
88
88
  siat/proxy_test.py,sha256=erQJrmGs2X46z8Gb1h-7GYQ0rTUcaR8dxHExWoBz2eM,2610
89
89
  siat/quandl_test.py,sha256=EcPoXnLuqzPl5dKyVEZi3j3PJZFpsnU_iNPhLWC9p-A,1552
90
90
  siat/risk_adjusted_return.py,sha256=dWVrCDnoxvMmI6cVtrL_FC18QZFrGb6-k9lOoyy5JGE,55085
91
- siat/risk_adjusted_return2.py,sha256=nK5tO-FIVnECbJD0on2CClQVgCyrkI1pWve1oQERK3k,66310
91
+ siat/risk_adjusted_return2.py,sha256=AkpxKIYv3LL1mvb6Lha4z0sevinsLLmb-ttwiJGHNO0,69083
92
92
  siat/risk_adjusted_return_test.py,sha256=m_VHL5AtT74cJv5i7taTeTfnkX48y0AFJk5phawyYWg,3416
93
93
  siat/risk_evaluation.py,sha256=I6B3gty-t--AkDCO0tKF-291YfpnF-IkXcFjqNKCt9I,76286
94
94
  siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
@@ -98,14 +98,14 @@ 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
100
  siat/security_price2.py,sha256=4xvc9AzRhLKJMu6AxVzIqcn1-NrHoeCF2Ao2p9nwYjU,25978
101
- siat/security_prices.py,sha256=WXC-UNLnuZ69MtC5oLIXbFKX5UeJ_52wRiqHj4LfJW0,105797
101
+ siat/security_prices.py,sha256=LqTrS20mTmM_ACENOXU5qrLmxczGtxnuziAdAynSG_Q,105871
102
102
  siat/security_prices_test.py,sha256=OEphoJ87NPKoNow1QA8EU_5MUYrJF-qKoWKNapVfZNI,10779
103
103
  siat/security_trend.py,sha256=o0vpWdrJkmODCP94X-Bvn-w7efHhj9HpUYBHtLl55D0,17240
104
104
  siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmWBPk,24854
105
- siat/security_trend2.py,sha256=WOygSyWSynNmk5gpOA8n1738-nWqfDzuyMjwriB3eP4,25284
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=cIEVxAZ6vPhpICWk4p4tqpeyidLjxZHO2fF_HClaxHw,152530
108
+ siat/stock.py,sha256=D8S2nAeDOdGv4EymfIH1rZnWGNV82sJgYA4wb88f0nI,152460
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
@@ -117,7 +117,7 @@ siat/stock_prices_kneighbors.py,sha256=WfZvo5EyeBsm-T37zDj7Sl9dPSRq5Bx4JxIJ9IUum
117
117
  siat/stock_prices_linear.py,sha256=-OUKRr27L2aStQgJSlJOrJ4gay_G7P-m-7t7cU2Yoqk,13991
118
118
  siat/stock_profile.py,sha256=B3eIwzEmiCqiCaxIlhfdEPsQBoW1PFOe1hkiY3mVF6Y,26038
119
119
  siat/stock_technical-20240620.py,sha256=A4x18mZgYSA8SSiDz4u_O3gd5oVRgbI6JIiBfFY0tVw,116013
120
- siat/stock_technical.py,sha256=qhXOsZ9gowLtWviMgpTPjIfkgIfDWSRXVPZq4mYL5kM,133336
120
+ siat/stock_technical.py,sha256=X0AqtpCih62-4ff8AnsNGEvDUVoo-sY5hTb3igc5yuE,134230
121
121
  siat/stock_test.py,sha256=E9YJAvOw1VEGJSDI4IZuEjl0tGoisOIlN-g9UqA_IZE,19475
122
122
  siat/stooq.py,sha256=dOc_S5HLrYg48YAKTCs1eX8UTJOOkPM8qLL2KupqlLY,2470
123
123
  siat/temp.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
@@ -131,14 +131,14 @@ siat/transaction_test.py,sha256=Z8g1LJCN4-mnUByXMUMoFmN0t105cbmsz2QmvSuIkbU,1858
131
131
  siat/translate-20230125.py,sha256=NPPSXhT38s5t9fzMvl_fvi4ckSB73ThLmZetVI-xGdU,117953
132
132
  siat/translate-20230206.py,sha256=-vtI125WyaJhmPotOpDAmclt_XnYVaWU9ByLWZ6FyYE,118133
133
133
  siat/translate-20230215.py,sha256=TJgtPE3n8IjljmZ4Pefy8dmHoNdFF-1zpML6BhA9FKE,121657
134
- siat/translate.py,sha256=5o7hSMeNOdyenqiyB5oZwFvIpFvt3yGgp25KZNbqy9o,216309
134
+ siat/translate.py,sha256=LIS4ybfYAk17lOFKu80ZLkvIXnTquBi90wTKcF8BCo0,216547
135
135
  siat/translate_20240606.py,sha256=63IyHWEU3Uz9mjwyuAX3fqY4nUMdwh0ICQAgmgPXP7Y,215121
136
136
  siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
137
137
  siat/valuation.py,sha256=NKfeZMdDJOW42oLVHob6eSVBXUqlN1OCnnzwyGAst8c,48855
138
138
  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
- siat-3.2.51.dist-info/METADATA,sha256=3PAMtgmDyOlUvGAb41VpjG5L2_ZVWfKGjN7qau9xKTc,7310
142
- siat-3.2.51.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
143
- siat-3.2.51.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
144
- siat-3.2.51.dist-info/RECORD,,
141
+ siat-3.2.53.dist-info/METADATA,sha256=CRsgADyYbTDreJlYNKtVB0p0uZdkKN603MoUoWPCwZo,7310
142
+ siat-3.2.53.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
143
+ siat-3.2.53.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
144
+ siat-3.2.53.dist-info/RECORD,,
File without changes