siat 3.1.12__py3-none-any.whl → 3.1.13__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 -78
- siat/exchange_bond_china.pickle +0 -0
- siat/fund_china.pickle +0 -0
- siat/fund_china.py +80 -18
- siat/markowitz2.py +122 -47
- siat/sector_china.py +6 -3
- siat/security_price2.py +43 -9
- siat/security_prices.py +31 -16
- siat/security_trend2.py +10 -2
- siat/stock.py +20 -3
- siat/stock_info.pickle +0 -0
- siat/translate.py +18 -14
- siat/translate_20240606.py +4206 -0
- {siat-3.1.12.dist-info → siat-3.1.13.dist-info}/METADATA +1 -1
- {siat-3.1.12.dist-info → siat-3.1.13.dist-info}/RECORD +17 -16
- {siat-3.1.12.dist-info → siat-3.1.13.dist-info}/WHEEL +0 -0
- {siat-3.1.12.dist-info → siat-3.1.13.dist-info}/top_level.txt +0 -0
siat/security_trend2.py
CHANGED
@@ -71,8 +71,6 @@ if __name__=='__main__':
|
|
71
71
|
source='auto'
|
72
72
|
ticker_type='auto'
|
73
73
|
|
74
|
-
df=security_trend(ticker,indicator=indicator)
|
75
|
-
|
76
74
|
#测试组4
|
77
75
|
ticker=["GCZ25.CMX","GCZ24.CMX"]
|
78
76
|
indicator='Close'
|
@@ -80,6 +78,16 @@ if __name__=='__main__':
|
|
80
78
|
end="2020-6-30"
|
81
79
|
|
82
80
|
|
81
|
+
#测试组5
|
82
|
+
ticker=["180801.SZ","180101.SZ"]
|
83
|
+
indicator='Close'
|
84
|
+
start="2024-1-1"
|
85
|
+
end="2024-5-30"
|
86
|
+
ticker_type='fund'
|
87
|
+
|
88
|
+
df=security_trend(ticker,indicator,start,end,ticker_type=ticker_type)
|
89
|
+
|
90
|
+
|
83
91
|
def security_trend(ticker,indicator='Close', \
|
84
92
|
start='default',end='default', \
|
85
93
|
|
siat/stock.py
CHANGED
@@ -596,11 +596,14 @@ if __name__ =="__main__":
|
|
596
596
|
average_value=False
|
597
597
|
|
598
598
|
ticker='600519.SS'; indicator='Exp Ret Volatility%'
|
599
|
-
fromdate='2022-3-25'; todate='2024-3-25'
|
600
599
|
|
600
|
+
ticker='180202.SZ'
|
601
|
+
ticker_type='fund'
|
601
602
|
|
602
|
-
|
603
|
-
|
603
|
+
fromdate='2024-1-1'; todate='2024-5-25'
|
604
|
+
|
605
|
+
|
606
|
+
df=security_indicator(ticker,indicator,fromdate,todate,ticker_type=ticker_type)
|
604
607
|
|
605
608
|
def security_indicator(ticker,indicator,fromdate,todate, \
|
606
609
|
zeroline=False, \
|
@@ -624,6 +627,20 @@ def security_indicator(ticker,indicator,fromdate,todate, \
|
|
624
627
|
print(" #Error(security_indicator): zero record found for",ticker)
|
625
628
|
return None
|
626
629
|
|
630
|
+
#奇怪错误:仅仅抓取到1个记录,应对办法:改变开始时间,貌似仅存在于REIT基金
|
631
|
+
if len(pricedf)==1:
|
632
|
+
fromdate1=date_adjust(fromdate,adjust=-365*2)
|
633
|
+
pricedf,found=get_price_1ticker_mixed(ticker=ticker,fromdate=fromdate1, \
|
634
|
+
todate=todate,source=source,ticker_type=ticker_type)
|
635
|
+
if len(pricedf)==1:
|
636
|
+
fromdate1=date_adjust(fromdate,adjust=-365*1)
|
637
|
+
pricedf,found=get_price_1ticker_mixed(ticker=ticker,fromdate=fromdate1, \
|
638
|
+
todate=todate,source=source,ticker_type=ticker_type)
|
639
|
+
if len(pricedf)==1:
|
640
|
+
fromdate1=fromdate
|
641
|
+
pricedf,found=get_price_1ticker_mixed(ticker=ticker,fromdate=fromdate1, \
|
642
|
+
todate=todate,source=source,ticker_type=ticker_type)
|
643
|
+
|
627
644
|
# 去掉时区信息,避免日期时区冲突问题
|
628
645
|
pricedf=df_index_timezone_remove(pricedf)
|
629
646
|
"""
|
siat/stock_info.pickle
CHANGED
Binary file
|
siat/translate.py
CHANGED
@@ -1211,10 +1211,10 @@ def codetranslate0(code):
|
|
1211
1211
|
["162204",'泰达宏利行业混合A'],["015601",'泰达宏利行业混合C'],
|
1212
1212
|
["660015",'农银行业轮动混合A'],["015850",'农银行业轮动混合C'],
|
1213
1213
|
|
1214
|
-
["SPY",'SPDR
|
1215
|
-
["SPYG",'SPDR
|
1216
|
-
["VOO",'Vanguard
|
1217
|
-
["VOOV",'Vanguard
|
1214
|
+
["SPY",'SPDR标普500ETF'],['SPYD','SPDR标普500股利优先ETF'],
|
1215
|
+
["SPYG",'SPDR标普500成长优先ETF'],['SPYV','SPDR标普500价值优先ETF'],
|
1216
|
+
["VOO",'Vanguard标普500ETF'],['VOOG','Vanguard标普500成长优先ETF'],
|
1217
|
+
["VOOV",'Vanguard标普500价值优先ETF'],['IVV','iShares标普500ETF'],
|
1218
1218
|
["DGT",'SPDR Global Dow ETF'],['ICF','iShares C&S REIT ETF'],
|
1219
1219
|
["FRI",'FT S&P REIT Index Fund'],['IEMG','iShares核心MSCI新兴市场ETF'],
|
1220
1220
|
['245710.KS','KINDEX越南VN30指数ETF'],['02801.HK','iShares核心MSCI中国指数ETF'],
|
@@ -2990,16 +2990,15 @@ if __name__=='__main__':
|
|
2990
2990
|
_,_,tickerlist,sharelist=decompose_portfolio(portfolio)
|
2991
2991
|
leading_blanks=2
|
2992
2992
|
|
2993
|
-
def print_tickerlist_sharelist(tickerlist,sharelist,leading_blanks=2):
|
2993
|
+
def print_tickerlist_sharelist(tickerlist,sharelist,leading_blanks=2,ticker_type='auto'):
|
2994
2994
|
"""
|
2995
|
-
|
2995
|
+
功能:纵向打印投资组合的成分股和持股比例
|
2996
2996
|
输入:
|
2997
|
-
tickerlist
|
2997
|
+
tickerlist:成分股列表
|
2998
2998
|
sharelist:持股份额列表
|
2999
2999
|
leading_blanks:打印前导空格数
|
3000
|
-
注意:放在本文件中的原因是需要使用函数codetranslate
|
3001
3000
|
"""
|
3002
|
-
|
3001
|
+
#检查成分股与持仓比例个数是否一致
|
3003
3002
|
if not (len(tickerlist) == len(sharelist)):
|
3004
3003
|
print(" #Error(): numbers of tickers and shares are not same")
|
3005
3004
|
return
|
@@ -3017,12 +3016,16 @@ def print_tickerlist_sharelist(tickerlist,sharelist,leading_blanks=2):
|
|
3017
3016
|
sharelist_array = np.array(sharelist)
|
3018
3017
|
total_shares=sharelist_array.sum()
|
3019
3018
|
weights=sharelist_array/total_shares
|
3019
|
+
|
3020
|
+
#预处理ticker_type
|
3021
|
+
ticker_type_list=ticker_type_preprocess_mticker_mixed(tickerlist,ticker_type)
|
3020
3022
|
|
3021
3023
|
import pandas as pd
|
3022
3024
|
df=pd.DataFrame(columns=['证券代码','证券名称','持仓比例'])
|
3023
3025
|
for t in tickerlist:
|
3024
3026
|
pos=tickerlist.index(t)
|
3025
|
-
|
3027
|
+
tt=ticker_type_list[pos]
|
3028
|
+
tname=ticker_name(t,tt)
|
3026
3029
|
tweight=weights[pos]
|
3027
3030
|
|
3028
3031
|
row=pd.Series({'证券代码':t,'证券名称':tname,'持仓比例':tweight})
|
@@ -3060,7 +3063,7 @@ def print_tickerlist_sharelist(tickerlist,sharelist,leading_blanks=2):
|
|
3060
3063
|
|
3061
3064
|
if __name__=='__main__':
|
3062
3065
|
print_tickerlist_sharelist(tickerlist,sharelist,leading_blanks=2)
|
3063
|
-
|
3066
|
+
|
3064
3067
|
#==============================================================================
|
3065
3068
|
#==============================================================================
|
3066
3069
|
#整理证券名称
|
@@ -3225,9 +3228,10 @@ def ticker1_name(ticker,ticker_type='auto'):
|
|
3225
3228
|
return ticker
|
3226
3229
|
|
3227
3230
|
#快速转换
|
3228
|
-
|
3229
|
-
|
3230
|
-
|
3231
|
+
if ticker_type=='auto':
|
3232
|
+
tname=codetranslate(ticker)
|
3233
|
+
if tname != ticker: #翻译成功
|
3234
|
+
return tname
|
3231
3235
|
|
3232
3236
|
symbol=ticker1_cvt2yahoo(ticker)
|
3233
3237
|
|