[关闭]
@Channelchan 2017-03-08T11:32:51.000000Z 字数 1189 阅读 25607

StatsModels 多元回归

未分类


  1. import numpy as np
  2. import pandas as pd
  3. import statsmodels.api as sm
  4. from statsmodels import regression
  5. import matplotlib.pyplot as plt
  6. import tushare as ts
  1. asset1 = ts.get_k_data('000001', start='2016-01-01', end='2016-12-31', ktype='D',autype='qfq')
  2. asset1.index = pd.to_datetime(asset1['date'], format='%Y-%m-%d')
  3. asset1 = asset1['close']
  4. asset2 = ts.get_k_data('000005', start='2016-01-01', end='2016-12-31', ktype='D',autype='qfq')
  5. asset2.index = pd.to_datetime(asset2['date'], format='%Y-%m-%d')
  6. asset2 = asset2['close']
  7. benchmark = ts.get_hist_data('sh', start='2016-01-01', end='2016-12-31', ktype='D')[::-1]
  8. benchmark = benchmark['close']
  9. new = pd.concat([asset1, asset2, benchmark],join='inner', axis=1)
  10. new.columns = ['asset1', 'asset2', 'benchmark']
  1. # Run multiple linear regression using asset2 and SPY as independent variables
  2. mlr = regression.linear_model.OLS(new['asset1'], sm.add_constant(np.column_stack((new['asset2'], new['benchmark'])))).fit()
  3. prediction = mlr.params[0] + mlr.params[1]*asset2 + mlr.params[2]*new['benchmark']
  4. prediction.name = 'Prediction'
  5. print 'MLR beta of asset2:', mlr.params[1], '\nMLR beta of sz:', mlr.params[2]
  1. new['asset1'].plot()
  2. prediction.plot(color='y')
  3. plt.xlabel('Price')
  4. plt.legend()
  5. plt.show()

策略多元回归
不用品种的MA策略多元回归

BrenchMark = MA200

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注