siat 3.2.58__py3-none-any.whl → 3.2.59__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 +0 -2
- siat/markowitz2.py +5 -5
- siat/translate.py +28 -16
- siat/yf_name.py +325 -0
- {siat-3.2.58.dist-info → siat-3.2.59.dist-info}/METADATA +1 -1
- {siat-3.2.58.dist-info → siat-3.2.59.dist-info}/RECORD +8 -7
- {siat-3.2.58.dist-info → siat-3.2.59.dist-info}/WHEEL +0 -0
- {siat-3.2.58.dist-info → siat-3.2.59.dist-info}/top_level.txt +0 -0
siat/common.py
CHANGED
@@ -3985,8 +3985,6 @@ def show_df(data,search_mode=False):
|
|
3985
3985
|
"""
|
3986
3986
|
|
3987
3987
|
import pandas as pd
|
3988
|
-
# 设置列对齐方式为靠左
|
3989
|
-
pd.set_option('display.align', 'left')
|
3990
3988
|
|
3991
3989
|
if not isinstance(data,pd.DataFrame):
|
3992
3990
|
print("#Warning: the first parameter must be a dataframe")
|
siat/markowitz2.py
CHANGED
@@ -737,7 +737,7 @@ def portfolio_expectation_universal(pname,member_returns,portfolio_weights,membe
|
|
737
737
|
print(" ***投资组合持仓策略***")
|
738
738
|
print_tickerlist_sharelist(tickerlist,portfolio_weights,leading_blanks=4,ticker_type=ticker_type)
|
739
739
|
|
740
|
-
print("
|
740
|
+
print(" *数据来源:Sina/EM/Stooq/Yahoo,"+str(stoday)+"统计")
|
741
741
|
else:
|
742
742
|
print("\n ======= Investment Portfolio: Return and Risk =======")
|
743
743
|
print(" Investment portfolio:",pname)
|
@@ -749,7 +749,7 @@ def portfolio_expectation_universal(pname,member_returns,portfolio_weights,membe
|
|
749
749
|
print(" ***Portfolio Constructing Strategy***")
|
750
750
|
print_tickerlist_sharelist(tickerlist,portfolio_weights,4)
|
751
751
|
|
752
|
-
print(" *
|
752
|
+
print(" *Data source: Sina/EM/Stooq/Yahoo, "+str(stoday))
|
753
753
|
|
754
754
|
return
|
755
755
|
|
@@ -1233,7 +1233,7 @@ def portfolio_eset(pf_info,simulation=1000,convex_hull=False):
|
|
1233
1233
|
footnote1="年化收益率标准差-->"
|
1234
1234
|
footnote2="\n\n基于给定的成份证券构造"+str(simulation)+"个投资组合"
|
1235
1235
|
footnote3="\n观察期间:"+hstart+"至"+hend
|
1236
|
-
footnote4="\n
|
1236
|
+
footnote4="\n数据来源: Sina/EM/Stooq/Yahoo, "+str(stoday)
|
1237
1237
|
else:
|
1238
1238
|
if pname == '': pname='Investment Portfolio'
|
1239
1239
|
|
@@ -1244,7 +1244,7 @@ def portfolio_eset(pf_info,simulation=1000,convex_hull=False):
|
|
1244
1244
|
footnote1="Annualized Std -->\n\n"
|
1245
1245
|
footnote2="Based on given securities, constructed "+str(simulation)+" portfolios\n"
|
1246
1246
|
footnote3="Period of observation: "+hstart+" to "+hend
|
1247
|
-
footnote4="\
|
1247
|
+
footnote4="\nData source: Sina/EM/Stooq/Yahoo, "+str(stoday)
|
1248
1248
|
|
1249
1249
|
plt.xlabel(footnote1+footnote2+footnote3+footnote4,fontsize=xlabel_txt_size)
|
1250
1250
|
|
@@ -2625,7 +2625,7 @@ def security_correlation(tickers,start,end,info_type='Close'):
|
|
2625
2625
|
|
2626
2626
|
footnote3="\n观察期间: "+start+'至'+end
|
2627
2627
|
import datetime as dt; stoday=dt.date.today()
|
2628
|
-
footnote4="
|
2628
|
+
footnote4=";数据来源:Sina/EM/stooq/Yahoo,"+str(stoday)
|
2629
2629
|
|
2630
2630
|
fontxlabel={'size':6}
|
2631
2631
|
plt.xlabel(footnote1+footnote2+footnote3+footnote4,fontxlabel)
|
siat/translate.py
CHANGED
@@ -17,6 +17,7 @@ SIAT:Security Investment Analysis Tool
|
|
17
17
|
#关闭所有警告
|
18
18
|
import warnings; warnings.filterwarnings('ignore')
|
19
19
|
from siat.common import *
|
20
|
+
from siat.yf_name import *
|
20
21
|
#==============================================================================
|
21
22
|
def ectranslate(eword):
|
22
23
|
"""
|
@@ -1951,13 +1952,16 @@ def codetranslate1(code):
|
|
1951
1952
|
['^NDQ','NASDAQ Composite Index'],['^NDX','NASDAQ 100 Index'],
|
1952
1953
|
['IBM','IBM Corp'],
|
1953
1954
|
|
1954
|
-
['1155.KL','Maybank'],['5347.KL','Tenaga Nasional
|
1955
|
-
['1295.KL','Public Bank
|
1956
|
-
['5819.KL','Hong Leong Bank'],['5183.KL','Petronas Chemical'],
|
1957
|
-
['7113.KL','Top Glove
|
1958
|
-
['6888.KL','Axiata
|
1955
|
+
['1155.KL','Maybank(KL)'],['5347.KL','Tenaga Nasional(KL)'],
|
1956
|
+
['1295.KL','Public Bank(KL)'],['1066.KL','RHB Bank(KL)'],
|
1957
|
+
['5819.KL','Hong Leong Bank(KL)'],['5183.KL','Petronas Chemical(KL)'],
|
1958
|
+
['7113.KL','Top Glove(KL)'],['3182.KL','Genting(KL)'],
|
1959
|
+
['6888.KL','Axiata(KL)'],['1015.KL','AmBank(KL)'],
|
1959
1960
|
|
1960
|
-
['D05.SI','DBS Bank(SG)'],['
|
1961
|
+
['D05.SI','DBS Bank(SG)'],['DBSDY','DBS Bank(US)'],
|
1962
|
+
['U11.SI','UOB Bank(SG)'],['UOVEY','UOB Bank(US)'],
|
1963
|
+
['O39.SI','OCBC Bank(SG)'],['OVCHY','OCBC Bank(US)'],
|
1964
|
+
['S41.SI','Hong Leong Finance(SG)'],
|
1961
1965
|
|
1962
1966
|
['000002.SS','SSE A Index'],['000003.SS','SSE B Index'],
|
1963
1967
|
['399107.SZ','SZE A Index'],['399108.SZ','SZE B Index'],
|
@@ -3263,10 +3267,9 @@ def ticker1_name(ticker,ticker_type='auto'):
|
|
3263
3267
|
return tname
|
3264
3268
|
"""
|
3265
3269
|
tname=codetranslate(ticker)
|
3266
|
-
if tname != ticker:
|
3270
|
+
if tname != ticker: #翻译成功,注意证券代码与其名称相同的情形,例如IBM
|
3267
3271
|
return tname
|
3268
3272
|
|
3269
|
-
|
3270
3273
|
symbol=ticker1_cvt2yahoo(ticker)
|
3271
3274
|
|
3272
3275
|
#申万行业指数
|
@@ -3325,19 +3328,28 @@ def ticker1_name(ticker,ticker_type='auto'):
|
|
3325
3328
|
if '基金' not in tname: tname=tname + '基金'
|
3326
3329
|
break
|
3327
3330
|
|
3331
|
+
#如未查到,尝试雅虎名称
|
3332
|
+
if tname==symbol:
|
3333
|
+
#不包括中国大陆和香港证券,这些都应在前面查到?新上市的可能查不到
|
3334
|
+
#if ('.SS' not in symbol) and ('.SH' not in symbol) and ('.SZ' not in symbol) and ('.BJ' not in symbol) and ('.HK' not in symbol):
|
3335
|
+
tname=yahoo_name2(symbol)
|
3336
|
+
if tname==symbol:
|
3337
|
+
return tname
|
3338
|
+
|
3328
3339
|
#加港股标记
|
3329
|
-
if ('.HK' in ticker) and not ("港股" in tname):
|
3330
|
-
tname=tname+"港股"
|
3340
|
+
if ('.HK' in ticker) and not (text_lang("港股","(HK)") in tname):
|
3341
|
+
tname=tname+text_lang("港股","(HK)")
|
3331
3342
|
#加港股人民币柜台标志
|
3332
3343
|
HKcode=ticker.split('.')[0]
|
3333
|
-
if len(HKcode)==5 and HKcode[0]=='8' and not ("人民币" in tname):
|
3334
|
-
tname=tname+"(
|
3344
|
+
if len(HKcode)==5 and HKcode[0]=='8' and not (text_lang("人民币","(RMB)") in tname):
|
3345
|
+
tname=tname+text_lang("人民币","(RMB)")
|
3335
3346
|
|
3336
|
-
|
3347
|
+
#加美股标记:绝大多数中概股在前面已经查完,真正美股没必要标注美股
|
3337
3348
|
"""
|
3338
|
-
if len(ticker.split('.'))==1 and not ("美股" in tname):
|
3339
|
-
tname=tname+"美股"
|
3340
|
-
"""
|
3349
|
+
if len(ticker.split('.'))==1 and not (text_lang("美股","(US)") in tname):
|
3350
|
+
tname=tname+text_lang("美股","(US)")
|
3351
|
+
"""
|
3352
|
+
|
3341
3353
|
return tname
|
3342
3354
|
|
3343
3355
|
#==============================================================================
|
siat/yf_name.py
ADDED
@@ -0,0 +1,325 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""
|
3
|
+
本模块功能:SIAT公共转换函数,获取雅虎证券代码英文名称
|
4
|
+
所属工具包:证券投资分析工具SIAT
|
5
|
+
SIAT:Security Investment Analysis Tool
|
6
|
+
创建日期:2024年7月12日
|
7
|
+
最新修订日期:
|
8
|
+
作者:王德宏 (WANG Dehong, Peter)
|
9
|
+
作者单位:北京外国语大学国际商学院
|
10
|
+
作者邮件:wdehong2000@163.com
|
11
|
+
版权所有:王德宏
|
12
|
+
用途限制:仅限研究与教学使用,不可商用!商用需要额外授权。
|
13
|
+
特别声明:作者不对使用本工具进行证券投资导致的任何损益负责!
|
14
|
+
"""
|
15
|
+
#==============================================================================
|
16
|
+
#关闭所有警告
|
17
|
+
import warnings; warnings.filterwarnings('ignore')
|
18
|
+
|
19
|
+
#==============================================================================
|
20
|
+
if __name__=='__main__':
|
21
|
+
test_yahoo_access()
|
22
|
+
|
23
|
+
def test_yahoo_access():
|
24
|
+
"""
|
25
|
+
功能:测试雅虎财经是否可达
|
26
|
+
"""
|
27
|
+
url="https://finance.yahoo.com"
|
28
|
+
result=test_website(url)
|
29
|
+
|
30
|
+
return result
|
31
|
+
|
32
|
+
if __name__=='__main__':
|
33
|
+
url="https://finance.yahoo.com"
|
34
|
+
test_website(url)
|
35
|
+
|
36
|
+
def test_website(url):
|
37
|
+
import requests
|
38
|
+
try:
|
39
|
+
response = requests.get(url)
|
40
|
+
if response.status_code == 200:
|
41
|
+
#print(f"Website {url} is accessible")
|
42
|
+
return True
|
43
|
+
else:
|
44
|
+
#print(f"Website {url} access failed,Code:{response.status_code}")
|
45
|
+
return False
|
46
|
+
except requests.exceptions.RequestException:
|
47
|
+
print(f"Website {url} is inaccessible")
|
48
|
+
return False
|
49
|
+
|
50
|
+
if __name__=='__main__':
|
51
|
+
s = "Hello, world. Python is fun!"
|
52
|
+
split_string(s)
|
53
|
+
|
54
|
+
def split_string(s):
|
55
|
+
import re
|
56
|
+
# 使用正则表达式匹配空格、逗号或句点
|
57
|
+
return re.split(r'[ ,.]', s)
|
58
|
+
|
59
|
+
if __name__=='__main__':
|
60
|
+
s = "Hello, world. Python is fun!"
|
61
|
+
filter_string(s)
|
62
|
+
|
63
|
+
def filter_string(s):
|
64
|
+
#排除证券名称中的多余空格、逗号和句号
|
65
|
+
slist=split_string(s)
|
66
|
+
s1=''
|
67
|
+
for sl in slist:
|
68
|
+
if sl != '':
|
69
|
+
if s1=='':
|
70
|
+
s1=sl
|
71
|
+
else:
|
72
|
+
s1=s1+' '+sl
|
73
|
+
|
74
|
+
return s1
|
75
|
+
#==============================================================================
|
76
|
+
if __name__=='__main__':
|
77
|
+
ticker='1155.KL'
|
78
|
+
ticker='MSFT'
|
79
|
+
ticker='G13.SI'
|
80
|
+
ticker='S63.SI'
|
81
|
+
ticker='SUS.ST'
|
82
|
+
ticker='600519.SS'
|
83
|
+
ticker='U11.SI'
|
84
|
+
ticker='1295.KL'
|
85
|
+
ticker='BMW.DE'
|
86
|
+
ticker='MBG.DE'
|
87
|
+
ticker='005930.KS'
|
88
|
+
ticker='LI'
|
89
|
+
ticker='600599.SS'
|
90
|
+
ticker='600123.SS'
|
91
|
+
ticker='600123.ss'
|
92
|
+
ticker='600999.ss'
|
93
|
+
ticker='600111.ss'
|
94
|
+
ticker='600333.ss'
|
95
|
+
ticker='600444.ss'
|
96
|
+
ticker='600777.ss'
|
97
|
+
|
98
|
+
yahoo_name1(ticker)
|
99
|
+
|
100
|
+
#极端测试
|
101
|
+
inamelist=[]
|
102
|
+
for i in range(100,150+1):
|
103
|
+
icode=str(600000+i)+'.SS'
|
104
|
+
iname=yahoo_name1(icode)
|
105
|
+
print(icode+':',iname)
|
106
|
+
inamelist=inamelist+[iname]
|
107
|
+
|
108
|
+
#发现问题后单独测试
|
109
|
+
ticker='600087.SS'
|
110
|
+
yahoo_name1(ticker)
|
111
|
+
|
112
|
+
yahoo_name1(ticker,short_name=True)
|
113
|
+
|
114
|
+
ticker_name(ticker)
|
115
|
+
|
116
|
+
def yahoo_name1(ticker,short_name=False,add_suffix=True,maxlen=80):
|
117
|
+
"""
|
118
|
+
功能:从雅虎财经取得全球证券名称,仅限英文。需要去掉常用词,如Corporation
|
119
|
+
优点:对未定义的证券代码也可给出英文名称,即使在中文语言环境中
|
120
|
+
现存问题:需要访问雅虎,且耗时稍长
|
121
|
+
"""
|
122
|
+
#测试雅虎
|
123
|
+
if not test_yahoo_access():
|
124
|
+
return ticker
|
125
|
+
|
126
|
+
#需要去掉的单词,注意顺序不要轻易颠倒!子串包含的,要长文在前!
|
127
|
+
remove_list=['Corporation','Berhad','Bhd','PLC','plc','Plc', \
|
128
|
+
', Inc.','Inc.', \
|
129
|
+
'AG ST','AG','NA O.N.', \
|
130
|
+
'Aktiengesellschaft','(publ)', \
|
131
|
+
', LLC','LLC', \
|
132
|
+
'Co., Ltd.','Co., Ltd','Co.,Ltd.','Co.,Ltd','Co,.Ltd','co.,ltd', \
|
133
|
+
'Co. LTD','CO.,LTD','Co., Limited', \
|
134
|
+
'Ltd.','Ltd', \
|
135
|
+
'Company', \
|
136
|
+
'Incorporated', \
|
137
|
+
'Corp., Ltd.','Corp.','Corp','AB', \
|
138
|
+
'Limited', \
|
139
|
+
|
140
|
+
#强行缩短名称长度,去掉不影响名称的花哨词语
|
141
|
+
'(Group)','Group', \
|
142
|
+
'Science & Technology','High-Tech','High Technology', \
|
143
|
+
|
144
|
+
#扫尾漏网之逗号句点
|
145
|
+
'.',',']
|
146
|
+
|
147
|
+
"""
|
148
|
+
remove_list=['Corporation','Berhad','Bhd','PLC','plc','Limited', \
|
149
|
+
'Inc', \
|
150
|
+
'AG ST','AG','NA O.N.', \
|
151
|
+
'Aktiengesellschaft','(publ)', \
|
152
|
+
'LLC', \
|
153
|
+
'Co., Ltd.','Ltd.','Ltd', \
|
154
|
+
'Company', \
|
155
|
+
'Incorporated','Corp.','AB']
|
156
|
+
"""
|
157
|
+
#去掉ticker中的.US后缀
|
158
|
+
ticker=ticker.upper()
|
159
|
+
ticker1=ticker.replace('.US', "")
|
160
|
+
|
161
|
+
import yfinance as yf
|
162
|
+
ticker_info = yf.Ticker(ticker1)
|
163
|
+
|
164
|
+
try:
|
165
|
+
t_info=ticker_info.info
|
166
|
+
except:
|
167
|
+
pass
|
168
|
+
return ticker
|
169
|
+
|
170
|
+
try:
|
171
|
+
if short_name:
|
172
|
+
t_name0=t_info['shortName']
|
173
|
+
else:
|
174
|
+
t_name0=t_info['longName']
|
175
|
+
if len(t_name0) > maxlen:
|
176
|
+
t_name0=t_info['shortName']
|
177
|
+
except:
|
178
|
+
pass
|
179
|
+
return ticker #未找到ticker
|
180
|
+
|
181
|
+
#过滤逗号句点?过滤也可能带来更多复杂性!
|
182
|
+
#t_name1=filter_string(t_name0)
|
183
|
+
t_name1=t_name0
|
184
|
+
|
185
|
+
for r in remove_list:
|
186
|
+
t_name1=t_name1.replace(r, "")
|
187
|
+
|
188
|
+
#排除前后空格
|
189
|
+
t_name=t_name1.strip()
|
190
|
+
|
191
|
+
#增加交易所后缀
|
192
|
+
if add_suffix:
|
193
|
+
tlist=ticker.split('.')
|
194
|
+
if len(tlist)==2:
|
195
|
+
sid=tlist[1]
|
196
|
+
if sid not in ['SS','SZ','BJ']:
|
197
|
+
t_name=t_name+'('+sid+')'
|
198
|
+
|
199
|
+
return t_name
|
200
|
+
|
201
|
+
#==============================================================================
|
202
|
+
if __name__=='__main__':
|
203
|
+
ticker='1155.KL'
|
204
|
+
ticker='MSFT'
|
205
|
+
ticker='G13.SI'
|
206
|
+
ticker='S63.SI'
|
207
|
+
ticker='SUS.ST'
|
208
|
+
ticker='600519.SS'
|
209
|
+
ticker='U11.SI'
|
210
|
+
ticker='1295.KL'
|
211
|
+
ticker='BMW.DE'
|
212
|
+
ticker='MBG.DE'
|
213
|
+
ticker='005930.KS'
|
214
|
+
ticker='LI'
|
215
|
+
ticker='600599.SS'
|
216
|
+
ticker='600123.SS'
|
217
|
+
ticker='600123.ss'
|
218
|
+
ticker='600999.ss'
|
219
|
+
ticker='600111.ss'
|
220
|
+
ticker='600333.ss'
|
221
|
+
ticker='600444.ss'
|
222
|
+
ticker='600777.ss'
|
223
|
+
|
224
|
+
yahoo_name2(ticker)
|
225
|
+
|
226
|
+
#极端测试
|
227
|
+
inamelist=[]
|
228
|
+
for i in range(0,50+1):
|
229
|
+
icode=str(600000+i)+'.SS'
|
230
|
+
iname=yahoo_name2(icode)
|
231
|
+
print(icode+':',iname)
|
232
|
+
inamelist=inamelist+[iname]
|
233
|
+
|
234
|
+
#发现问题后单独测试
|
235
|
+
ticker='600088.SS'
|
236
|
+
yahoo_name1(ticker)
|
237
|
+
yahoo_name2(ticker)
|
238
|
+
|
239
|
+
yahoo_name2(ticker,short_name=True)
|
240
|
+
|
241
|
+
ticker_name(ticker)
|
242
|
+
|
243
|
+
def yahoo_name2(ticker,short_name=False,add_suffix=True,maxlen=80):
|
244
|
+
"""
|
245
|
+
功能:从雅虎财经取得全球证券名称,仅限英文。需要去掉常用词,如Corporation
|
246
|
+
优点:对未定义的证券代码也可给出英文名称,即使在中文语言环境中
|
247
|
+
现存问题:需要访问雅虎,且耗时稍长
|
248
|
+
"""
|
249
|
+
#定义需要去掉的单词,注意顺序不要轻易颠倒!子串包含的,要长文在前!前置留空格的为避免误删
|
250
|
+
remove_list=[' CORPORATION',' BERHAD',' BHD',' PLC',' INC',' AG ST',' NA O N', \
|
251
|
+
' AKTIENGESELLSCHAFT','(PUBL)',' LLC', \
|
252
|
+
' CO LTD',' CO LIMITED',' LTD',' LIMITED',' COMPANY',' INCORPORATED', \
|
253
|
+
' CORP LTD',' CORP',' AB', \
|
254
|
+
'(GROUP)',' GROUP', \
|
255
|
+
|
256
|
+
' SCIENCE & TECHNOLOGY',' HIGH-TECH',' HIGH TECHNOLOGY']
|
257
|
+
|
258
|
+
|
259
|
+
#测试雅虎
|
260
|
+
if not test_yahoo_access():
|
261
|
+
return ticker
|
262
|
+
|
263
|
+
#去掉ticker中的.US后缀
|
264
|
+
ticker=ticker.upper()
|
265
|
+
ticker1=ticker.replace('.US', "")
|
266
|
+
|
267
|
+
import yfinance as yf
|
268
|
+
ticker_info = yf.Ticker(ticker1)
|
269
|
+
|
270
|
+
try:
|
271
|
+
t_info=ticker_info.info
|
272
|
+
except:
|
273
|
+
pass
|
274
|
+
return ticker
|
275
|
+
|
276
|
+
try:
|
277
|
+
if short_name:
|
278
|
+
t_name0=t_info['shortName']
|
279
|
+
else:
|
280
|
+
t_name0=t_info['longName']
|
281
|
+
if len(t_name0) > maxlen:
|
282
|
+
t_name0=t_info['shortName']
|
283
|
+
except:
|
284
|
+
pass
|
285
|
+
return ticker #未找到ticker
|
286
|
+
|
287
|
+
#去掉逗号和句点
|
288
|
+
name1=t_name0.replace(',',' ')
|
289
|
+
name2=name1.replace('.',' ')
|
290
|
+
|
291
|
+
#将字符串中的多个空格变为单个空格
|
292
|
+
name3=replace_multiple_spaces(name2)
|
293
|
+
|
294
|
+
#将字符串字母全部大写
|
295
|
+
name4=name3.upper()
|
296
|
+
|
297
|
+
name5=name4
|
298
|
+
for ss in remove_list:
|
299
|
+
name5=name5.replace(ss,'')
|
300
|
+
|
301
|
+
name6=name5.strip()
|
302
|
+
|
303
|
+
name7=t_name0[:len(name6)]
|
304
|
+
|
305
|
+
#增加交易所后缀
|
306
|
+
t_name=name7
|
307
|
+
if add_suffix:
|
308
|
+
tlist=ticker.split('.')
|
309
|
+
if len(tlist)==2:
|
310
|
+
sid=tlist[1]
|
311
|
+
if sid not in ['SS','SZ','BJ']:
|
312
|
+
t_name=t_name+'('+sid+')'
|
313
|
+
|
314
|
+
return t_name
|
315
|
+
#==============================================================================
|
316
|
+
#==============================================================================
|
317
|
+
#==============================================================================
|
318
|
+
#==============================================================================
|
319
|
+
#==============================================================================
|
320
|
+
#==============================================================================
|
321
|
+
#==============================================================================
|
322
|
+
#==============================================================================
|
323
|
+
#==============================================================================
|
324
|
+
#==============================================================================
|
325
|
+
#==============================================================================
|
@@ -18,7 +18,7 @@ siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
|
|
18
18
|
siat/capm_beta2.py,sha256=d7lZ-VXVVmBkMVGDPlozL-9gAU3cYpHG23X1WSRCOgY,26907
|
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=
|
21
|
+
siat/common.py,sha256=VU4AhQZGQmTCcw-lbiuG7jSz7Dsy1psOi9ayaAbBDdY,151635
|
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
|
@@ -69,7 +69,7 @@ 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
|
72
|
-
siat/markowitz2.py,sha256=
|
72
|
+
siat/markowitz2.py,sha256=oStv4V74OiqBk-rnBPo6QJTUSNe1FCyT1Yl6-Fx_mHc,113934
|
73
73
|
siat/markowitz_ccb_test.py,sha256=xBkkoaNHdq9KSUrNuHGgKTdNYUvgi84kNYcf719eoyE,1593
|
74
74
|
siat/markowitz_ef_test.py,sha256=wjNlICkgRIqnonPeSIHo4Mu2GRtb9dr21wDt2kMNEcI,4032
|
75
75
|
siat/markowitz_old.py,sha256=Lf7O_4QWT8RsdkHiUyc_7kKY3eZjKDtFR89Fz3pwYnY,33046
|
@@ -131,14 +131,15 @@ 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=
|
134
|
+
siat/translate.py,sha256=v4__NZBhC7cVevl_lKxwhcKQa_UFuyVK1pdB6_KEflI,217855
|
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
|
142
|
-
siat-3.2.
|
143
|
-
siat-3.2.
|
144
|
-
siat-3.2.
|
141
|
+
siat/yf_name.py,sha256=CI3xZJSMGbDCKhmpL8_6DdebH6EDnVUaSfdTSf-FnA8,10199
|
142
|
+
siat-3.2.59.dist-info/METADATA,sha256=suq3jI9DoMGKMeRXn-DbMpSlZhVwWtopNKsfiBjgOjw,7310
|
143
|
+
siat-3.2.59.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
144
|
+
siat-3.2.59.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
|
145
|
+
siat-3.2.59.dist-info/RECORD,,
|
File without changes
|
File without changes
|