equal weight strategy with monthly rebalance
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a dataset with 12 asset class from 1997 to 2014 and daily data. (Below there is a part of sample) [T N]=size(mydataset) T=4529, N=12
Date MSCI US MSCI EAFE MSCI EUROPE MSCI JAPAN MSCI EM NASDAQ 100 S&PREIT 1/2/97 564.95 664 716.08 905.44 15,136.38 815.6 134.7 1/3/97 570 667.16 722.1 905.44 15,217.15 848.08 134.45 1/6/97 569.65 670.91 725.41 911.73 15,305.96 853.24 135.1 1/7/97 570.97 665.59 723.97 892.39 15,458.17 864.55 135.59 1/8/97 569.11 665.71 729.19 880.59 15,629.97 853.09 135.74 1/9/97 574.08 659.9 730.97 854.38 15,670.28 856.95 136.27 1/10/97 576.98 651.28 730.69 820.5 15,733.25 865.58 136.41
I have to use an equally weighted strategy with monthly rebalance. So every month I want to compound return and volatility for every asset with the same weights (1/12=0,0833).
If someone can help me i would be grate.
0 comentarios
Respuestas (1)
Amish
el 1 de Oct. de 2024
Hi Francesca,
You can do the calculation for compound return and volatility for every asset with the same weights in MATLAB. I am attaching a sample code for your provided data below:
% Sample data
dates = {'1/2/97', '1/3/97', '1/6/97', '1/7/97', '1/8/97', '1/9/97', '1/10/97'};
MSCI_US = [564.95, 570, 569.65, 570.97, 569.11, 574.08, 576.98];
MSCI_EAFE = [664, 667.16, 670.91, 665.59, 665.71, 659.9, 651.28];
MSCI_EUROPE = [716.08, 722.1, 725.41, 723.97, 729.19, 730.97, 730.69];
MSCI_JAPAN = [905.44, 905.44, 911.73, 892.39, 880.59, 854.38, 820.5];
MSCI_EM = [15136.38, 15217.15, 15305.96, 15458.17, 15629.97, 15670.28, 15733.25];
NASDAQ_100 = [815.6, 848.08, 853.24, 864.55, 853.09, 856.95, 865.58];
SP_REIT = [134.7, 134.45, 135.1, 135.59, 135.74, 136.27, 136.41];
% Convert dates to datetime format
dates = datetime(dates, 'InputFormat', 'MM/dd/yy');
% Create a table
data = table(dates', MSCI_US', MSCI_EAFE', MSCI_EUROPE', MSCI_JAPAN', MSCI_EM', NASDAQ_100', SP_REIT', ...
'VariableNames', {'Date', 'MSCI_US', 'MSCI_EAFE', 'MSCI_EUROPE', 'MSCI_JAPAN', 'MSCI_EM', 'NASDAQ_100', 'SP_REIT'});
% Calculate daily returns
returns = diff(log(data{:, 2:end}));
% Resample to monthly frequency
monthly_dates = dates(2:end);
monthly_dates = dateshift(monthly_dates, 'start', 'month');
[unique_months, ~, idx] = unique(monthly_dates);
monthly_returns = accumarray(idx, returns, [], @(x) prod(1 + x) - 1);
% Calculate equally weighted compounded return and volatility
equal_weight = 1 / size(returns, 2);
compounded_return = sum(monthly_returns * equal_weight, 2);
volatility = std(monthly_returns, 0, 2) * equal_weight;
This will help you calculate the compounded return and volatility for each asset using an equally weighted strategy with monthly rebalance.
Hope this helps!
0 comentarios
Ver también
Categorías
Más información sobre MATLAB Mobile en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!