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.
Files changed (87) hide show
  1. siat/common.py +106 -2
  2. siat/exchange_bond_china.pickle +0 -0
  3. siat/fund_china.pickle +0 -0
  4. siat/stock.py +10 -2
  5. siat/stock_info.pickle +0 -0
  6. {siat-3.10.125.dist-info → siat-3.10.126.dist-info}/METADATA +234 -226
  7. siat-3.10.126.dist-info/RECORD +76 -0
  8. {siat-3.10.125.dist-info → siat-3.10.126.dist-info}/WHEEL +1 -1
  9. {siat-3.10.125.dist-info → siat-3.10.126.dist-info/licenses}/LICENSE +0 -0
  10. {siat-3.10.125.dist-info → siat-3.10.126.dist-info}/top_level.txt +0 -0
  11. siat/__init__ -20240701.py +0 -65
  12. siat/__init__.py.backup_20250214.py +0 -73
  13. siat/alpha_vantage_test.py +0 -24
  14. siat/assets_liquidity_test.py +0 -44
  15. siat/barrons_scraping_test.py +0 -276
  16. siat/beta_adjustment_test.py +0 -77
  17. siat/bond_test.py +0 -142
  18. siat/capm_beta_test.py +0 -49
  19. siat/cmat_commons.py +0 -961
  20. siat/compare_cross_test.py +0 -117
  21. siat/concepts_iwencai.py +0 -86
  22. siat/concepts_kpl.py +0 -93
  23. siat/cryptocurrency_test.py +0 -71
  24. siat/derivative.py +0 -1111
  25. siat/economy-20230125.py +0 -1206
  26. siat/economy_test.py +0 -360
  27. siat/esg_test.py +0 -63
  28. siat/fama_french_test.py +0 -115
  29. siat/financial_statements_test.py +0 -31
  30. siat/financials2 - /321/205/320/231/320/277/321/206/320/254/320/274.py" +0 -341
  31. siat/financials_china2_test.py +0 -67
  32. siat/financials_china2_test2.py +0 -88
  33. siat/financials_china2_test3.py +0 -87
  34. siat/financials_china_test.py +0 -475
  35. siat/financials_china_test2.py +0 -197
  36. siat/financials_china_test2_fin_indicator.py +0 -197
  37. siat/financials_test.py +0 -713
  38. siat/fred_test.py +0 -40
  39. siat/fund_china_test.py +0 -175
  40. siat/fund_test.py +0 -40
  41. siat/future_china_test.py +0 -37
  42. siat/global_index_test.py +0 -66
  43. siat/grafix_test.py +0 -112
  44. siat/holding_risk_test.py +0 -13
  45. siat/local_debug_test.py +0 -100
  46. siat/markowitz2-20240620.py +0 -2614
  47. siat/markowitz_ccb_test.py +0 -37
  48. siat/markowitz_ef_test.py +0 -136
  49. siat/markowitz_old.py +0 -871
  50. siat/markowitz_simple-20230709.py +0 -370
  51. siat/markowitz_test.py +0 -164
  52. siat/markowitz_test2.py +0 -69
  53. siat/ml_cases_example1.py +0 -60
  54. siat/option_china_test.py +0 -447
  55. siat/option_pricing_test.py +0 -81
  56. siat/option_sina_api_test.py +0 -112
  57. siat/proxy_test.py +0 -84
  58. siat/quandl_test.py +0 -39
  59. siat/risk_adjusted_return_test.py +0 -81
  60. siat/risk_evaluation_test.py +0 -96
  61. siat/risk_free_rate_test.py +0 -127
  62. siat/sector_china_test.py +0 -203
  63. siat/security_price.py +0 -831
  64. siat/security_prices_test.py +0 -310
  65. siat/security_trend2-20240620.py +0 -493
  66. siat/setup.py +0 -41
  67. siat/shenwan index history test.py +0 -41
  68. siat/stock_china_test.py +0 -38
  69. siat/stock_info_test.py +0 -189
  70. siat/stock_list_china_test.py +0 -33
  71. siat/stock_technical-20240620.py +0 -2736
  72. siat/stock_test.py +0 -487
  73. siat/temp.py +0 -36
  74. siat/test2_graphviz.py +0 -484
  75. siat/test_graphviz.py +0 -411
  76. siat/test_markowitz_simple.py +0 -198
  77. siat/test_markowitz_simple_revised.py +0 -215
  78. siat/test_markowitz_simple_revised2.py +0 -218
  79. siat/transaction_test.py +0 -436
  80. siat/translate-20230125.py +0 -2107
  81. siat/translate-20230206.py +0 -2109
  82. siat/translate-20230215.py +0 -2158
  83. siat/translate_20240606.py +0 -4206
  84. siat/translate_241003_keep.py +0 -4300
  85. siat/universal_test.py +0 -100
  86. siat/valuation_market_china_test.py +0 -36
  87. siat-3.10.125.dist-info/RECORD +0 -152
@@ -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
-