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 +5 -5
- siat/financials_china.py +24 -3
- siat/financials_china2.py +6 -4
- siat/market_china.py +64 -56
- siat/security_price2.py +6 -2
- siat/stock.py +16 -16
- {siat-3.4.1.dist-info → siat-3.4.3.dist-info}/METADATA +1 -1
- {siat-3.4.1.dist-info → siat-3.4.3.dist-info}/RECORD +10 -10
- {siat-3.4.1.dist-info → siat-3.4.3.dist-info}/WHEEL +1 -1
- {siat-3.4.1.dist-info → siat-3.4.3.dist-info}/top_level.txt +0 -0
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
|
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("
|
41
|
+
print("There is a newer version of siat",latest_version,'\n')
|
42
42
|
print("*** How to upgrade siat?")
|
43
|
-
print("Upgrade
|
44
|
-
print("Upgrade from Tsinghua?
|
45
|
-
print("Upgrade from 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
|
-
|
223
|
+
if '股本' in fslist:
|
224
|
+
fs4['实收资本(或股本)']=fs4['股本']
|
225
|
+
if '实收资本净额' in fslist:
|
226
|
+
fs4['实收资本(或股本)']=fs4['实收资本净额']
|
227
|
+
|
222
228
|
|
223
229
|
if not ('流动资产合计' in fslist):
|
224
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
-
|
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
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
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
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
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
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
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
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
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,
|
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("
|
477
|
+
footnote=texttranslate("Data source: Sina/Stooq/Yahoo/EM, ")+str(today)
|
478
478
|
else:
|
479
479
|
titletxt=texttranslate("证券价格走势图:")+tickername
|
480
|
-
footnote=texttranslate("
|
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("
|
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("
|
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("
|
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("
|
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("
|
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("
|
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("
|
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("
|
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("
|
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("
|
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("
|
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="数据来源:
|
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("数据来源:
|
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("数据来源:
|
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,5 +1,5 @@
|
|
1
1
|
siat/__init__ -20240701.py,sha256=gP5uajXnJesnH5SL0ZPwq_Qhv59AG1bs4qwZv26Fo2Y,2894
|
2
|
-
siat/__init__.py,sha256=
|
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=
|
45
|
-
siat/financials_china2.py,sha256=
|
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=
|
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=
|
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=
|
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.
|
143
|
-
siat-3.4.
|
144
|
-
siat-3.4.
|
145
|
-
siat-3.4.
|
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,,
|
File without changes
|