日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用横截面回归和时间序列回归进行回测

發布時間:2024/1/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用横截面回归和时间序列回归进行回测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 對收益進行橫截面回歸
    • 單變量回歸
    • 多變量回歸
  • 2.對每個資產的收益進行時間序列回歸


1. 對收益進行橫截面回歸

(i)僅信號1(ii)僅信號2(iii)兩個信號 import pandas as pd import numpy as np import statsmodels.api as smfile = "data/PS_3_Exercise_XS_Regressions.xlsx" xrets = pd.read_excel(file, sheet_name="excess_returns", index_col="year") xrets.head() signal_1 = pd.read_excel(file, sheet_name="signal_1", index_col="year") signal_2 = pd.read_excel(file, sheet_name="signal_2", index_col="year")

單變量回歸

T = len(xrets)#多少年 slopes_1 = {} slopes_2 = {} for t in range(1,T):y = xrets.iloc[t,:]x_1 = signal_1.iloc[t-1,:]reg_1 = sm.OLS(y, sm.add_constant(x_1)).fit()x_2 = signal_2.iloc[t-1,:]reg_2 = sm.OLS(y, sm.add_constant(x_2)).fit()# 更新系數year = xrets.index[t]slopes_1.update({year: reg_1.params.iloc[1]})slopes_2.update({year: reg_2.params.iloc[1]})uv_slopes = pd.DataFrame([slopes_1, slopes_2], index=["Signal 1", "Signal 2"]) uv_slopes

多變量回歸

mv_slopes = {} for t in range(1,T):y = xrets.iloc[t,:]x = pd.DataFrame([signal_1.iloc[t-1,:],signal_2.iloc[t-1,:]],index = ["Signal 1", "Signal 2"]).Treg_3 = sm.OLS(y, sm.add_constant(x)).fit()year = xrets.index[t]#mv_slopes.update({year: reg_3.params.iloc[1]}) 不對 定位1只提取了signal_1前面的系數mv_slopes.update({year: reg_3.params.loc[["Signal 1", "Signal 2"]]}) mv_slopes = pd.DataFrame(mv_slopes) mv_slopes uv_slopes.T.plot.hist(); mv_slopes.T.plot.hist();

2.對每個資產的收益進行時間序列回歸

# 資產數量 N = xrets.shape[1] signal_1_lagged = signal_1.shift(1) signal_2_lagged = signal_2.shift(1) ts_slopes = {} for n in range(N): #這里包括了 A1 y = xrets.iloc[:,n]x = pd.DataFrame([signal_1_lagged.iloc[:,n],signal_2_lagged.iloc[:,n]],index = ["Signal 1", "Signal 2"]).Treg_4 = sm.OLS(y, sm.add_constant(x),missing="drop").fit()# 記得drop nansecurity = xrets.columns[n]ts_slopes.update({security: reg_4.params.loc[["Signal 1", "Signal 2"]]}) ts_slopes = pd.DataFrame(ts_slopes) ts_slopes

總結

以上是生活随笔為你收集整理的使用横截面回归和时间序列回归进行回测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。