How to create subsets?

1 次查看(过去 30 天)
Luca
Luca 2021-4-21
回答: Harimurali 2023-10-17
Hi,
I have a dataset of couple of thousend stocks, which is attached to this question. I calculated the market capitalisation of each stock for a year.
My goal know is to create 5 portfolios. Where every portfolio holds 20% of the stocks according to their size. The size is the market capitalisation. The portfolio should be recalculate every year. So the portfolio with the biggest 20 % of the stocks should incldude the biggest 20% for every year.
Unfortunatly I' dont know how to do it. I was thinking about the splitapply() function. But i did not find a function for this.
Data description:
ID is stands for the diffrent stocks
years are the oberved years (1962-2016)
sumMC is the market capitalization of each stock in every year
Does someone know how to do it?
Thanks in advance

回答(1 个)

Harimurali
Harimurali 2023-10-17
Hi Luca,
I understand that you want to create five portfolios, where each portfolio holds 20% of the stocks according to their market capitalization. The portfolio should be recalculated every year, such that the portfolio with the biggest 20% of the stocks should include the biggest 20% for each year.
This can be achieved by following these steps:
  • Create a for loop where the loop index goes from start year to the end year.
  • For each loop, filter the table such that the table only contains rows corresponding to the loop index year.
Here is the sample MATLAB code for filtering the table inside the loop assuming the loop variable is “year”:
yearFilteredTable = subset2(subset2{:, 2} == year, :);
In this way, five portfolios can be created for a year, where each portfolio holds 20% of the stocks according to their market capitalization for that particular year.
I hope this helps.

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by