siat 3.10.125__py3-none-any.whl → 3.10.126__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 +106 -2
- siat/exchange_bond_china.pickle +0 -0
- siat/fund_china.pickle +0 -0
- siat/stock.py +10 -2
- siat/stock_info.pickle +0 -0
- {siat-3.10.125.dist-info → siat-3.10.126.dist-info}/METADATA +234 -226
- siat-3.10.126.dist-info/RECORD +76 -0
- {siat-3.10.125.dist-info → siat-3.10.126.dist-info}/WHEEL +1 -1
- {siat-3.10.125.dist-info → siat-3.10.126.dist-info/licenses}/LICENSE +0 -0
- {siat-3.10.125.dist-info → siat-3.10.126.dist-info}/top_level.txt +0 -0
- siat/__init__ -20240701.py +0 -65
- siat/__init__.py.backup_20250214.py +0 -73
- siat/alpha_vantage_test.py +0 -24
- siat/assets_liquidity_test.py +0 -44
- siat/barrons_scraping_test.py +0 -276
- siat/beta_adjustment_test.py +0 -77
- siat/bond_test.py +0 -142
- siat/capm_beta_test.py +0 -49
- siat/cmat_commons.py +0 -961
- siat/compare_cross_test.py +0 -117
- siat/concepts_iwencai.py +0 -86
- siat/concepts_kpl.py +0 -93
- siat/cryptocurrency_test.py +0 -71
- siat/derivative.py +0 -1111
- siat/economy-20230125.py +0 -1206
- siat/economy_test.py +0 -360
- siat/esg_test.py +0 -63
- siat/fama_french_test.py +0 -115
- siat/financial_statements_test.py +0 -31
- siat/financials2 - /321/205/320/231/320/277/321/206/320/254/320/274.py" +0 -341
- siat/financials_china2_test.py +0 -67
- siat/financials_china2_test2.py +0 -88
- siat/financials_china2_test3.py +0 -87
- siat/financials_china_test.py +0 -475
- siat/financials_china_test2.py +0 -197
- siat/financials_china_test2_fin_indicator.py +0 -197
- siat/financials_test.py +0 -713
- siat/fred_test.py +0 -40
- siat/fund_china_test.py +0 -175
- siat/fund_test.py +0 -40
- siat/future_china_test.py +0 -37
- siat/global_index_test.py +0 -66
- siat/grafix_test.py +0 -112
- siat/holding_risk_test.py +0 -13
- siat/local_debug_test.py +0 -100
- siat/markowitz2-20240620.py +0 -2614
- siat/markowitz_ccb_test.py +0 -37
- siat/markowitz_ef_test.py +0 -136
- siat/markowitz_old.py +0 -871
- siat/markowitz_simple-20230709.py +0 -370
- siat/markowitz_test.py +0 -164
- siat/markowitz_test2.py +0 -69
- siat/ml_cases_example1.py +0 -60
- siat/option_china_test.py +0 -447
- siat/option_pricing_test.py +0 -81
- siat/option_sina_api_test.py +0 -112
- siat/proxy_test.py +0 -84
- siat/quandl_test.py +0 -39
- siat/risk_adjusted_return_test.py +0 -81
- siat/risk_evaluation_test.py +0 -96
- siat/risk_free_rate_test.py +0 -127
- siat/sector_china_test.py +0 -203
- siat/security_price.py +0 -831
- siat/security_prices_test.py +0 -310
- siat/security_trend2-20240620.py +0 -493
- siat/setup.py +0 -41
- siat/shenwan index history test.py +0 -41
- siat/stock_china_test.py +0 -38
- siat/stock_info_test.py +0 -189
- siat/stock_list_china_test.py +0 -33
- siat/stock_technical-20240620.py +0 -2736
- siat/stock_test.py +0 -487
- siat/temp.py +0 -36
- siat/test2_graphviz.py +0 -484
- siat/test_graphviz.py +0 -411
- siat/test_markowitz_simple.py +0 -198
- siat/test_markowitz_simple_revised.py +0 -215
- siat/test_markowitz_simple_revised2.py +0 -218
- siat/transaction_test.py +0 -436
- siat/translate-20230125.py +0 -2107
- siat/translate-20230206.py +0 -2109
- siat/translate-20230215.py +0 -2158
- siat/translate_20240606.py +0 -4206
- siat/translate_241003_keep.py +0 -4300
- siat/universal_test.py +0 -100
- siat/valuation_market_china_test.py +0 -36
- siat-3.10.125.dist-info/RECORD +0 -152
siat/markowitz_ccb_test.py
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
#==============================================================================
|
4
|
-
import os; os.chdir("S:/siat"); from siat import *
|
5
|
-
#==============================================================================
|
6
|
-
|
7
|
-
#启用Python的证券爬虫和分析工具
|
8
|
-
from siat import *
|
9
|
-
|
10
|
-
#定义投资组合:银行概念基金1号
|
11
|
-
Market={'Market':('China','000300.SS','银行概念基金1号')}
|
12
|
-
Stocks1={'601939.SS':.3,'601398.SS':.2,'601288.SS':.15,'601988.SS':.1}
|
13
|
-
Stocks2={'601328.SS':.1,'000001.SZ':.05,'601168.SS':.05,'601229.SS':.05}
|
14
|
-
portfolio=dict(Market,**Stocks1,**Stocks2)
|
15
|
-
|
16
|
-
#比较业绩表现:银行概念基金1号,等权重组合,流动性组合
|
17
|
-
pf_info=portfolio_expret(portfolio,'2021-12-3')
|
18
|
-
|
19
|
-
#观察投资组合成分股收益率之间的相关性
|
20
|
-
portfolio_corr(pf_info)
|
21
|
-
|
22
|
-
#观察马科维茨可行集:收益率-标准差,接近椭圆形,可用于解释有效边界(左上沿)
|
23
|
-
es=portfolio_es(pf_info,simulation=5000)
|
24
|
-
#------------------------------------------------------------------------------
|
25
|
-
|
26
|
-
portfolio_optimize_strategy(pf_info,ratio='sharpe',simulation=1000)
|
27
|
-
|
28
|
-
portfolio_optimize_strategy(pf_info,ratio='sortino',simulation=1000)
|
29
|
-
portfolio_optimize_strategy(pf_info,ratio='sortino',simulation=1000,RF=False)
|
30
|
-
|
31
|
-
portfolio_optimize_strategy(pf_info,ratio='alpha',simulation=1000)
|
32
|
-
portfolio_optimize_strategy(pf_info,ratio='alpha',simulation=1000,RF=False)
|
33
|
-
|
34
|
-
portfolio_optimize_strategy(pf_info,ratio='treynor',simulation=1000)
|
35
|
-
portfolio_optimize_strategy(pf_info,ratio='treynor',simulation=1000,RF=False)
|
36
|
-
|
37
|
-
|
siat/markowitz_ef_test.py
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
import os; os.chdir("S:/siat")
|
4
|
-
from siat import *
|
5
|
-
#------------------------------------------------------------------------------
|
6
|
-
#导入包
|
7
|
-
import pandas as pd
|
8
|
-
import numpy as np
|
9
|
-
import matplotlib.pyplot as plt
|
10
|
-
import scipy.optimize as sco
|
11
|
-
|
12
|
-
#------------------------------------------------------------------------------
|
13
|
-
#获取股票数据
|
14
|
-
|
15
|
-
start='2021-01-01'
|
16
|
-
end='2021-11-30'
|
17
|
-
|
18
|
-
df = pd.DataFrame()
|
19
|
-
df = get_prices('600519.SS', start, end)
|
20
|
-
df['p_change']=df['Close'].pct_change()
|
21
|
-
s600519 = df['p_change']
|
22
|
-
s600519.name = '600519'
|
23
|
-
|
24
|
-
df = pd.DataFrame()
|
25
|
-
df = get_prices('000651.SZ', start, end)
|
26
|
-
df['p_change']=df['Close'].pct_change()
|
27
|
-
s000651 = df['p_change']
|
28
|
-
s000651.name = '000651'
|
29
|
-
|
30
|
-
df = pd.DataFrame()
|
31
|
-
df = get_prices('000002.SZ', start, end)
|
32
|
-
df['p_change']=df['Close'].pct_change()
|
33
|
-
s000002 = df['p_change']
|
34
|
-
s000002.name = '000002'
|
35
|
-
|
36
|
-
df = pd.DataFrame()
|
37
|
-
df = get_prices('601318.SS', start, end)
|
38
|
-
df['p_change']=df['Close'].pct_change()
|
39
|
-
s601318 = df['p_change']
|
40
|
-
s601318.name = '601318'
|
41
|
-
|
42
|
-
df = pd.DataFrame()
|
43
|
-
df = get_prices('601857.SS', start, end)
|
44
|
-
df['p_change']=df['Close'].pct_change()
|
45
|
-
s601857 = df['p_change']
|
46
|
-
s601857.name = '601857'
|
47
|
-
|
48
|
-
data = pd.DataFrame({'600519':s600519,'000651':s000651,'000002':s000002, '601318':s601318,'601857':s601857})
|
49
|
-
data = data.dropna()
|
50
|
-
#------------------------------------------------------------------------------
|
51
|
-
#计算年化收益率和协方差矩阵(以一年252个交易日计算)
|
52
|
-
returns_annual = data.mean() * 252
|
53
|
-
cov_annual = data.cov() * 252
|
54
|
-
|
55
|
-
#------------------------------------------------------------------------------
|
56
|
-
"""
|
57
|
-
模拟投资组合
|
58
|
-
为了得到有效边界,我们模拟了50000个投资组合
|
59
|
-
"""
|
60
|
-
|
61
|
-
number_assets = 5
|
62
|
-
weights = np.random.random(number_assets)
|
63
|
-
weights /= np.sum(weights)
|
64
|
-
|
65
|
-
portfolio_returns = []
|
66
|
-
portfolio_volatilities = []
|
67
|
-
sharpe_ratio = []
|
68
|
-
for single_portfolio in range (50000):
|
69
|
-
weights = np.random.random(number_assets)
|
70
|
-
weights /= np.sum(weights)
|
71
|
-
returns = np.dot(weights, returns_annual)
|
72
|
-
volatility = np.sqrt(np.dot(weights.T, np.dot(cov_annual, weights)))
|
73
|
-
portfolio_returns.append(returns)
|
74
|
-
portfolio_volatilities.append(volatility)
|
75
|
-
sharpe = returns / volatility
|
76
|
-
sharpe_ratio.append(sharpe)
|
77
|
-
|
78
|
-
portfolio_returns = np.array(portfolio_returns)
|
79
|
-
portfolio_volatilities = np.array(portfolio_volatilities)
|
80
|
-
|
81
|
-
"""
|
82
|
-
RandomPortfolios['sharpe_ratio']=RandomPortfolios['Returns'] / RandomPortfolios['Volatility']
|
83
|
-
sharpe_ratio = np.array(RandomPortfolios['sharpe_ratio'])
|
84
|
-
portfolio_returns = np.array(RandomPortfolios['Returns'])
|
85
|
-
portfolio_volatilities = np.array(RandomPortfolios['Volatility'])
|
86
|
-
"""
|
87
|
-
|
88
|
-
#------------------------------------------------------------------------------
|
89
|
-
#作图
|
90
|
-
plt.style.use('seaborn-dark')
|
91
|
-
plt.figure(figsize=(9, 5))
|
92
|
-
plt.scatter(portfolio_volatilities, portfolio_returns, c=sharpe_ratio,cmap='RdYlGn', edgecolors='black',marker='o')
|
93
|
-
plt.grid(True)
|
94
|
-
plt.xlabel('expected volatility')
|
95
|
-
plt.ylabel('expected return')
|
96
|
-
plt.colorbar(label='Sharpe ratio')
|
97
|
-
|
98
|
-
#------------------------------------------------------------------------------
|
99
|
-
#找出最优组合
|
100
|
-
def statistics(weights):
|
101
|
-
weights = np.array(weights)
|
102
|
-
pret = np.sum(data.mean() * weights) * 252
|
103
|
-
pvol = np.sqrt(np.dot(weights.T, np.dot(data.cov() * 252, weights)))
|
104
|
-
return np.array([pret, pvol, pret / pvol])
|
105
|
-
|
106
|
-
def min_func_sharpe(weights):
|
107
|
-
return -statistics(weights)[2]
|
108
|
-
|
109
|
-
bnds = tuple((0, 1) for x in range(number_assets))
|
110
|
-
cons = ({'type': 'eq', 'fun': lambda x: np.sum(x) - 1})
|
111
|
-
opts = sco.minimize(min_func_sharpe, number_assets * [1. / number_assets,], method='SLSQP', bounds=bnds, constraints=cons)
|
112
|
-
opts['x'].round(3) #得到各股票权重
|
113
|
-
statistics(opts['x']).round(3) #得到投资组合预期收益率、预期波动率以及夏普比率
|
114
|
-
|
115
|
-
#------------------------------------------------------------------------------
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|