필터 지우기
필터 지우기

How to sum a specific number of observations through an entire dataset

조회 수: 3 (최근 30일)
Hi!
Im totally new to Matlab, but not new to programming. Im in the process of create a buy/sell signal on a collection of logarithmic returns on equity. To create the signal I need to sum up the log returns for n periods (from 2 to 15) and if the sum is positive=buy (vice versa). So my question is how can I do it? Have tried to search for an answer but havent found one. (Been introduced to symsum etc, but didnt manage to get it to work)
to give an example, this is 15 of my log returns;
  • -0,003486069
  • -0,00047011
  • -0,00163133
  • -0,000500125
  • -0,007125325
  • 0,000619808
  • 0,015115188
  • -0,000310048
  • 0,00494774
  • -0,010040235
  • 0,001798382
  • 0,006518707
  • -0,014322073
  • 0,000809672
  • 0,004320653
Since there is 15 returns, using n=10, I should end up with 5 different sums for the last 5 periods.
Any help is much appreciated!

채택된 답변

Roger Stafford
Roger Stafford 2012년 12월 27일
Use cumsum. If your "log returns" are called 'LR', do this:
c = cumsum(LR);
s = c(n+1:15)-c(1:15-n);
For n = 10 that would give s the five sums, 2 to 11, 3 to 12, 4 to 13, 5 to 14, and 6 to 15.
Roger Stafford
  댓글 수: 3
Image Analyst
Image Analyst 2021년 10월 1일
Why do you think 'freq_list' should exist? It's not there (yet). You need to define it somehow, like read in data from a file or something.
Mutia Rahmadini
Mutia Rahmadini 2021년 10월 2일
how sir? btw i have a data frquency and power from csv file. and what should i do with the range i made (freq_list)? i want to sum the data that is in range only (low frequency, high frequency, and ratio)
please help me with the coding. i am a new for matlab.

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

추가 답변 (1개)

Image Analyst
Image Analyst 2012년 12월 27일
To get all 6 sums, if you have 15 elements and a sliding window of 10 elements and you want the sum of each window, use conv():
m = [...
-0.003486069
-0.00047011
-0.00163133
-0.000500125
-0.007125325
0.000619808
0.015115188
-0.000310048
0.00494774
-0.010040235
0.001798382
0.006518707
-0.014322073
0.000809672
0.004320653]
numElementsToSum = 10; % Change to whatever you want
mSum = conv(m, ones(numElementsToSum, 1), 'valid')
Results:
mSum =
-0.002880506
0.002403945
0.009392762
-0.003297981
-0.001988184
0.009457794
For n = 10 that would give s the six sums, 1 to 10, 2 to 11, 3 to 12, 4 to 13, 5 to 14, and 6 to 15.

카테고리

Help CenterFile Exchange에서 Data Import and Export에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by