How to create subsets?

1 view (last 30 days)
Luca
Luca on 21 Apr 2021
Answered: Harimurali on 17 Oct 2023
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

Answers (1)

Harimurali
Harimurali on 17 Oct 2023
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.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!