数据是这样对应的
| 沪深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以上代码拟合可以)
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://it1995.blog.csdn.net/article/details/123174384
内容来源于网络,如有侵权,请联系作者删除!