Как я могу создать скользящую регрессию для почти 500 фондов и сохранить параметры? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть ежемесячные данные о возвращении около 500 средств. Я оцениваю с помощью al oop для каждого фонда линейную модель (факторная модель, но это не имеет значения). После этого я хочу сохранить различные параметры, такие как константа (альфа), R квадрат и c. в отдельном векторе. Теперь у меня есть 2 проблемы:

1.) Как я могу адаптировать эту функцию, чтобы линейная модель оценивалась не по всему временному ряду, а только, например, с 1999 по 2007 гг.

2. Я хочу оценить ту же линейную модель, что и выше, используя скользящую регрессию (перекрывающееся окно -> 3 года, затем t + 1). Тем самым всегда нужно оценивать 3 года.

У кого-нибудь есть идеи, как я могу это реализовать? Важно, чтобы я сохранил соответствующие параметры регрессии в фонды или моменты времени. Это мне нужно для последующего анализа.

Большое спасибо за вашу ценную помощь!

#Constant Alpha
constant_alpha <- matrix(NA, ncol = ncol(fund_returns),
                      nrow = 1)
colnames(constant_alpha) <- colnames(fund_returns)
row.names(constant_alpha) <- "alpha"

#Factor MKT
beta_mkt <- matrix(NA, ncol = ncol(fund_returns),
                     nrow = 1)
colnames(beta_mkt) <- colnames(fund_returns)
row.names(beta_mkt) <- "MKT.factor"

#Residuals from regression
parameter_residuals <- matrix(NA, ncol = ncol(fund_returns),
                          nrow = nrow(fund_returns))
colnames(parameter_residuals) <- colnames(fund_returns)
row.names(parameter_residuals) <- row.names(fund_returns)

#T Statistics
t_stat <- matrix(NA, ncol = ncol(fund_returns),
                        nrow = 1)
colnames(t_stat) <- colnames(fund_returns)
row.names(t_stat) <- "t.stat"

#R Squared
rsquared <- matrix(NA, ncol = ncol(fund_returns),
                 nrow = 1)
colnames(rsquared) <- colnames(fund_returns)
row.names(rsquared) <- "R Squared"


###Regression 1 Factor Model
for (j in 1:ncol(fund_returns)){
master_regression <- lm(fund_returns[,j]~MKT$log_return_spi_tr, na.action=na.exclude)
constant_alpha[,j] <- master_regression$coefficients[1]
beta_mkt[,j] <- master_regression$coefficients[2]
parameter_residuals[,j] <- resid(master_regression)
rsquared[,j] <- summary(master_regression)$r.squared
t_stat[,j] <- coeftest(master_regression,
                              vcov=NeweyWest(master_regression,
                                             lag = 3.43,
                                             prewhite = FALSE) )[, "t value"][1]
}


structure(list(Aberdeen.Global.Swiss.Equity.I.Acc.CHF = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), AKB.IF.AKB.Aktien.Schweiz.Top.SelectionP = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), row.names = c("03/31/1999", 
"04/30/1999", "05/31/1999", "06/30/1999", "07/31/1999", "08/31/1999"
), class = "data.frame")


##2nd Data Set

