siat 3.1.11__py3-none-any.whl → 3.1.12__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/fund_china.py +47 -20
- siat/sector_china.py +96 -32
- siat/stock_technical.py +2 -2
- {siat-3.1.11.dist-info → siat-3.1.12.dist-info}/METADATA +1 -1
- {siat-3.1.11.dist-info → siat-3.1.12.dist-info}/RECORD +7 -7
- {siat-3.1.11.dist-info → siat-3.1.12.dist-info}/WHEEL +0 -0
- {siat-3.1.11.dist-info → siat-3.1.12.dist-info}/top_level.txt +0 -0
siat/fund_china.py
CHANGED
@@ -20,18 +20,23 @@ from siat.translate import *
|
|
20
20
|
from siat.grafix import *
|
21
21
|
from siat.bond_base import *
|
22
22
|
#==============================================================================
|
23
|
-
def compare_fund_holding_china(ticker,quarters,rank=10):
|
23
|
+
def compare_fund_holding_china(ticker,quarters,rank=10,font_size='14px'):
|
24
24
|
"""
|
25
25
|
功能:套壳函数fund_stock_holding_compare_china
|
26
26
|
"""
|
27
27
|
if len(quarters) < 2:
|
28
28
|
print(" #Warning(compare_fund_holding_china): need 2 quarters to compare at",quarters)
|
29
29
|
return None
|
30
|
+
"""
|
30
31
|
if quarters[0] >= quarters[1]:
|
31
32
|
print(" #Warning(compare_fund_holding_china):",quarters[0],"is supposed to be earlier than",quarters[1])
|
32
33
|
return None
|
33
|
-
|
34
|
-
|
34
|
+
"""
|
35
|
+
#保证较早的季度排在前面
|
36
|
+
quarters.sort()
|
37
|
+
|
38
|
+
df=fund_stock_holding_compare_china(fund=ticker,quarter1=quarters[0],quarter2=quarters[1], \
|
39
|
+
rank=rank,font_size=font_size)
|
35
40
|
|
36
41
|
return df
|
37
42
|
|
@@ -43,13 +48,18 @@ if __name__=='__main__':
|
|
43
48
|
df=fund_stock_holding_compare_china(fund,quarter1,quarter2,rank=10)
|
44
49
|
|
45
50
|
#比较两个季度之间的基金持仓变化
|
46
|
-
def fund_stock_holding_compare_china(fund,quarter1,quarter2,rank=10
|
51
|
+
def fund_stock_holding_compare_china(fund,quarter1,quarter2,rank=10, \
|
52
|
+
font_size='14px'):
|
47
53
|
"""
|
48
54
|
功能:基金fund在两个季度quarter1和quarter2的持仓股票对比(股数和金额),前rank名股票
|
49
55
|
参数:
|
50
56
|
fund,str,基金代码;
|
51
57
|
quarter1,str,靠前的季度, 格式为 'YYYYQ1',例如: '2021Q2';
|
52
58
|
quarter2,str,靠后的季度, 格式为 'YYYYQ1',例如: '2021Q2';
|
59
|
+
|
60
|
+
注意:监管仅要求基金披露前十大重仓股,因此其持仓比例之和一般小于100%;若大于100%,
|
61
|
+
则为基金以其净资产作为抵押加了杠杆融资,买进更多成份股,导致成份股总价值(基金总资产)超过了基金的净资产。
|
62
|
+
基金总资产 = 基金负债 + 基金净资产
|
53
63
|
"""
|
54
64
|
print("Searching fund holding info, which may take time, please wait ...\n")
|
55
65
|
|
@@ -112,6 +122,7 @@ def fund_stock_holding_compare_china(fund,quarter1,quarter2,rank=10):
|
|
112
122
|
|
113
123
|
df1 = df1[['股票代码', '股票名称','持股数','持仓市值','占净值比例']]
|
114
124
|
df1 = df1.rename(columns={'持股数':s1_share,'持仓市值':s1_value,'占净值比例':s1_ratio})
|
125
|
+
num1=len(df1)
|
115
126
|
|
116
127
|
df2 =data[data['季度']==s2]
|
117
128
|
if len(df2)==0:
|
@@ -120,6 +131,7 @@ def fund_stock_holding_compare_china(fund,quarter1,quarter2,rank=10):
|
|
120
131
|
|
121
132
|
df2 = df2[['股票代码', '股票名称','持股数','持仓市值','占净值比例']]
|
122
133
|
df2 = df2.rename(columns={'持股数':s2_share,'持仓市值':s2_value,'占净值比例':s2_ratio})
|
134
|
+
num2=len(df2)
|
123
135
|
|
124
136
|
df_merge = pd.merge(df1,df2,on=['股票代码','股票名称'],how='outer')
|
125
137
|
|
@@ -196,16 +208,17 @@ def fund_stock_holding_compare_china(fund,quarter1,quarter2,rank=10):
|
|
196
208
|
# 替换空值
|
197
209
|
df.fillna('---')
|
198
210
|
"""
|
199
|
-
print("===== 中国基金持仓股票分析:"+name+','+s1+"对比"+s2,"(按后者持仓比例高低排列,"+order+str(rank)+"
|
211
|
+
print("===== 中国基金持仓股票分析:"+name+','+s1+"对比"+s2,"(按后者持仓比例高低排列,"+order+str(rank)+"名重仓股) =====\n")
|
200
212
|
print(df.to_string(index=False))
|
201
213
|
import datetime; today = datetime.date.today()
|
202
214
|
print("\n*** 注:持股数为万股,持仓市值为万元,持仓比例为占基金资产净值比例%,包括A股与非A股")
|
203
215
|
print(" 数据来源:天天基金/东方财富, 期间持仓股票总计"+str(len(df_merge))+"只,",today)
|
204
216
|
"""
|
205
|
-
titletxt="
|
217
|
+
titletxt="基金持仓转移明细:"+name+'基金,'+s1+"对比"+s2+"(按后者持仓比例降序排列,"+order+str(rank)+"名重仓股)"
|
206
218
|
|
207
|
-
footnote1="
|
208
|
-
footnote2="
|
219
|
+
footnote1="【注】持仓数单位为万股,持仓市值单位为万元,持仓比例为成份股价值为占基金资产净值%(以最新期间为准列示)\n"
|
220
|
+
#footnote2=s1+'/'+s2+"期末持仓证券数"+str(num1)+'/'+str(num2)+"只"+'\n'
|
221
|
+
footnote2='监管仅要求披露前十大重仓股,其持仓比例之和一般小于100%;若大于100%则为基金加了杠杆,总资产多于净资产\n'
|
209
222
|
import datetime; todaydt = datetime.date.today()
|
210
223
|
footnote9="数据来源:天天基金/东方财富,"+str(todaydt)+"统计"
|
211
224
|
footnote=footnote1+footnote2+footnote9
|
@@ -227,21 +240,27 @@ def fund_stock_holding_compare_china(fund,quarter1,quarter2,rank=10):
|
|
227
240
|
df=df[collist1]
|
228
241
|
"""
|
229
242
|
df.replace(0,'---',inplace=True); df.replace('0','---',inplace=True)
|
243
|
+
|
244
|
+
#确定表格字体大小
|
245
|
+
titile_font_size=font_size
|
246
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-2)+'px'
|
230
247
|
|
231
248
|
df_display_CSS(df,titletxt=titletxt,footnote=footnote,facecolor='papayawhip',decimals=2, \
|
232
249
|
first_col_align='center',second_col_align='left', \
|
233
250
|
last_col_align='right',other_col_align='right', \
|
234
|
-
titile_font_size=
|
235
|
-
|
251
|
+
titile_font_size=titile_font_size, \
|
252
|
+
heading_font_size=heading_font_size, \
|
253
|
+
data_font_size=data_font_size)
|
236
254
|
|
237
255
|
return df_merge
|
238
256
|
|
239
257
|
#==============================================================================
|
240
|
-
def fund_holding_china(ticker,rank=10,pastyears=2):
|
258
|
+
def fund_holding_china(ticker,rank=10,pastyears=2,reverse=False,font_size='16px'):
|
241
259
|
"""
|
242
260
|
功能:套壳函数fund_stock_holding_rank_china
|
243
261
|
"""
|
244
|
-
df,data=fund_stock_holding_rank_china(fund=ticker,rank=rank,year_num=pastyears
|
262
|
+
df,data=fund_stock_holding_rank_china(fund=ticker,rank=rank,year_num=pastyears, \
|
263
|
+
reverse=reverse,font_size=font_size)
|
245
264
|
|
246
265
|
return df,data
|
247
266
|
|
@@ -253,8 +272,10 @@ if __name__=='__main__':
|
|
253
272
|
df=fund_stock_holding_rank_china(fund,year_num=2)
|
254
273
|
|
255
274
|
# 获取单只基金的十大股票名称信息
|
256
|
-
def fund_stock_holding_rank_china(fund,rank=10,year_num=2
|
275
|
+
def fund_stock_holding_rank_china(fund,rank=10,year_num=2, \
|
276
|
+
reverse=False,font_size='16px'):
|
257
277
|
"""
|
278
|
+
基金的成份股持仓转移矩阵
|
258
279
|
比较股票型基金fund近year_num年持仓的前10大股票排名变化
|
259
280
|
"""
|
260
281
|
print("Searching fund stock holding info, which takes time, please wait ...\n")
|
@@ -373,21 +394,27 @@ def fund_stock_holding_rank_china(fund,rank=10,year_num=2):
|
|
373
394
|
name=get_fund_name_china2(fund)
|
374
395
|
|
375
396
|
#print("=== 基金持仓股票排行分析:"+name+",按照占净值比例高低排列 ===\n")
|
376
|
-
titletxt="
|
397
|
+
titletxt="基金持仓转移矩阵:"+name+"基金,按照占净值比例降序排列,前"+str(rank)+"名重仓股"
|
377
398
|
import datetime; todaydt = datetime.date.today()
|
378
399
|
#print("\n*** 注:包括A股与非A股。持股结构:股票简称(占净值比例%,持股数万股),",str(todaydt))
|
379
400
|
footnote="【注】持仓结构:证券简称(占净值比例%,持仓数万股),"+str(todaydt)+"统计"
|
380
401
|
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
402
|
+
if reverse:
|
403
|
+
#最新的日期放前面
|
404
|
+
collist=list(df)
|
405
|
+
collist.sort(reverse=True)
|
406
|
+
df=df[collist]
|
407
|
+
|
408
|
+
#确定表格字体大小
|
409
|
+
titile_font_size=font_size
|
410
|
+
heading_font_size=data_font_size=str(int(font_size.replace('px',''))-1)+'px'
|
385
411
|
|
386
412
|
df_display_CSS(df,titletxt=titletxt,footnote=footnote,facecolor='papayawhip',decimals=3, \
|
387
413
|
first_col_align='center',second_col_align='left', \
|
388
414
|
last_col_align='left',other_col_align='left', \
|
389
|
-
titile_font_size=
|
390
|
-
|
415
|
+
titile_font_size=titile_font_size, \
|
416
|
+
heading_font_size=heading_font_size, \
|
417
|
+
data_font_size=data_font_size)
|
391
418
|
|
392
419
|
"""
|
393
420
|
alignlist=['center']+['left']*(len(list(df))-1)
|
siat/sector_china.py
CHANGED
@@ -3033,49 +3033,46 @@ def industry_scan_china(sw_level='F', \
|
|
3033
3033
|
|
3034
3034
|
return df2
|
3035
3035
|
|
3036
|
+
|
3036
3037
|
#==============================================================================
|
3037
3038
|
if __name__=='__main__':
|
3038
3039
|
ticker='600791.SS'
|
3039
|
-
|
3040
|
-
|
3041
|
-
|
3040
|
+
ticker='东阿阿胶'
|
3041
|
+
|
3042
|
+
contains_chinese(ticker)
|
3043
|
+
|
3044
|
+
def contains_chinese(text):
|
3042
3045
|
"""
|
3043
|
-
|
3046
|
+
功能:判断字符串是否含有汉字
|
3044
3047
|
"""
|
3045
|
-
|
3046
|
-
|
3047
|
-
import akshare as ak
|
3048
|
-
#df3 = ak.sw_index_third_info()
|
3049
|
-
df2 = ak.sw_index_second_info()
|
3050
|
-
df2['industry_code']=df2['行业代码'].apply(lambda x: x[:6])
|
3051
|
-
industry_list=list(df2['industry_code'])
|
3052
|
-
|
3053
|
-
for i in industry_list:
|
3054
|
-
cdf = ak.index_component_sw(i)
|
3055
|
-
component_list=list(cdf)
|
3056
|
-
|
3057
|
-
if ticker6 in component_list:
|
3058
|
-
stock_name=cdf[cdf["证券代码"]==ticker6]['证券名称'].values[0]
|
3059
|
-
print("股票:",ticker,",",stock_name)
|
3060
|
-
|
3061
|
-
isi=i+'.SI'
|
3062
|
-
industry_name=df3[df3[行业代码]==isi]['行业名称'].values[0]
|
3063
|
-
print("申万三级行业代码:",i+".SW",",",industry_name)
|
3064
|
-
|
3065
|
-
break
|
3066
|
-
|
3067
|
-
return
|
3048
|
+
import re
|
3049
|
+
return re.search(r'[\u4e00-\u9fff]', text) is not None
|
3068
3050
|
|
3069
3051
|
#==============================================================================
|
3070
3052
|
if __name__=='__main__':
|
3071
3053
|
ticker='600791.SS'
|
3054
|
+
|
3055
|
+
ticker=['600791.SS','东阿阿胶']
|
3056
|
+
level='1'
|
3057
|
+
|
3072
3058
|
find_industry_sw(ticker)
|
3073
3059
|
|
3074
|
-
def find_industry_sw(ticker,level='
|
3060
|
+
def find_industry_sw(ticker,level='1',ticker_order=True):
|
3075
3061
|
"""
|
3076
3062
|
功能:寻找一只股票所属的申万行业
|
3077
3063
|
"""
|
3078
|
-
|
3064
|
+
print(" Searching shenwan industries for securities ... ...")
|
3065
|
+
|
3066
|
+
if isinstance(ticker,str):
|
3067
|
+
ticker=[ticker]
|
3068
|
+
|
3069
|
+
tickerlist=[]
|
3070
|
+
for t in ticker:
|
3071
|
+
if not contains_chinese(t):
|
3072
|
+
tt=t[:6]
|
3073
|
+
tickerlist=tickerlist+[tt]
|
3074
|
+
else:
|
3075
|
+
tickerlist=tickerlist+[t]
|
3079
3076
|
|
3080
3077
|
import akshare as ak
|
3081
3078
|
if level == '3':
|
@@ -3088,8 +3085,13 @@ def find_industry_sw(ticker,level='2'):
|
|
3088
3085
|
df['industry_code']=df['行业代码'].apply(lambda x: x[:6])
|
3089
3086
|
industry_list=list(df['industry_code'])
|
3090
3087
|
|
3088
|
+
import pandas as pd; import random; import time
|
3089
|
+
result=pd.DataFrame(columns=['序号','证券名称','证券代码','行业名称','行业代码'])
|
3090
|
+
|
3091
3091
|
for i in industry_list:
|
3092
|
-
print_progress_percent2(i,industry_list,steps=10,leading_blanks=
|
3092
|
+
print_progress_percent2(i,industry_list,steps=10,leading_blanks=2)
|
3093
|
+
|
3094
|
+
iname=df[df['industry_code']==i]['行业名称'].values[0]
|
3093
3095
|
|
3094
3096
|
try:
|
3095
3097
|
cdf = ak.index_component_sw(i)
|
@@ -3097,7 +3099,7 @@ def find_industry_sw(ticker,level='2'):
|
|
3097
3099
|
print(" #Warning(find_industry_sw): server banned this ip becos of too many requests")
|
3098
3100
|
print(" Solution: change to another ip or another computer, or try a few hours later.")
|
3099
3101
|
return
|
3100
|
-
|
3102
|
+
"""
|
3101
3103
|
component_list=list(cdf['证券代码'])
|
3102
3104
|
|
3103
3105
|
if ticker6 in component_list:
|
@@ -3109,8 +3111,70 @@ def find_industry_sw(ticker,level='2'):
|
|
3109
3111
|
print("申万"+str(level)+"级行业代码:"+i+".SW,"+industry_name)
|
3110
3112
|
|
3111
3113
|
break
|
3114
|
+
"""
|
3115
|
+
for t in tickerlist:
|
3116
|
+
torder=tickerlist.index(t)+1
|
3117
|
+
|
3118
|
+
if not contains_chinese(t):
|
3119
|
+
dft=cdf[cdf['证券代码']==t]
|
3120
|
+
if len(dft)==0: continue
|
3121
|
+
else:
|
3122
|
+
tname=cdf[cdf['证券代码']==t]['证券名称'].values[0]
|
3123
|
+
s=pd.Series({'序号':torder,'证券名称':tname,'证券代码':t,'行业名称':iname,'行业代码':i})
|
3124
|
+
try:
|
3125
|
+
result=result.append(s,ignore_index=True)
|
3126
|
+
except:
|
3127
|
+
result=result._append(s,ignore_index=True)
|
3128
|
+
else:
|
3129
|
+
dft=cdf[cdf['证券名称']==t]
|
3130
|
+
if len(dft)==0: continue
|
3131
|
+
else:
|
3132
|
+
tcode=cdf[cdf['证券名称']==t]['证券代码'].values[0]
|
3133
|
+
s=pd.Series({'序号':torder,'证券名称':t,'证券代码':tcode,'行业名称':iname,'行业代码':i})
|
3134
|
+
try:
|
3135
|
+
result=result.append(s,ignore_index=True)
|
3136
|
+
except:
|
3137
|
+
result=result._append(s,ignore_index=True)
|
3138
|
+
|
3139
|
+
#是否都找到了?
|
3140
|
+
if len(result) == len(tickerlist): break
|
3112
3141
|
|
3113
|
-
|
3142
|
+
#生成随机数睡眠,试图防止被反爬虫,不知是否管用!
|
3143
|
+
random_int=random.randint(1,5)
|
3144
|
+
time.sleep(random_int)
|
3145
|
+
|
3146
|
+
#排序
|
3147
|
+
if not ticker_order:
|
3148
|
+
#按行业代码排序
|
3149
|
+
result.sort_values(by='行业代码',inplace=True)
|
3150
|
+
else:
|
3151
|
+
#按ticker顺序排序
|
3152
|
+
result.sort_values(by='序号',inplace=True)
|
3153
|
+
"""
|
3154
|
+
if contains_chinese(tickerlist[0]):
|
3155
|
+
result.sort_values(by='证券名称',key=lambda x: x.map(dict(zip(tickerlist,range(len(tickerlist))))))
|
3156
|
+
else:
|
3157
|
+
result.sort_values(by='证券代码',key=lambda x: x.map(dict(zip(tickerlist,range(len(tickerlist))))))
|
3158
|
+
"""
|
3159
|
+
#result.reset_index(drop=True,inplace=True)
|
3160
|
+
|
3161
|
+
#显示结果
|
3162
|
+
titletxt="证券所属行业:申万"+str(level)+"级行业"
|
3163
|
+
import datetime; todaydt = datetime.date.today()
|
3164
|
+
footnote="数据来源:申万宏源,"+str(todaydt)+"统计"
|
3165
|
+
"""
|
3166
|
+
collist=list(result)
|
3167
|
+
result['序号']=result.index+1
|
3168
|
+
result=result[['序号']+collist]
|
3169
|
+
"""
|
3170
|
+
print('')
|
3171
|
+
df_display_CSS(result,titletxt=titletxt,footnote=footnote,facecolor='papayawhip',decimals=2, \
|
3172
|
+
first_col_align='center',second_col_align='left', \
|
3173
|
+
last_col_align='left',other_col_align='left', \
|
3174
|
+
titile_font_size='16px',heading_font_size='15px', \
|
3175
|
+
data_font_size='15px')
|
3176
|
+
|
3177
|
+
return result
|
3114
3178
|
|
3115
3179
|
#==============================================================================
|
3116
3180
|
#==============================================================================
|
siat/stock_technical.py
CHANGED
@@ -2009,7 +2009,7 @@ def security_bollinger(ticker,fromdate,todate,boll_days=20, \
|
|
2009
2009
|
print(" #Error(security_bollinger): price info not found for",ticker)
|
2010
2010
|
return None
|
2011
2011
|
if found not in ['Found']:
|
2012
|
-
print(" #Error(): ticker info either inaccessible or not found for",ticker)
|
2012
|
+
print(" #Error(security_bollinger): ticker info either inaccessible or not found for",ticker)
|
2013
2013
|
return None
|
2014
2014
|
|
2015
2015
|
# 滚动均值与标准差
|
@@ -2045,7 +2045,7 @@ def security_bollinger(ticker,fromdate,todate,boll_days=20, \
|
|
2045
2045
|
data_label=False,resample_freq='6H',smooth=smooth, \
|
2046
2046
|
date_range=date_range,date_freq=date_freq,date_fmt='%Y-%m-%d', \
|
2047
2047
|
colorlist=colorlist,lslist=lslist,lwlist=lwlist, \
|
2048
|
-
band_area=['上(压力)线','下(支撑)线'],mark_end=mark_end)
|
2048
|
+
band_area=['上(压力)线','下(支撑)线'],mark_end=mark_end,loc=loc)
|
2049
2049
|
|
2050
2050
|
return df1
|
2051
2051
|
|
@@ -52,7 +52,7 @@ siat/financials_test.py,sha256=HJ3CPo_Xckz2wXi3AEP6ZNWCF1Duc1pLi0Y10USiImc,23829
|
|
52
52
|
siat/fred_test.py,sha256=KF50ssSbsfpa_kT6iuomD0vG4eXztAcOasZxg1OGX5w,1201
|
53
53
|
siat/fund.py,sha256=wMDORsCBV8ZXfgwbtq-0bu3qqWY66dHnbqgllW0gWCo,24637
|
54
54
|
siat/fund_china.pickle,sha256=QI3IjV46EeJ5ryO3xocmByc-6b_6_nDxgcXDhBHzop0,2380915
|
55
|
-
siat/fund_china.py,sha256=
|
55
|
+
siat/fund_china.py,sha256=5ZgF4G9GFQa7hPufqol-qDg_EZj8CtmYd0UR9L2zIDI,99025
|
56
56
|
siat/fund_china_test.py,sha256=-Bh6m0J0GPpIbYXx-H2vpzJoNFI6pE2C2jVPa8DazgE,6649
|
57
57
|
siat/fund_test.py,sha256=V4ADb8Gsp8gyeFTwcgRsJBpnUih_O-Q2V1ILc5oKjK8,1116
|
58
58
|
siat/future_china.py,sha256=F-HsIf2Op8Z22RzTjet1g8COzldgnMjFNSXsAkeGyWo,17595
|
@@ -91,7 +91,7 @@ siat/risk_evaluation.py,sha256=I6B3gty-t--AkDCO0tKF-291YfpnF-IkXcFjqNKCt9I,76286
|
|
91
91
|
siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
|
92
92
|
siat/risk_free_rate.py,sha256=ZMr4cHikPvXvywr54gGqiI3Nvb69am6tq3zj2hwzANE,12384
|
93
93
|
siat/risk_free_rate_test.py,sha256=CpmhUf8aEAEZeNu4gvWP2Mz2dLoIgBX5bI41vfUBEr8,4285
|
94
|
-
siat/sector_china.py,sha256=
|
94
|
+
siat/sector_china.py,sha256=o8t4amM6NKGwYiT4N1Vqb3UdDpky_JY_jQwL-Q2Ygd8,117754
|
95
95
|
siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
|
96
96
|
siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
|
97
97
|
siat/security_price2.py,sha256=kuYh0V5cqclkM6MjZUd-N361fv3oxGVVerYINuTzZrE,24622
|
@@ -112,7 +112,7 @@ siat/stock_list_china_test.py,sha256=gv14UwMMvkZqtb6G7DCTSuehIwVHuVwu7w60p6gyHoo
|
|
112
112
|
siat/stock_prices_kneighbors.py,sha256=WfZvo5EyeBsm-T37zDj7Sl9dPSRq5Bx4JxIJ9IUum6s,36738
|
113
113
|
siat/stock_prices_linear.py,sha256=-OUKRr27L2aStQgJSlJOrJ4gay_G7P-m-7t7cU2Yoqk,13991
|
114
114
|
siat/stock_profile.py,sha256=B3eIwzEmiCqiCaxIlhfdEPsQBoW1PFOe1hkiY3mVF6Y,26038
|
115
|
-
siat/stock_technical.py,sha256=
|
115
|
+
siat/stock_technical.py,sha256=YGfvsV5Uu9xaZgJO7dwl1FsvszwX3jsGyJxqJgNamQk,112859
|
116
116
|
siat/stock_test.py,sha256=E9YJAvOw1VEGJSDI4IZuEjl0tGoisOIlN-g9UqA_IZE,19475
|
117
117
|
siat/stooq.py,sha256=dOc_S5HLrYg48YAKTCs1eX8UTJOOkPM8qLL2KupqlLY,2470
|
118
118
|
siat/temp.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
@@ -132,7 +132,7 @@ siat/valuation.py,sha256=NKfeZMdDJOW42oLVHob6eSVBXUqlN1OCnnzwyGAst8c,48855
|
|
132
132
|
siat/valuation_china.py,sha256=Tde2LzPDQy3Z7xOQQDw4ckQMPdROp_z0-GjFE6Z5_lI,67639
|
133
133
|
siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
134
134
|
siat/var_model_validation.py,sha256=f-oDewg7bPzyNanz_Y_jLH68NowAA3gXFehW_weKGG0,14898
|
135
|
-
siat-3.1.
|
136
|
-
siat-3.1.
|
137
|
-
siat-3.1.
|
138
|
-
siat-3.1.
|
135
|
+
siat-3.1.12.dist-info/METADATA,sha256=rgKgLVsy_yr30SZbLNHZCCzjVMz2_TOVSuGIV2HVOAM,1448
|
136
|
+
siat-3.1.12.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
137
|
+
siat-3.1.12.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
|
138
|
+
siat-3.1.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|