siat 3.7.25__py3-none-any.whl → 3.7.27__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 +20 -2
- siat/common.py +14 -7
- siat/economy.py +29 -8
- siat/event_study.py +10 -1
- siat/financials2.py +43 -2
- siat/financials_china2.py +42 -2
- siat/markowitz.py +16 -7
- siat/sector_china.py +108 -20
- siat/security_trend2.py +41 -29
- {siat-3.7.25.dist-info → siat-3.7.27.dist-info}/METADATA +2 -1
- {siat-3.7.25.dist-info → siat-3.7.27.dist-info}/RECORD +14 -14
- {siat-3.7.25.dist-info → siat-3.7.27.dist-info}/LICENSE +0 -0
- {siat-3.7.25.dist-info → siat-3.7.27.dist-info}/WHEEL +0 -0
- {siat-3.7.25.dist-info → siat-3.7.27.dist-info}/top_level.txt +0 -0
siat/__init__.py
CHANGED
@@ -14,7 +14,25 @@ from siat.allin import *
|
|
14
14
|
|
15
15
|
import pkg_resources
|
16
16
|
current_version=pkg_resources.get_distribution("siat").version
|
17
|
-
current_list=current_version.split('.')
|
18
|
-
|
17
|
+
#current_list=current_version.split('.')
|
18
|
+
|
19
|
+
#==============================================================================
|
20
|
+
# 处理stooq.py修复问题
|
21
|
+
restart=False
|
22
|
+
try:
|
23
|
+
with open('fix_package.pkl','rb') as file:
|
24
|
+
siat_ver=pickle.load(file)
|
25
|
+
if siat_ver != current_version:
|
26
|
+
restart=True
|
27
|
+
except:
|
28
|
+
restart=True
|
29
|
+
with open('fix_package.pkl','wb') as file:
|
30
|
+
pickle.dump(current_version,file)
|
31
|
+
|
32
|
+
if not restart:
|
33
|
+
print("Successfully enabled siat v{}".format(current_version))
|
34
|
+
else:
|
35
|
+
fix_package()
|
36
|
+
#print("Please RESTART Python kernel since siat is newly installed or upgraded")
|
19
37
|
|
20
38
|
#==============================================================================
|
siat/common.py
CHANGED
@@ -60,6 +60,8 @@ def text_lang(txtcn,txten):
|
|
60
60
|
else: txt=txten
|
61
61
|
|
62
62
|
return txt
|
63
|
+
|
64
|
+
|
63
65
|
#==============================================================================
|
64
66
|
"""
|
65
67
|
def today():
|
@@ -2928,6 +2930,9 @@ def fix_package(file='stooq.py',package='pandas_datareader'):
|
|
2928
2930
|
|
2929
2931
|
return
|
2930
2932
|
|
2933
|
+
|
2934
|
+
|
2935
|
+
|
2931
2936
|
#==============================================================================
|
2932
2937
|
if __name__=='__main__':
|
2933
2938
|
file='stock_info.pickle'
|
@@ -4860,18 +4865,20 @@ if __name__ == '__main__':
|
|
4860
4865
|
#==============================================================================
|
4861
4866
|
async def jupyter2pdf2(notebook_dir, notebook_file):
|
4862
4867
|
"""
|
4863
|
-
|
4864
|
-
|
4865
|
-
|
4866
|
-
|
4868
|
+
===========================================================================
|
4869
|
+
将 Jupyter Notebook 转换为 PDF 文件,异步方式。
|
4870
|
+
主要参数:
|
4871
|
+
notebook_dir (str): Jupyter Notebook文件所在的目录,不含文件名
|
4872
|
+
notebook_file (str): Jupyter Notebook文件名
|
4873
|
+
|
4867
4874
|
输出:
|
4868
4875
|
同时生成A4和A3两种幅面的pdf文件,由使用者自行挑选一个效果最好的。
|
4869
4876
|
返回:
|
4870
4877
|
None
|
4871
|
-
|
4878
|
+
|
4879
|
+
注意1:如果指令异常,可能还要执行python -m playwright install
|
4872
4880
|
注意2:调用本函数的格式是异步await开头
|
4873
|
-
await
|
4874
|
-
注意3:notebook_path和output_pdf_path中可以带路径
|
4881
|
+
await jupyter2pdf2(notebook_dir, notebook_file)
|
4875
4882
|
"""
|
4876
4883
|
|
4877
4884
|
# 路径分割符号
|
siat/economy.py
CHANGED
@@ -200,7 +200,20 @@ if __name__=='__main__':
|
|
200
200
|
def economy_trend(start,end,scope='China',factor='GDP',datatag=False,power=0, \
|
201
201
|
zeroline=False,yline=999,facecolor='papayawhip'):
|
202
202
|
"""
|
203
|
-
|
203
|
+
===========================================================================
|
204
|
+
功能:绘制宏观经济指标,单线,可添加趋势线。
|
205
|
+
主要参数:
|
206
|
+
start:开始日期,格式YYYY-MM-DD
|
207
|
+
end:结束日期
|
208
|
+
scope:经济体名称,默认'China',仅支持一部分经济体
|
209
|
+
factor:经济指标,默认'GDP'
|
210
|
+
datatag:是否在曲线上标记数据,默认False
|
211
|
+
power:绘制趋势线的多项式阶数,默认0阶不绘制
|
212
|
+
zeroline:是否绘制水平零线:默认False
|
213
|
+
yline:绘制竖线的数值,默认999不绘制
|
214
|
+
facecolor:背景颜色,默认小麦黄'papayawhip'
|
215
|
+
|
216
|
+
若需比较两个经济体的同一个指标,或同意经济体的两个指标,可用compare_economy
|
204
217
|
"""
|
205
218
|
#检查日期期间的合理性
|
206
219
|
valid,_,_=check_period(start,end)
|
@@ -273,23 +286,31 @@ if __name__=='__main__':
|
|
273
286
|
power=0; twinx=False; loc1='upper left'; loc2='lower right'
|
274
287
|
|
275
288
|
|
276
|
-
def compare_economy(tickers,measures,
|
289
|
+
def compare_economy(tickers,measures,start,end,power=0,twinx=False, \
|
277
290
|
yline=999, \
|
278
291
|
loc1='upper left',loc2='lower right',facecolor='papayawhip'):
|
279
292
|
"""
|
293
|
+
===========================================================================
|
280
294
|
功能:对比绘制折线图:一个国家的两种测度,或两个国家的同一个测度。
|
281
|
-
|
282
|
-
|
295
|
+
主要参数:
|
296
|
+
tickers:经济体代码。如果是一个列表且内含两个代码,则认为希望比较两个国家的
|
283
297
|
同一个测度指标。如果是一个列表但只内含一个国家代码或只是一个国家代码的字符串,
|
284
298
|
则认为希望比较一个国家的两个测度指标。
|
285
|
-
|
299
|
+
measures:经济指标。如果是一个列表且内含两个测度指标,则认为希望比较一个国家的
|
286
300
|
两个测度指标。如果是一个列表但只内含一个测度指标或只是一个测度指标的字符串,
|
287
301
|
则认为希望比较两个国家的同一个测度指标。
|
288
302
|
如果两个判断互相矛盾,以第一个为准。
|
289
|
-
|
290
|
-
|
291
|
-
|
303
|
+
start:开始日期,格式YYYY-MM-DD;end:结束日期。
|
304
|
+
|
305
|
+
twinx:是否使用双轴绘图法,默认False
|
306
|
+
yline:绘制纵轴竖线的数值,默认999不绘制
|
307
|
+
loc1:图例1的位置,默认左上角'upper left'
|
308
|
+
loc2:图例2的位置,默认右下角'lower right'
|
309
|
+
facecolor:背景颜色,默认'papayawhip'
|
292
310
|
"""
|
311
|
+
fromdate=start
|
312
|
+
todate=end
|
313
|
+
|
293
314
|
DEBUG=False
|
294
315
|
if DEBUG:
|
295
316
|
print("DEBUG: tickers =",tickers,"\b, measures =",measures)
|
siat/event_study.py
CHANGED
@@ -114,7 +114,7 @@ def event_study(ticker,event_date, \
|
|
114
114
|
facecolor="whitesmoke",show_AR='auto',show_RF=False, \
|
115
115
|
loc='best'):
|
116
116
|
"""
|
117
|
-
|
117
|
+
===========================================================================
|
118
118
|
功能:展示事件研究法的累计异常收益率CAR。
|
119
119
|
参数:
|
120
120
|
ticker:证券代码,可为股票、债券、基金、指数、国债收益率等。可为单个或多个。
|
@@ -151,6 +151,15 @@ def event_study(ticker,event_date, \
|
|
151
151
|
show_AR:是否绘图时绘制异常收益率AR
|
152
152
|
默认'auto'(单个ticker时绘制,多个时不绘制)。
|
153
153
|
也可指定True/False强行绘制/不绘制。
|
154
|
+
|
155
|
+
示例:美的收购库卡事件对股价的影响
|
156
|
+
es=event_study(["000333.SZ"],
|
157
|
+
event_date="2021-11-24",
|
158
|
+
start='2021-11-20',end='2021-12-25',
|
159
|
+
event_window=[1,10],
|
160
|
+
post_event_days=15,
|
161
|
+
method='CAPM',
|
162
|
+
market_index='399001.SZ')
|
154
163
|
"""
|
155
164
|
|
156
165
|
DEBUG=False
|
siat/financials2.py
CHANGED
@@ -108,10 +108,10 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
108
108
|
facecolor='papayawhip',font_size='16px'
|
109
109
|
):
|
110
110
|
"""
|
111
|
-
|
111
|
+
===========================================================================
|
112
112
|
功能:分析境外上市公司财报信息
|
113
113
|
|
114
|
-
|
114
|
+
主要参数:
|
115
115
|
tickers:股票列表,对比分析时需要多个股票,单列财报时仅取第一个股票
|
116
116
|
fsdates:财报日期,可为单个日期或日期列表,注意境外上市公司财报日期与中国大陆的不同
|
117
117
|
|
@@ -131,6 +131,47 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
131
131
|
facecolor:背景颜色,默认小麦黄'papayawhip'
|
132
132
|
font_size:标题字体大小,默认'16px'
|
133
133
|
|
134
|
+
示例:
|
135
|
+
#指定上市公司的股票代码:苹果
|
136
|
+
ticker='AAPL'
|
137
|
+
#指定进行对比的上市公司股票代码:苹果,微软,英伟达,高通
|
138
|
+
tickers=['AAPL','MSFT','NVDA','QCOM']
|
139
|
+
# 公司基本信息
|
140
|
+
profile=fs_analysis(ticker,analysis_type='profile')
|
141
|
+
# 证券分红
|
142
|
+
dividend=fs_analysis(ticker,analysis_type='profile',category='dividend')
|
143
|
+
# 证券分拆
|
144
|
+
split=fs_analysis(ticker,analysis_type='profile',category='split')
|
145
|
+
# 基本市场指标
|
146
|
+
frates=fs_analysis(ticker,analysis_type='profile',category='market')
|
147
|
+
# 基本财务比率
|
148
|
+
frates=fs_analysis(ticker,analysis_type='profile',category='financial')
|
149
|
+
# 一般风险评估
|
150
|
+
frates=fs_analysis(ticker,analysis_type='profile',category='risk')
|
151
|
+
# ESG风险评估
|
152
|
+
frates=fs_analysis(ticker,analysis_type='profile',category='esg')
|
153
|
+
# Balance sheet
|
154
|
+
bs=fs_analysis(ticker,
|
155
|
+
analysis_type='balance sheet')
|
156
|
+
# Income statement
|
157
|
+
ist=fs_analysis(ticker,
|
158
|
+
analysis_type='income statement')
|
159
|
+
# Cash flow statement
|
160
|
+
cfs=fs_analysis(ticker,
|
161
|
+
analysis_type='cash flow statement')
|
162
|
+
# Financial summary
|
163
|
+
fs=fs_analysis(ticker,
|
164
|
+
analysis_type='financial summary')
|
165
|
+
# Financial ratios:单个企业
|
166
|
+
fs=fs_analysis(ticker,
|
167
|
+
analysis_type='financial indicator')
|
168
|
+
# Financial ratios:同行对比。注意:美股上市公司年报日期不统一,可比性较差!
|
169
|
+
fs=fs_analysis(tickers,
|
170
|
+
analysis_type='financial indicator')
|
171
|
+
# Dupont identity:同行对比
|
172
|
+
fs=fs_analysis(tickers,
|
173
|
+
analysis_type='dupont identity')
|
174
|
+
|
134
175
|
注意1:仅从雅虎财经获取数据
|
135
176
|
注意2:不同经济体上市公司报表币种可能不同,金额项目仅进行同公司对比,不进行公司间对比
|
136
177
|
注意3:公司间仅对比财务比率和杜邦分析
|
siat/financials_china2.py
CHANGED
@@ -1963,7 +1963,8 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
1963
1963
|
loc1='best',loc2='best', \
|
1964
1964
|
facecolor='papayawhip',font_size='16px'):
|
1965
1965
|
"""
|
1966
|
-
|
1966
|
+
===========================================================================
|
1967
|
+
功能:财务报表分析,仅适用于中国A股,注意不适用于港股和美股(含中概股)
|
1967
1968
|
|
1968
1969
|
选项tickers:必选
|
1969
1970
|
单只股票:用于单只股票历史财报对比
|
@@ -2003,7 +2004,46 @@ def fs_analysis_china(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
2003
2004
|
烟白色(默认):whitesmoke
|
2004
2005
|
其他颜色:参见matplotlib颜色列表,例如淡雅小麦色papayawhip
|
2005
2006
|
|
2006
|
-
|
2007
|
+
示例:
|
2008
|
+
千方科技='002373.SZ'
|
2009
|
+
# 企业快照1:大股东
|
2010
|
+
sp1=fs_analysis_china(千方科技,analysis_type='profile',category='shareholder')
|
2011
|
+
# 企业快照2:主营业务
|
2012
|
+
sp2 = fs_analysis_china(千方科技, analysis_type='profile', category='business')
|
2013
|
+
# 企业快照3:股利分红
|
2014
|
+
sp3=fs_analysis_china(千方科技,analysis_type='profile',category='dividend')
|
2015
|
+
# 企业快照4:财务概况
|
2016
|
+
sp4 = fs_analysis_china(千方科技, analysis_type='profile', category='financial')
|
2017
|
+
# 同行业绩对比
|
2018
|
+
# 主要竞争对手:并非所有业务重叠
|
2019
|
+
peers=[ #定义主要竞争对手
|
2020
|
+
'002279.SZ',#久其软件
|
2021
|
+
'002368.SZ',#太极股份
|
2022
|
+
'600410.SS',#华胜天成
|
2023
|
+
'603927.SS',#中科软
|
2024
|
+
'002405.SZ',#四维图新
|
2025
|
+
]
|
2026
|
+
players=[千方科技]+peers
|
2027
|
+
competitors = fs_analysis_china(players, fsdates='2023-12-31', analysis_type='summary')
|
2028
|
+
# 资产负债表分析
|
2029
|
+
fsdates=['2023-12-31','2022-12-31','2021-12-31','2020-12-31','2019-12-31']
|
2030
|
+
fs_analysis_china(千方科技,fsdates,analysis_type='balance sheet')
|
2031
|
+
# 利润表分析
|
2032
|
+
fs_analysis_china(千方科技,fsdates,analysis_type='income statement')
|
2033
|
+
# 现金流量表分析
|
2034
|
+
fs_analysis_china(千方科技,fsdates,analysis_type='cashflow statement')
|
2035
|
+
# 杜邦分析
|
2036
|
+
dd = fs_analysis_china(千方科技, fsdates='2023-12-31', analysis_type='dupont decompose')
|
2037
|
+
# 投资-风险性价比分析
|
2038
|
+
# 以一年期国债收益率作为无风险收益率
|
2039
|
+
RF=0.01657
|
2040
|
+
# 短期分析
|
2041
|
+
rar1=security_trend(players,indicator='sharpe',ret_type='Exp Ret%',start='MRM',RF=RF,loc1='lower left')
|
2042
|
+
rar2 = security_trend(players, indicator='alpha', ret_type='Exp Ret%', start='MRM', RF=RF, loc1='lower left')
|
2043
|
+
# 中长期分析
|
2044
|
+
rar3=security_trend(players,indicator='sharpe',ret_type='Exp Ret%',start='L3Y',RF=RF,loc1='lower left')
|
2045
|
+
|
2046
|
+
备注:封装说明
|
2007
2047
|
套壳函数1:tickers为股票列表,fsdates为财报日期,可为单个日期或日期列表
|
2008
2048
|
asset_liab_china, income_cost_china, cash_flow_china
|
2009
2049
|
|
siat/markowitz.py
CHANGED
@@ -2150,11 +2150,19 @@ if __name__=='__main__':
|
|
2150
2150
|
def cm2inch(x,y):
|
2151
2151
|
return x/2.54,y/2.54
|
2152
2152
|
|
2153
|
-
def security_correlation(tickers,start,end,info_type='Close'):
|
2153
|
+
def security_correlation(tickers,start='L5Y',end='today',info_type='Close'):
|
2154
2154
|
"""
|
2155
|
+
===========================================================================
|
2155
2156
|
功能:股票/指数收盘价之间的相关性
|
2156
|
-
|
2157
|
+
参数:
|
2158
|
+
tickers:指标列表,至少两个
|
2159
|
+
start:起始日期,格式YYYY-MM-DD,支持简易格式
|
2160
|
+
end:截止日期
|
2161
|
+
info_type:指标的数值类型,默认'Close', 还可为Open/High/Low/Volume
|
2157
2162
|
"""
|
2163
|
+
|
2164
|
+
start,end=start_end_preprocess(start,end)
|
2165
|
+
|
2158
2166
|
info_types=['Close','Open','High','Low','Volume']
|
2159
2167
|
info_types_cn=['收盘价','开盘价','最高价','最低价','成交量']
|
2160
2168
|
if not(info_type in info_types):
|
@@ -2197,7 +2205,8 @@ def security_correlation(tickers,start,end,info_type='Close'):
|
|
2197
2205
|
|
2198
2206
|
|
2199
2207
|
#fig = plt.figure(figsize=(cm2inch(16,12)))
|
2200
|
-
fig = plt.figure(figsize=(cm2inch(12,
|
2208
|
+
#fig = plt.figure(figsize=(cm2inch(12,6)))
|
2209
|
+
fig = plt.figure(figsize=(12.8,7.2))
|
2201
2210
|
ax1 = plt.gca()
|
2202
2211
|
|
2203
2212
|
#构造mask,去除重复数据显示
|
@@ -2210,7 +2219,7 @@ def security_correlation(tickers,start,end,info_type='Close'):
|
|
2210
2219
|
im1 = sns.heatmap(df_coor,annot=True,cmap="YlGnBu"
|
2211
2220
|
, mask=mask#构造mask,去除重复数据显示
|
2212
2221
|
,vmax=1,vmin=-1
|
2213
|
-
, fmt='.2f',ax = ax1,annot_kws={"size":
|
2222
|
+
, fmt='.2f',ax = ax1,annot_kws={"size": 5})
|
2214
2223
|
|
2215
2224
|
ax1.tick_params(axis = 'both', length=0)
|
2216
2225
|
|
@@ -2259,8 +2268,8 @@ def security_correlation(tickers,start,end,info_type='Close'):
|
|
2259
2268
|
elif pv< 0.001:
|
2260
2269
|
ax1.text(n+widthx,m+widthy,'***',ha = 'center',color = 'k',fontdict=font_dict)
|
2261
2270
|
|
2262
|
-
plt.title("
|
2263
|
-
plt.tick_params(labelsize=
|
2271
|
+
plt.title("序列相关性分析:"+info_type_cn)
|
2272
|
+
plt.tick_params(labelsize=5)
|
2264
2273
|
|
2265
2274
|
footnote1="\n显著性数值:***非常显著(<0.001),**很显著(<0.01),*显著(<0.05),其余为不显著"
|
2266
2275
|
footnote2="\n系数绝对值:>=0.8极强相关,0.6-0.8强相关,0.4-0.6相关,0.2-0.4弱相关,否则为极弱(不)相关"
|
@@ -2269,7 +2278,7 @@ def security_correlation(tickers,start,end,info_type='Close'):
|
|
2269
2278
|
import datetime as dt; stoday=dt.date.today()
|
2270
2279
|
footnote4=";数据来源:Sina/EM/Stooq/Yahoo,"+str(stoday)
|
2271
2280
|
|
2272
|
-
fontxlabel={'size':
|
2281
|
+
fontxlabel={'size':5}
|
2273
2282
|
plt.xlabel(footnote1+footnote2+footnote3+footnote4,fontxlabel)
|
2274
2283
|
#plt.xticks(rotation=45)
|
2275
2284
|
|
siat/sector_china.py
CHANGED
@@ -910,7 +910,14 @@ if __name__=='__main__':
|
|
910
910
|
def print_industry_sw(itype='1',numberPerLine=5,colalign='left'):
|
911
911
|
"""
|
912
912
|
功能:按照类别打印申万行业列表,名称(代码)
|
913
|
-
|
913
|
+
参数:
|
914
|
+
itype:行业分级,默认'1'。
|
915
|
+
F=市场表征, 1=一级行业, 2=二级行业, 3=三级行业, S="风格指数",B=大类风格,C=金创
|
916
|
+
numberPerLine:每行个数,默认5
|
917
|
+
colalign:对齐方式,默认'left'
|
918
|
+
|
919
|
+
示例:
|
920
|
+
print_industry_sw(colalign='left')
|
914
921
|
"""
|
915
922
|
df=industry_sw_list()
|
916
923
|
df1=df[df['type']==itype]
|
@@ -962,7 +969,16 @@ if __name__=='__main__':
|
|
962
969
|
def print_industry_component_sw(iname,numberPerLine=5,colalign='left', \
|
963
970
|
printout=True,return_result=False):
|
964
971
|
"""
|
965
|
-
|
972
|
+
===========================================================================
|
973
|
+
功能:打印申万行业的成分股,名称(代码)
|
974
|
+
iname:申万行业名称
|
975
|
+
numberPerLine:输出时每行显示个数,默认5
|
976
|
+
colalign:对齐方式,默认'left'
|
977
|
+
printout:是否显示,默认True
|
978
|
+
return_result:是否返回结果,默认False
|
979
|
+
|
980
|
+
示例:
|
981
|
+
print_industry_component_sw(iname="白酒Ⅲ")
|
966
982
|
"""
|
967
983
|
try:
|
968
984
|
icode=industry_sw_code(iname)
|
@@ -1687,12 +1703,33 @@ def rank_industry_sw(idf,measure='Exp Ret%',industries=[], \
|
|
1687
1703
|
graph=True,axisamp=0.8,px=False,maxitems=32, \
|
1688
1704
|
printout=False,facecolor='papayawhip',font_size='16px'):
|
1689
1705
|
"""
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1706
|
+
===========================================================================
|
1707
|
+
功能:遍历某类申万指数的某项业绩指标,汇集排序,绘制水平柱状图
|
1708
|
+
主要参数:
|
1709
|
+
idf:行业基础数据,由下列指令生成:
|
1710
|
+
idf,idfall=get_industry_data_sw(start,end,sw_level='1')
|
1711
|
+
measure:排名指标,默认'Exp Ret%'
|
1712
|
+
industries:指定排名哪些特定行业,默认全部行业[]
|
1713
|
+
graph:是否绘图,默认True
|
1714
|
+
maxitems:一幅图最多绘制maxitems个项目,默认32
|
1715
|
+
axisamp=0.9:调节水平柱子伸缩比例,数值越大越收缩,数值越小越放大,有时也需要负数
|
1694
1716
|
px=False:默认不使用plotly express
|
1695
|
-
printout
|
1717
|
+
printout:是否打印结果数值,默认False
|
1718
|
+
facecolor:背景颜色,默认'papayawhip'
|
1719
|
+
font_size:输出表格的字体大小,默认'16px'
|
1720
|
+
|
1721
|
+
示例:
|
1722
|
+
df1=rank_industry_sw(idf,measure='Exp Ret%',
|
1723
|
+
axisamp=0.85)
|
1724
|
+
# 选择感兴趣的行业,观察其持有收益率的发展趋势
|
1725
|
+
industries1=industry_sw_codes(['电力设备','食品饮料','国防军工','银行'])
|
1726
|
+
df1i=compare_industry_sw(idfall,industries1,measure='Exp Ret%')
|
1727
|
+
|
1728
|
+
df1risk=rank_industry_sw(idf,measure='Exp Ret Volatility%',
|
1729
|
+
axisamp=1.6)
|
1730
|
+
|
1731
|
+
# 全行业,夏普比率横向对比
|
1732
|
+
df1sharpe=rank_industry_sw_sharpe(idfall,base_return='Exp Ret%',axisamp=0.8)
|
1696
1733
|
"""
|
1697
1734
|
industry_list1=[]
|
1698
1735
|
for i in industries:
|
@@ -2847,9 +2884,14 @@ if __name__=='__main__':
|
|
2847
2884
|
|
2848
2885
|
def find_peers_china(industry='',top=20,rank=20,sw_level='2'):
|
2849
2886
|
"""
|
2850
|
-
|
2851
|
-
|
2887
|
+
功能:找出一个申万行业的上市公司排名
|
2888
|
+
主要参数:
|
2889
|
+
industry:申万行业名称。当industry = '',显示的内容由sw_level控制。申万二级行业分类
|
2852
2890
|
sw_level:申万一级行业'1',二级行业'2',三级行业'3',其他'F'、'S'、'B'、'C'
|
2891
|
+
top:排名数量,为正数时表示前多少名,可为负数(代表倒数多少名)
|
2892
|
+
|
2893
|
+
示例:
|
2894
|
+
stocks2=find_peers_china('通信工程及服务',top=10)
|
2853
2895
|
"""
|
2854
2896
|
|
2855
2897
|
# 避免混淆
|
@@ -3091,15 +3133,25 @@ def industry_scan_china(sw_level='F', \
|
|
3091
3133
|
printout='smart', \
|
3092
3134
|
facecolor='papayawhip',font_size='16px'):
|
3093
3135
|
"""
|
3094
|
-
|
3095
|
-
|
3096
|
-
|
3097
|
-
|
3098
|
-
|
3099
|
-
|
3100
|
-
|
3101
|
-
|
3102
|
-
|
3136
|
+
===========================================================================
|
3137
|
+
功能:扫描申万行业指数,按照投资收益率排名。对网速要求高,可能需要较长时间。
|
3138
|
+
主要参数:
|
3139
|
+
sw_level:申万行业分类,默认'F'。
|
3140
|
+
F--市场表征(默认),S--投资风格(策略),B--大类风格,C--金创,
|
3141
|
+
1--一级行业,2--二级行业,3--三级行业
|
3142
|
+
indicator:行业排名使用的指标,默认'Exp Adj Ret%',可使用RAR指标等
|
3143
|
+
start与end:评估期间。允许MRM/MRQ/MRY(默认)/YTD/L3Y(近三年)/L5Y(近五年)
|
3144
|
+
base_return:计算sharpe和sortino比率时使用的收益率类型,默认'Exp Adj Ret%'。
|
3145
|
+
当indicator不是sharpe或sortino比率时,base_return需要与indicator保持一致。
|
3146
|
+
RF:年化无风险收益率,默认0,可参照一年期国债收益率(Government Bond Yield)
|
3147
|
+
printout:筛选方式。
|
3148
|
+
smart--收益前10名与后10名(默认),winner--仅限收益为正的行业,
|
3149
|
+
loser--仅限收益为负的行业,50--收益前50名,-10--收益后10名,all--所有行业
|
3150
|
+
facecolor:背景颜色,默认'papayawhip'
|
3151
|
+
font_size:输出表格的字体大小,默认'16px'
|
3152
|
+
|
3153
|
+
示例:
|
3154
|
+
info=industry_scan_china(sw_level='3',indicator='sharpe',start='MRY')
|
3103
3155
|
"""
|
3104
3156
|
#indicator='Exp Ret%'
|
3105
3157
|
|
@@ -3573,8 +3625,26 @@ def stock_peers_em(ticker='',indicator='',rank=10, \
|
|
3573
3625
|
font_size="16px",facecolor="papayawhip", \
|
3574
3626
|
numberPerLine=5):
|
3575
3627
|
"""
|
3576
|
-
|
3628
|
+
功能:基于东方财富行业分类,查找股票所属的行业板块以及主要同行排名
|
3577
3629
|
特点:行业分类较粗糙,略胜于无
|
3630
|
+
主要参数:
|
3631
|
+
ticker:股票代码,默认''显示所有板块名称
|
3632
|
+
indicator:排名指标,默认''。例如:"股价"、"流动性"、"市净率"、"市盈率"
|
3633
|
+
rank:排名数量,默认10前十名
|
3634
|
+
force_show_stock:是否显示股票信息,默认False
|
3635
|
+
font_size:表格字体大小,默认"16px"
|
3636
|
+
facecolor:输出表格的背景颜色,默认"papayawhip",
|
3637
|
+
numberPerLine:输出表格中的每行显示个数,默认5
|
3638
|
+
|
3639
|
+
示例:
|
3640
|
+
industries=stock_peers_em() # 显示东方财富所有行业板块分类
|
3641
|
+
# 显示002373.SZ在所属东方财富板块中的股价排名
|
3642
|
+
peers=stock_peers_em(ticker="002373.SZ",
|
3643
|
+
indicator="股价",
|
3644
|
+
force_show_stock=True)
|
3645
|
+
peers=stock_peers_em(ticker="002373.SZ",
|
3646
|
+
indicator="流动性",
|
3647
|
+
force_show_stock=True)
|
3578
3648
|
"""
|
3579
3649
|
if indicator in ["股价","股票价格","价格","收盘价","价位"]:
|
3580
3650
|
indicator="最新价"
|
@@ -3876,7 +3946,12 @@ if __name__ == '__main__':
|
|
3876
3946
|
|
3877
3947
|
def get_stock_industry_sw(ticker):
|
3878
3948
|
"""
|
3949
|
+
===========================================================================
|
3879
3950
|
功能:抓取股票的申万行业分类名称
|
3951
|
+
参数:
|
3952
|
+
ticker:A股股票代码
|
3953
|
+
|
3954
|
+
返回:申万行业分类名称
|
3880
3955
|
"""
|
3881
3956
|
|
3882
3957
|
import requests
|
@@ -3908,7 +3983,11 @@ if __name__ == '__main__':
|
|
3908
3983
|
|
3909
3984
|
def stock_peers_sw(ticker):
|
3910
3985
|
"""
|
3911
|
-
|
3986
|
+
===========================================================================
|
3987
|
+
功能:显示股票的申万行业分类及其同行
|
3988
|
+
参数:
|
3989
|
+
ticker:A股股票代码
|
3990
|
+
返回:无
|
3912
3991
|
"""
|
3913
3992
|
|
3914
3993
|
try:
|
@@ -3967,6 +4046,15 @@ if __name__ == '__main__':
|
|
3967
4046
|
index_intersection_sw(sw_index)
|
3968
4047
|
|
3969
4048
|
def index_intersection_sw(sw_index=[]):
|
4049
|
+
"""
|
4050
|
+
===========================================================================
|
4051
|
+
功能:寻找多个申万指数中共同的成分股
|
4052
|
+
主要参数:
|
4053
|
+
sw_index:申万行业分类指数列表,至少两个指数。
|
4054
|
+
返回值:无
|
4055
|
+
示例:
|
4056
|
+
sw_index=['绩优股指数','大盘指数','中市盈率指数','高市净率指数']
|
4057
|
+
"""
|
3970
4058
|
#寻找多个申万指数中共同的成分股
|
3971
4059
|
if len(sw_index)==0:
|
3972
4060
|
print(" #Warning(stock_intersection_sw): no index found for intersection")
|
siat/security_trend2.py
CHANGED
@@ -157,9 +157,10 @@ def security_trend(ticker,indicator='Close',adjust='', \
|
|
157
157
|
facecolor='papayawhip'):
|
158
158
|
|
159
159
|
"""
|
160
|
+
===========================================================================
|
160
161
|
功能:组合指令,分析证券指标走势,支持多个证券、多个指标和多种绘图方式。
|
161
|
-
|
162
|
-
ticker
|
162
|
+
主要参数:
|
163
|
+
ticker:证券代码,支持多个经济体的证券,包括股票、基金、部分欧美衍生品。
|
163
164
|
股票:单一股票,股票列表,支持全球主要证券市场的股票。
|
164
165
|
债券:因数据来源关系,本指令暂不支持债券,计划首先支持最活跃的沪深可转债。
|
165
166
|
基金:因数据来源关系,仅支持下列市场的部分基金:
|
@@ -169,7 +170,7 @@ def security_trend(ticker,indicator='Close',adjust='', \
|
|
169
170
|
投资组合:使用字典表示法,成分股仅支持全球交易所上市的主要股票(限同币种)。
|
170
171
|
投资组合仅支持RAR指标和CAPM贝塔系数,其他指标暂不支持。
|
171
172
|
|
172
|
-
indicator
|
173
|
+
indicator:支持证券价格、收益率、风险指标、估值指标、RAR指标和CAPM贝塔系数。
|
173
174
|
证券价格:支持开盘价、收盘价、最高最低价。
|
174
175
|
收益率:支持基本的日收益率、滚动收益率和扩展收益率。滚动收益率支持周、月、季度和年。
|
175
176
|
风险指标:支持滚动收益率和扩展收益率的标准差(波动风险)和下偏标准差(损失风险)。
|
@@ -177,53 +178,64 @@ def security_trend(ticker,indicator='Close',adjust='', \
|
|
177
178
|
估值指标:支持市盈率、市净率和市值。仅支持中国内地、中国香港、美股和波兰上市的股票。
|
178
179
|
市值指标不支持市场指数。
|
179
180
|
|
180
|
-
start
|
181
|
+
start:指定分析的开始日期或期间。日期格式:YYYY-mm-dd
|
181
182
|
作为期间时,支持最近的1个月、1个季度、半年、1年、2年、3年、5年、8年、10年或今年以来。
|
182
183
|
省略时默认为最近的1个月。
|
183
|
-
end
|
184
|
+
end:指定分析的结束日期。日期格式:YYYY-mm-dd。省略时默认为今日。
|
184
185
|
|
185
|
-
attention_value
|
186
|
-
average_value
|
186
|
+
attention_value:绘图时绘制一条水平线,用以强调一个阈值。默认不绘制。
|
187
|
+
average_value:开关打开时,绘图时绘制一条均值线,仅适用于绘制单条曲线。默认关闭。
|
187
188
|
|
188
189
|
attention_point:绘制横轴竖线,可为单个横轴点或列表,默认不绘制
|
189
190
|
attention_point_area:为两个横轴点的列表,其间区域着色,默认不绘制。
|
190
191
|
可与attention_point配合使用。
|
191
192
|
|
192
|
-
kline
|
193
|
+
kline:开关打开时,绘制一条K线图,仅适用于单只股票。默认关闭。
|
193
194
|
kline_demo参数:与kline开关同时打开时,绘制一条K线图原理演示图,仅适用于单只股票。
|
194
195
|
mav参数:仅当kline开关打开时有效,用于指定K线图中单条或多条移动平均线的天数。
|
195
196
|
|
196
|
-
stock_dividend和stock_split
|
197
|
-
|
197
|
+
stock_dividend和stock_split:显示一只股票的分红和分拆历史,支持全球主要市场的股票。
|
198
|
+
注意:本参数需要特殊访问获取数据。
|
198
199
|
|
199
|
-
ret_type、RF、regression_period和market_index
|
200
|
-
ret_type
|
201
|
-
RF
|
202
|
-
regression_period
|
203
|
-
market_index
|
200
|
+
ret_type、RF、regression_period和market_index:仅用于计算RAR指标和CAPM贝塔系数。
|
201
|
+
ret_type:指定计算RAR的收益率类型,支持滚动和扩展收益率,但不建议混合使用。
|
202
|
+
RF:指定年化无风险利率,非百分比数值。
|
203
|
+
regression_period:指定CAPM回归时的日期期间跨度,为日历日(自然日),默认一年。
|
204
|
+
market_index:用于计算CAPM回归贝塔系数时的市场收益率。
|
204
205
|
系统能够自动识别全球主要证券市场的指数,其他证券市场可由人工指定具体的市场指数代码。
|
205
206
|
|
206
|
-
graph
|
207
|
-
twinx
|
208
|
-
loc1和loc2
|
207
|
+
graph:指定是否将分析结果绘制曲线,默认绘制。
|
208
|
+
twinx:指定绘图时是否使用双轴绘图法,仅用于两条曲线且其数量级差异较大时。
|
209
|
+
loc1和loc2:用于指定绘图时图例的位置,包括左右上角(下角、中间)、上下中间或图中央。
|
209
210
|
loc1用于指定非双轴图或双轴图中第1条曲线图例的位置,loc2用于指定双轴图中第2条曲线的位置。
|
210
|
-
datatag
|
211
|
-
power
|
212
|
-
smooth
|
213
|
-
date_range
|
214
|
-
date_freq
|
215
|
-
annotate
|
216
|
-
|
217
|
-
preprocess
|
211
|
+
datatag:用于指定绘图时是否绘制数据标签,仅当数据稀疏时适用,默认关闭。
|
212
|
+
power:用于指定绘图时是否使用多项式绘制趋势线,可指定多项式的阶数,1为直线,默认不绘制。
|
213
|
+
smooth:指定绘图时是否对曲线进行平滑处理,仅适用于少量数据构造的曲线,默认打开。
|
214
|
+
date_range:绘制时序图时强制横轴的开始和结束日期,默认关闭。
|
215
|
+
date_freq:绘制时序图时强制横轴的日期间隔大小。默认关闭,由系统自动决定。
|
216
|
+
annotate:绘图时是否将曲线名称标注在曲线末端。默认关闭(使用传统图例),以避免重叠。
|
217
|
+
|
218
|
+
preprocess:绘图前是否进行数据预处理,默认不使用。
|
218
219
|
预处理方式:支持标准化、正态化、取对数和同步缩放法,常用的为同步缩放法。
|
219
|
-
scaling_option
|
220
|
+
scaling_option:指定同步缩放法的对齐选项,支持均值、最小值、起点值、百分比和变化率方法。
|
220
221
|
其中,百分比和变化率方法常用。适用于数值差异大的价格走势对比分析,其他指标不适用或效果不明显。
|
221
222
|
|
222
|
-
printout
|
223
|
+
printout:仅适用于有相关功能的指标(例如RAR)打开结果表格输出,默认关闭。
|
223
224
|
|
224
|
-
source
|
225
|
+
source:指定证券基础数据来源,默认由系统决定。当系统找到的数据不理想时,可手动指定。
|
225
226
|
若指定雅虎财经数据源,需要拥有访问该网站的权限。
|
227
|
+
|
228
|
+
示例:
|
229
|
+
stocks1=find_peers_china('门户网站',top=10)
|
230
|
+
df=security_trend(stocks1,
|
231
|
+
indicator='sharpe',
|
232
|
+
start='MRY',
|
233
|
+
graph=False,printout=True)
|
234
|
+
df=security_trend(stocks1,
|
235
|
+
indicator='Exp Ret%',
|
236
|
+
start='MRY')
|
226
237
|
"""
|
238
|
+
|
227
239
|
DEBUG=False
|
228
240
|
|
229
241
|
#critical_value=attention_value
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: siat
|
3
|
-
Version: 3.7.
|
3
|
+
Version: 3.7.27
|
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
|
@@ -38,6 +38,7 @@ Requires-Dist: bottleneck
|
|
38
38
|
Requires-Dist: translate
|
39
39
|
Requires-Dist: translators
|
40
40
|
Requires-Dist: nbconvert
|
41
|
+
Requires-Dist: ipywidgets
|
41
42
|
Requires-Dist: playwright
|
42
43
|
Dynamic: author
|
43
44
|
Dynamic: author-email
|
@@ -1,5 +1,5 @@
|
|
1
1
|
siat/__init__ -20240701.py,sha256=gP5uajXnJesnH5SL0ZPwq_Qhv59AG1bs4qwZv26Fo2Y,2894
|
2
|
-
siat/__init__.py,sha256=
|
2
|
+
siat/__init__.py,sha256=dJlkoRbcOHt295ND-oiRIPHcV37ZY0dap3wUNRgkm5g,1325
|
3
3
|
siat/__init__.py.backup_20250214.py,sha256=pIo4CV3lNPKIhitmhIh_6aAfZrmzQWGNDcEnvZ7GXoc,3216
|
4
4
|
siat/allin.py,sha256=x1QC29PUBUYiA6IAbQKbRvtxIEUOBx8dy5k7zh1ABT4,2970
|
5
5
|
siat/alpha_vantage_test.py,sha256=tKr-vmuFH3CZAqwmISz6jzjPHzV1JJl3sPfZdz8aTfM,747
|
@@ -19,7 +19,7 @@ siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
|
|
19
19
|
siat/capm_beta2.py,sha256=-ZYYp1HK7SkfTR3vBKZ0QVC4Q_tbST2O4MGbX_V77J0,32031
|
20
20
|
siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
|
21
21
|
siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
|
22
|
-
siat/common.py,sha256=
|
22
|
+
siat/common.py,sha256=IkeZU6i-F0cv7pnrMtZjYUegk1B2jaD_ULmLD_SJZv0,179357
|
23
23
|
siat/compare_cross.py,sha256=3iP9TH2h3w27F2ARZc7FjKcErYCzWRc-TPiymOyoVtw,24171
|
24
24
|
siat/compare_cross_test.py,sha256=xra5XYmQGEtfIZL2h-GssdH2hLdFIhG3eoCrkDrL3gY,3473
|
25
25
|
siat/concepts_iwencai.py,sha256=m1YEDtECRT6FqtzlKm91pt2I9d3Z_XoP59BtWdRdu8I,3061
|
@@ -29,11 +29,11 @@ siat/cryptocurrency.py,sha256=ImkP0Z3QsKNrHrA07mZM46RvGAWb36AD14cNaiv_pCg,27829
|
|
29
29
|
siat/cryptocurrency_test.py,sha256=3AikTNJ7j-HwLGLIYEfyXZ3bLVuLeru9mwiwHQi2SdA,2669
|
30
30
|
siat/derivative.py,sha256=qV8n09799eqLc26ojR6vN5n_X-xd7rGwdYjgq-wBih8,41483
|
31
31
|
siat/economy-20230125.py,sha256=vxZZlPnLkh7SpGMVEPLwxjt0yYLSVmdZrO-s2NYLyoM,73848
|
32
|
-
siat/economy.py,sha256=
|
32
|
+
siat/economy.py,sha256=KYFYa7rYmgiz6n9_y_z05WdP44H3DjlP9J5rv_Pw8ig,79678
|
33
33
|
siat/economy_test.py,sha256=6vjNlPz7W125pJb7simCddobSEp3jmLIMvVkLRZ7zW8,13339
|
34
34
|
siat/esg.py,sha256=GMhaonIKtvOK83rhpQUH5aJt2OL3HQBSVfD__Yw-0oo,19040
|
35
35
|
siat/esg_test.py,sha256=Z9m6GUt8O7oHZSEG9aDYpGdvvrv2AiRJdHTiU6jqmZ0,2944
|
36
|
-
siat/event_study.py,sha256=
|
36
|
+
siat/event_study.py,sha256=30ji4TP4xztNVjQdkBlwWstkCIGg6McTYe8dWlbloTg,34341
|
37
37
|
siat/exchange_bond_china.pickle,sha256=zDqdPrFacQ0nqjP_SuF6Yy87EgijIRsFvFroW7FAYYY,1265092
|
38
38
|
siat/fama_french.py,sha256=aUTC-67t_CEPbLk4u79woW_zfZ7OCP6Fo4z5EdWCSkQ,48051
|
39
39
|
siat/fama_french_test.py,sha256=M4O23lBKsJxhWHRluwCb3l7HSEn3OFTjzGMpehcevRg,4678
|
@@ -43,9 +43,9 @@ siat/financial_statements.py,sha256=xx0SMpFqAMKm6cj8uYeG2RpJE6G-RoJ3NWa33UyaVMk,
|
|
43
43
|
siat/financial_statements_test.py,sha256=FLhx8JD-tVVWSBGux6AMz1jioXX4U4bp9DmgFHYXb_w,716
|
44
44
|
siat/financials.py,sha256=6WOWYift3MpKkNBnvnBFASXy9nKKC6DzAr8rg2XyNtw,80646
|
45
45
|
siat/financials2 - 副本.py,sha256=dKlNjIfKeoSy055fQ6E6TUj9HEoO5Ney9grD84J5kfk,14389
|
46
|
-
siat/financials2.py,sha256=
|
46
|
+
siat/financials2.py,sha256=ycHUaocHcSuVmgGmx8Uza8IqyxvKB6jqrlYqYG-cO3Q,50942
|
47
47
|
siat/financials_china.py,sha256=Y9QHyJKDgVbkb5L1f65BAiNxLIDmasRUN9_ju4Yby_c,191925
|
48
|
-
siat/financials_china2.py,sha256=
|
48
|
+
siat/financials_china2.py,sha256=VvkzkjZeH84zwypR7ReldgJeZ7jnNw0qkzebvWMPm10,94956
|
49
49
|
siat/financials_china2_test.py,sha256=Erz5k4LyOplBBvYls2MypuqHpVNJ3daiLdyeJezNPu0,2722
|
50
50
|
siat/financials_china2_test2.py,sha256=C8CuYTMHN4Mhp-sTu-Bmg0zMXRCaYV6ezGDoYartRYQ,3507
|
51
51
|
siat/financials_china2_test3.py,sha256=UXYSA80DNSPRhHpovc2MA9JkpILWMAQaRatbWCHBNPs,3118
|
@@ -70,7 +70,7 @@ siat/holding_risk_test.py,sha256=FRlw_9wFG98BYcg_cSj95HX5WZ1TvkGaOUdXD7-V86s,474
|
|
70
70
|
siat/local_debug_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
|
71
71
|
siat/luchy_draw.py,sha256=8Ue-NKnvSVqINPY1eXat0NJat5MR-gex_K62aOYFdmA,20486
|
72
72
|
siat/market_china.py,sha256=fQjAFyu4JAqtVA8I1QYfzv0fmYhLP3zoNe5Ftk63qgM,50724
|
73
|
-
siat/markowitz.py,sha256=
|
73
|
+
siat/markowitz.py,sha256=dpfBK7myua83wQVqebP8Z1Qv0A5U_7nmocnQDFR5dJY,97988
|
74
74
|
siat/markowitz2-20240620.py,sha256=irZAPnjaatFsKQmFRMENP-cO6bEUl2narYtkU5NKTWI,108019
|
75
75
|
siat/markowitz2.py,sha256=s7-E43VskzSsPpZXQVBe3VTR1AM81EDIn_uVZn3mLpw,122525
|
76
76
|
siat/markowitz_ccb_test.py,sha256=xBkkoaNHdq9KSUrNuHGgKTdNYUvgi84kNYcf719eoyE,1593
|
@@ -97,7 +97,7 @@ siat/risk_evaluation.py,sha256=I6B3gty-t--AkDCO0tKF-291YfpnF-IkXcFjqNKCt9I,76286
|
|
97
97
|
siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
|
98
98
|
siat/risk_free_rate.py,sha256=IBuRqA2kppdZsW4D4fapW7vnM5HMEXOn95A5r9Pkwlo,12384
|
99
99
|
siat/risk_free_rate_test.py,sha256=CpmhUf8aEAEZeNu4gvWP2Mz2dLoIgBX5bI41vfUBEr8,4285
|
100
|
-
siat/sector_china.py,sha256=
|
100
|
+
siat/sector_china.py,sha256=L58_8aDPZ54GbIm7-Oxg0pEdQ3hha6pJIah82pYzS8c,155147
|
101
101
|
siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
|
102
102
|
siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
|
103
103
|
siat/security_price2.py,sha256=dYwvz9H-uWp-Gyc1g_MId9k8cITS6ZHmjW-Fc2ypp-0,26587
|
@@ -105,7 +105,7 @@ siat/security_prices.py,sha256=HoCZ7YPrQYZHgKC-LyXFeeBCTfRc3EMMEiEg52SVv2w,10907
|
|
105
105
|
siat/security_prices_test.py,sha256=OEphoJ87NPKoNow1QA8EU_5MUYrJF-qKoWKNapVfZNI,10779
|
106
106
|
siat/security_trend.py,sha256=o0vpWdrJkmODCP94X-Bvn-w7efHhj9HpUYBHtLl55D0,17240
|
107
107
|
siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmWBPk,24854
|
108
|
-
siat/security_trend2.py,sha256=
|
108
|
+
siat/security_trend2.py,sha256=Pp2a2HtiVa1P1S1hW8DfMcXcbbnAsvkL7rlTdct67AQ,30242
|
109
109
|
siat/setup.py,sha256=up65rQGLmTBkhtaMLowjoQXYmIsnycnm4g1SYmeQS6o,1335
|
110
110
|
siat/shenwan index history test.py,sha256=JCVAzOSEldHalhSFa3pqD8JI_8_djPMQOxpkuYU-Esg,1418
|
111
111
|
siat/stock.py,sha256=JT_sq-9B8A25fzTh7rSj5-NnO2IlGbI_7O47ZZu9Dk0,159068
|
@@ -143,8 +143,8 @@ siat/valuation_china.py,sha256=CVp1IwIsF3Om0J29RGkyxZLt4n9Ug-ua_RKhLwL9fUQ,69624
|
|
143
143
|
siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
144
144
|
siat/var_model_validation.py,sha256=R0caWnuZarrRg9939hxh3vJIIpIyPfvelYmzFNZtPbo,14910
|
145
145
|
siat/yf_name.py,sha256=laNKMTZ9hdenGX3IZ7G0a2RLBKEWtUQJFY9CWuk_fp8,24058
|
146
|
-
siat-3.7.
|
147
|
-
siat-3.7.
|
148
|
-
siat-3.7.
|
149
|
-
siat-3.7.
|
150
|
-
siat-3.7.
|
146
|
+
siat-3.7.27.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
|
147
|
+
siat-3.7.27.dist-info/METADATA,sha256=BDILw2YFXymfHmWlCydzSOFqu2QwznLKRsKqW-eLK58,8321
|
148
|
+
siat-3.7.27.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
149
|
+
siat-3.7.27.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
|
150
|
+
siat-3.7.27.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|