structure(list(log_return_spi_tr = structure(c(0.0152816392302366, 
0.0378937104499979, -0.0478500114570899, 0.00810185769601013, 
0.000145657422827128, 0.0165672504386212, -0.00797579251287495, 
0.0290301060898823, 0.035956012214438, 0.0293666990745844, -0.0627798495617515, 
0.00711864047474897, 0.0661419241966179, -3.34929502301407e-05, 
0.0375191295938837, 0.00448358225294676, 0.0390511097581339, 
0.0317710675898706, -0.0465118023379176, 0.027155763163476, -0.00714744748013807, 
0.0157645940205189, -0.0101992619661253, -0.0447060225294802, 
-0.0717793502194723, 0.022330329970087, 0.0232924511775341, -0.0347257999951101, 
-0.0562470806209543, -0.0414145896351741, -0.105636819970726, 
0.01276359517359, 0.0291223758604815, 0.028387193534515, -0.0272423817755687, 
0.015750481744611, 0.0514477993290452, -0.00934949552147479, 
0.0059325881843737, -0.0918904226002955, -0.134933411423084, 
0.00794685780390658, -0.0905463156750095, 0.0313712340241086, 
0.0340284851419472, -0.0929657298302118, -0.049201895814976, 
-0.0609080651182925, -0.00852577216719563, 0.115491061864192, 
0.0229805264928782, 0.0377060930972934, 0.0517676228588702, 0.0148925039754566, 
-0.0132228034022202, 0.0386910205169748, 0.0192459400221132, 
0.0304572817735949, 0.047024278594618, 0.0164735543542047, -0.0296295177229275, 
0.0369722786163429, -0.0216511977982723, 0.00123682289214955, 
-0.016421262687933, -0.0202942806330402, 0.0101739752753947, 
-0.0174157843332789, 0.0162838608922122, 0.0438837635630023, 
0.0166649446796221, 0.0297004867606816, 0.00476821142178707, 
-0.00284469642826224, 0.0443069569535322, 0.0227723194098903, 
0.0557797945931124, -0.00956598757706928, 0.0573605386286413, 
0.0125747269985901, 0.0482698307070279, 0.0248124300917425, 0.0319681487225125, 
0.0139535862309081, 0.0248262330523996, 0.0141992829420161, -0.0537181232417563, 
0.00523055919656912, 0.0361945039724905, 0.0291602418812449, 
0.0324489628340583, 0.0200248476751081, -0.00548483695255975, 
0.0390590909275641, 0.0441255524510975, -0.037614994787571, 0.0295388679512012, 
0.0589998995927736, 0.00813077958503072, -0.0221443218229744, 
-0.0327926619452796, -0.00554503179377264, 0.00428868366554447, 
0.0149797774247151, -0.029939944678576, -0.0325664977634954, 
-0.105154533115563, -0.00734624437792597, -0.0373837155067474, 
0.0543877372481294, 0.00615606823049397, -0.0784760943530785, 
0.0184370704749011, 0.0161816097628318, -0.0856987932191444, 
-0.0979367721497582, -0.0538667068361161, -0.0455198792960285, 
-0.0429102571253299, -0.107452008257875, 0.0514364168296808, 
0.081244724359415, 0.0280463262806592, 0.0102352744191538, 0.0915001691631812, 
0.0452984361954059, 0.0213082710315451, -0.0108120704703776, 
-0.00263368993717172, 0.0432268787002972, -0.0100406413436627, 
0.0340758572877125, 0.0415602609930428, -0.0270732954426531, 
-0.0499461377681758, -0.0281997955748654, 0.0150403061274069, 
-0.00447649405411177, 0.023395555437272, 0.0282010642429995, 
-0.0179120990103154, 0.0241449801202425, 0.00419282045482028, 
0.0233455120050152, -0.0273777407914348, 0.037530485593793, 0.001661670959475, 
-0.0578489426612077, -0.0671254983375675, -0.0513541912196729, 
-0.00853440450948284, 0.0402173127497694, -0.015585404062584, 
0.0405236246334884, 0.0128264814876342, 0.031251577079761, 0.0232698500060522, 
-0.00322258998845015, -0.0432830128778292, 0.0319631730460266, 
0.0488571956434392, -0.0019629316924803, 0.017993460489711, 0.0128419976142187, 
0.0302094477057473, 0.00241447784669369, 0.0763188342216647, 
0.0340457366438898, 0.0306906837249592, 0.0247375301499897, 0.00940627970438435, 
-0.0335696635361877, 0.0206163024042301, -0.00605593712802488, 
0.034391283861515, 0.0282151088741571, 0.00487376039040655, -0.00372995773504314, 
-0.00095605779624286, 0.0412704471097314, 0.00510188350499519, 
0.0159075626361975, 0.0265578142645104, -0.0120293098732969, 
-0.0150097990230282, 0.0280038233175901, 0.0149882366892307, 
-0.000434796618657529, 0.0340518731222712, -0.0152238831376241, 
-0.069468555182322, 0.0767525394628645, 0.0238628922450435, 0.0077349349390996, 
0.0182241630561997, -0.0501762423908598, 0.0693638615623637, 
-0.0619919740481638, -0.0345123224872932, 0.0509459918610933, 
0.0108307413486894, -0.0151659678208347, -0.054605940571081, 
-0.0428675699404941, 0.00811667387153037, 0.0296418820266151, 
0.0367390665902398, -0.025895542087099, 0.0192110169171968, 0.00987271875748519, 
-0.0036563810466852, -0.0348850941679277, 0.00520632863392656, 
0.0389174699339723, 0.0108293134094204, 0.0329659159657574, 0.0284935271580142, 
0.0344982928105892, 0.0269742208242167, -0.0118300204661654, 
0.0178282679706498, -0.0130138137605087, 0.0261945540235295, 
0.0149225659576437, 0.00662992916017124, 0.00714727133565773, 
-0.00130857910353477, -0.0456183281602929, -0.00672325028241261, 
0.032349726310029, -0.0348169746356177, 0.015861102068671, 0.0537994736826288, 
-0.0145826337698072, 0.00626320025377147, -0.0160696633296418, 
-0.00893261098062226, -0.0698226339743879, 0.0672959528868269, 
0.0419181422598687, 0.0249255776965036, 0.0430047528893329, -0.0163768657126546, 
0.0368072730154179, 0.00724324069121174, -0.000292638001008427, 
0.0141773713709412, 0.00845908492939351, 0.0271121896771014, 
0.0126514556473083), .Tsp = c(1999.16666666667, 2019.91666666667, 
12), class = "ts")), row.names = c("03/31/1999", "04/30/1999", 
"05/31/1999", "06/30/1999", "07/31/1999", "08/31/1999", "09/30/1999", 
"10/31/1999", "11/30/1999", "12/31/1999", "01/31/2000", "02/29/2000", 
"03/31/2000", "04/30/2000", "05/31/2000", "06/30/2000", "07/31/2000", 
"08/31/2000", "09/30/2000", "10/31/2000", "11/30/2000", "12/31/2000", 
"01/31/2001", "02/28/2001", "03/31/2001", "04/30/2001", "05/31/2001", 
"06/30/2001", "07/31/2001", "08/31/2001", "09/30/2001", "10/31/2001", 
"11/30/2001", "12/31/2001", "01/31/2002", "02/28/2002", "03/31/2002", 
"04/30/2002", "05/31/2002", "06/30/2002", "07/31/2002", "08/31/2002", 
"09/30/2002", "10/31/2002", "11/30/2002", "12/31/2002", "01/31/2003", 
"02/28/2003", "03/31/2003", "04/30/2003", "05/31/2003", "06/30/2003", 
"07/31/2003", "08/31/2003", "09/30/2003", "10/31/2003", "11/30/2003", 
"12/31/2003", "01/31/2004", "02/29/2004", "03/31/2004", "04/30/2004", 
"05/31/2004", "06/30/2004", "07/31/2004", "08/31/2004", "09/30/2004", 
"10/31/2004", "11/30/2004", "12/31/2004", "01/31/2005", "02/28/2005", 
"03/31/2005", "04/30/2005", "05/31/2005", "06/30/2005", "07/31/2005", 
"08/31/2005", "09/30/2005", "10/31/2005", "11/30/2005", "12/31/2005", 
"01/31/2006", "02/28/2006", "03/31/2006", "04/30/2006", "05/31/2006", 
"06/30/2006", "07/31/2006", "08/31/2006", "09/30/2006", "10/31/2006", 
"11/30/2006", "12/31/2006", "01/31/2007", "02/28/2007", "03/31/2007", 
"04/30/2007", "05/31/2007", "06/30/2007", "07/31/2007", "08/31/2007", 
"09/30/2007", "10/31/2007", "11/30/2007", "12/31/2007", "01/31/2008", 
"02/29/2008", "03/31/2008", "04/30/2008", "05/31/2008", "06/30/2008", 
"07/31/2008", "08/31/2008", "09/30/2008", "10/31/2008", "11/30/2008", 
"12/31/2008", "01/31/2009", "02/28/2009", "03/31/2009", "04/30/2009", 
"05/31/2009", "06/30/2009", "07/31/2009", "08/31/2009", "09/30/2009", 
"10/31/2009", "11/30/2009", "12/31/2009", "01/31/2010", "02/28/2010", 
"03/31/2010", "04/30/2010", "05/31/2010", "06/30/2010", "07/31/2010", 
"08/31/2010", "09/30/2010", "10/31/2010", "11/30/2010", "12/31/2010", 
"01/31/2011", "02/28/2011", "03/31/2011", "04/30/2011", "05/31/2011", 
"06/30/2011", "07/31/2011", "08/31/2011", "09/30/2011", "10/31/2011", 
"11/30/2011", "12/31/2011", "01/31/2012", "02/29/2012", "03/31/2012", 
"04/30/2012", "05/31/2012", "06/30/2012", "07/31/2012", "08/31/2012", 
"09/30/2012", "10/31/2012", "11/30/2012", "12/31/2012", "01/31/2013", 
"02/28/2013", "03/31/2013", "04/30/2013", "05/31/2013", "06/30/2013", 
"07/31/2013", "08/31/2013", "09/30/2013", "10/31/2013", "11/30/2013", 
"12/31/2013", "01/31/2014", "02/28/2014", "03/31/2014", "04/30/2014", 
"05/31/2014", "06/30/2014", "07/31/2014", "08/31/2014", "09/30/2014", 
"10/31/2014", "11/30/2014", "12/31/2014", "01/31/2015", "02/28/2015", 
"03/31/2015", "04/30/2015", "05/31/2015", "06/30/2015", "07/31/2015", 
"08/31/2015", "09/30/2015", "10/31/2015", "11/30/2015", "12/31/2015", 
"01/31/2016", "02/29/2016", "03/31/2016", "04/30/2016", "05/31/2016", 
"06/30/2016", "07/31/2016", "08/31/2016", "09/30/2016", "10/31/2016", 
"11/30/2016", "12/31/2016", "01/31/2017", "02/28/2017", "03/31/2017", 
"04/30/2017", "05/31/2017", "06/30/2017", "07/31/2017", "08/31/2017", 
"09/30/2017", "10/31/2017", "11/30/2017", "12/31/2017", "01/31/2018", 
"02/28/2018", "03/31/2018", "04/30/2018", "05/31/2018", "06/30/2018", 
"07/31/2018", "08/31/2018", "09/30/2018", "10/31/2018", "11/30/2018", 
"12/31/2018", "01/31/2019", "02/28/2019", "03/31/2019", "04/30/2019", 
"05/31/2019", "06/30/2019", "07/31/2019", "08/31/2019", "09/30/2019", 
"10/31/2019", "11/30/2019", "12/31/2019"), class = "data.frame")

...