Calculating standard deviation for each year

Hi,
I need to calculate for each stock the standard deviation for each year of observation. I created a subset with to stocks which is attached.
I was able to calculate the standard deviation for the two stocks with the splitapply() command.
% Creating volatility for two stocks
stocks.years = year(stocks.dates);
[group,years,ID]= findgroups(stocks.years, stocks.ID);
vola2 = splitapply(@std, stocks.RET, group);
voltb2 = table(ID, years, vola2);
voltb2 = sortrows(voltb2, 'ID');
My problem is that by the way stockreturns are create the first observation is always a NaN. Therefore for the standard deviation for the first year is NaN.
Is there a way to omit the NaN line in the calculation for standard deviation?
Thanks in advance

 채택된 답변

Jan
Jan 2021년 4월 11일

0 개 추천

Do you want:
vola2 = splitapply(@(x) std(x, 'omitnan'), stocks.RET, group);

댓글 수: 1

Luca
Luca 2021년 4월 11일
Hi Jan,
Thank you very much it worked perfectly.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Earth and Planetary Science에 대해 자세히 알아보기

태그

질문:

2021년 4월 11일

편집:

2021년 4월 11일

Community Treasure Hunt

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

Start Hunting!

Translated by