数据是这样对应的
沪深300 | 000300.SH.csv |
茅台 | 600519.SH.csv |
平安 | 601318.SH.csv |
如下代码:
- # -*- coding: utf-8 -*-
-
- import pandas as pd
- import statsmodels.api as sm
-
-
- if __name__ == '__main__':
- hs300 = pd.read_csv("000300.SH.csv", index_col="date")
- maoTai = pd.read_csv("600519.SH.csv", index_col="date")
- pingAn = pd.read_csv("601318.SH.csv", index_col="date")
-
- stock_list = [maoTai, pingAn, hs300]
- df = pd.concat([stock.pctChg / 100 for stock in stock_list], axis=1)
- df.columns = ["maoTai", "pingAn", "hs300"]
- df = df.sort_index(ascending=True)
- print(df.describe())
-
- # 填充数据
- returns = (df + 1).product() - 1
- print('累计收益率\n', returns)
-
- # 假设无风险固定收益为3.2%,那么平均每日的无风险收益率为
- rf = 1.032 ** (1 / 360) - 1
- print("平均每日的无风险收益率为: ", rf)
-
- # 茅台或平安 和 沪深300各自的风险溢价
- df_rp = df - rf
-
- stock_names = {
- 'pingAn': '中国平安',
- 'maoTai': '贵州茅台'
- }
- for stock in ["pingAn", "maoTai"]:
- model = sm.OLS(df_rp[stock], sm.add_constant(df_rp['hs300']))
- result = model.fit()
- print(stock_names[stock] + '\n')
- print(result.summary())
- print('\n\n')
-
- pass
运行如下:
- D:\python\content\python.exe D:/PythonProject/demo/demo22.py
- maoTai pingAn hs300
- count 243.000000 243.000000 243.000000
- mean 0.000420 -0.001960 -0.000151
- std 0.023567 0.016815 0.011708
- min -0.069911 -0.054476 -0.035325
- 25% -0.012650 -0.011324 -0.006741
- 50% 0.000323 -0.003655 0.000398
- 75% 0.014569 0.004840 0.006918
- max 0.095041 0.077337 0.031595
- 累计收益率
- maoTai 0.035688
- pingAn -0.399967
- hs300 -0.051986
- dtype: float64
- 平均每日的无风险收益率为: 8.750012529978868e-05
- 中国平安
-
- OLS Regression Results
- ==============================================================================
- Dep. Variable: pingAn R-squared: 0.249
- Model: OLS Adj. R-squared: 0.245
- Method: Least Squares F-statistic: 79.70
- Date: Tue, 18 Jan 2022 Prob (F-statistic): 1.14e-16
- Time: 15:49:00 Log-Likelihood: 683.18
- No. Observations: 243 AIC: -1362.
- Df Residuals: 241 BIC: -1355.
- Df Model: 1
- Covariance Type: nonrobust
- ==============================================================================
- coef std err t P>|t| [0.025 0.975]
- ------------------------------------------------------------------------------
- const -0.0019 0.001 -2.002 0.046 -0.004 -3.04e-05
- hs300 0.7159 0.080 8.927 0.000 0.558 0.874
- ==============================================================================
- Omnibus: 47.787 Durbin-Watson: 2.111
- Prob(Omnibus): 0.000 Jarque-Bera (JB): 114.952
- Skew: 0.906 Prob(JB): 1.09e-25
- Kurtosis: 5.841 Cond. No. 85.6
- ==============================================================================
-
- Notes:
- [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
-
-
-
- 贵州茅台
-
- OLS Regression Results
- ==============================================================================
- Dep. Variable: maoTai R-squared: 0.447
- Model: OLS Adj. R-squared: 0.445
- Method: Least Squares F-statistic: 195.1
- Date: Tue, 18 Jan 2022 Prob (F-statistic): 7.08e-33
- Time: 15:49:00 Log-Likelihood: 638.49
- No. Observations: 243 AIC: -1273.
- Df Residuals: 241 BIC: -1266.
- Df Model: 1
- Covariance Type: nonrobust
- ==============================================================================
- coef std err t P>|t| [0.025 0.975]
- ------------------------------------------------------------------------------
- const 0.0007 0.001 0.581 0.562 -0.002 0.003
- hs300 1.3463 0.096 13.967 0.000 1.156 1.536
- ==============================================================================
- Omnibus: 34.503 Durbin-Watson: 2.089
- Prob(Omnibus): 0.000 Jarque-Bera (JB): 73.171
- Skew: 0.699 Prob(JB): 1.29e-16
- Kurtosis: 5.296 Cond. No. 85.6
- ==============================================================================
这个数据的看法,关键是看这3个数据:
上面是平安的,截距项为-0.0019,意思就是除开大盘波动,自身还亏0.19%。β为0.7159,代表如大盘涨了10%,平安预期涨7.159%,R方为0.24代表拟合效果一般。
下面是茅台的
茅台的截距项为0.0007,代表除大盘波动带来的收益,其自身加载额外产生了0.07%的收益,β为1.3463,就是如果大盘涨了10%,那么茅台也涨13.463%,R方为0.44代表一般(0.5以上代码拟合可以)