Выборка начальной загрузки в зависимости от портфеля (MATLAB) - PullRequest
2 голосов
/ 08 июня 2011

У меня есть проблема с кодированием чего-либо в Matlab, надеюсь, кто-то знает, как это решить.

РЕЗЮМЕ: Проблема в том, что у меня есть несколько разных финансовых портфелей (1070 портфелей), и мне нужно запустить регрессию для каждого портфеля. Затем с остатками из первой регрессии я хочу загрузить эти остатки (получите около 1000 загруженных остатков выборок), но на КАЖДОЙ ИНДИВИДУАЛЬНЫЙ портфель. Это потому, что я не могу смешивать остатки из разных портфелей.

IN DETAIL: у меня есть один вектор, который говорит мне номер портфеля, это случайное число, но уникальное для этого конкретного портфеля. Затем я получаю возврат портфеля в одном длинном векторе (14 тыс. Наблюдений), поэтому мне нужно сделать какую-то регрессию OLS в «скользящем окне» и ТОЛЬКО регрессировать данные, соответствующие отдельному портфелю, извлечь константу, бета и сохраните их, а затем сделайте это для всех разных портфелей.

Я бы получил матрицу, состоящую из констант и бета-версий, а затем каждая строка соответствует определенному портфелю.

Портфели имеют разное количество точек данных, поэтому один портфель может иметь 60 наблюдений, а другой - 150 наблюдений. Поэтому невозможно просто разделить его на отдельные портфели только на фиксированный интервал.

Для загруженных остатков мне нужно, как упоминалось выше, взять с заменой из остатков из портфелей, а не из всей выборки. Мне нужны эти примеры при начальной загрузке для дальнейшей обработки данных, но у меня есть 1000 примеров начальной загрузки, остальное - просто обычные операции сложения и вычитания ...

Кто-нибудь знает, как это сделать? В Stata для регрессионной части вы просто используете опцию «by ()», но для начальной загрузки это не так просто ...

Я очень благодарен за любую помощь!

С наилучшими пожеланиями, Филипп

1 Ответ

0 голосов
/ 08 июня 2011

Я приложил пару различных примеров остаточных загрузчиков с использованием MATLAB

Следующая ссылка предоставляет некоторую хорошую справочную информацию

http://www.economics.uci.edu/~dbrownst/bootmi.pdf

%% Generate a data set and perform your initial regression

clear all
clc

X = linspace(1, 1000, 1000)';
Y = 3*X + 5 + randn(1000,1);
X = [ones(length(X),1), X];

[b,bint,r,rint,stats] = regress(Y,X);

%% Parametric residual bootstrap

% This method assumes that your residuals are normally distributed and
% homoskedastic.  A parametric residual bootstrap is more accurate and
% converges faster than a nonparametric residual bootstrap.

% Use a one sided kstest to verify that the residuals are normally
% distributed.
kstest(r)

% Create a probability distribution object that models the residuals
foo = fitdist(r, 'normal')

% Create an array to store your new datasets
Nboot = 500;
My_Data = zeros(length(X), Nboot);

% Create your data sets

YHat = X*b;

for i = 1:Nboot

    boot_noise = random(foo, 1000,1);
    My_Data(:,i) = YHat + boot_noise;

end

% Use your data to do something interesting

%%  Nonparametric residual bootstrap

% This method assumes that your errors are homoskedastic, however, there is
% no assume that they are normally distributed.

% This method also uses the bootstrp function from Statistics Toolbox and
% assumes that we're using the bootstrp to estimate standard errors

standard_errors = std(bootstrp(1000,@(bootr)regress(YHat+bootr, X),r))
...