Skip to content
Prev 8604 / 15274 Next

SMA & large n

On 27 September 2011 at 14:42, Anna Dunietz wrote:
| I would like to calculate the 377-day simple moving average on closing
| prices using the SMA function, but an error is always returned:
| 
| 
| 
| SMA(Cl(SPY),n=377)Error in runSum(x, n) : Invalid 'n'
| 
| 
| 
| Here is some code in order for you to quickly reproduce what I am doing:
| 
| 
| 
| getSymbols("SPY", from='1995-01-01', to='2010-01-01',
| index.class=c("POSIXt","POSIXct"))
| 
| SPY = to.monthly(SPY, indexAt='endof')
| 
| mysma<-SMA(Cl(SPY),n=377)

Monthly data from Jan 1995 to Jan 2010 covers 181 months:

   R> mm <- seq(as.Date("1995-01-01"), as.Date("2010-01-01"), by="month")
   R> head(mm)
   [1] "1995-01-01" "1995-02-01" "1995-03-01" "1995-04-01" "1995-05-01" "1995-06-01"
   R> length(mm)
   [1] 181
   R> 

You cannot run a moving average of length 377 over 181 observations.  

Maybe the magic number 377 came from daily data and you now want something
like 377 / 21 or about 18?

Dirk