Estoy creando y probando estrategias en código R y utilizando el paquete systemic investor toolbox(SIT) como herramienta de backtesting. Copié un código de backtesting SIT de un sitio web e hice pequeños cambios para hacer el código de abajo y su trabajo bien.
#backtesing long Apple
#long when fast MA is greater than slow MA and rsi less than 50 else exit
library(quantmod)
library(SIT)
data <- new.env()
# Load historical data and adjusts for splits and dividends
tickers = spl('AAPL')
getSymbols(tickers, src = 'yahoo', from = '2000-01-01', env = data, auto.assign = T)
for(i in ls(data)) data[[i]] = adjustOHLC(data[[i]], use.Adjusted=T)
#Calculate the moving averages and lag them one day to prevent lookback bias
close<-Cl(data[['AAPL']])
MAF <- lag(SMA(close,50))
MAC <- lag(SMA(close,100))
rsi<- RSI(close,25)
#Sets backtesting environment
bt.prep(data, align='remove.na')
prices = data$prices
#Create a empty list for attaching the models to at a later stage
models = list()
#Specify the weights to be used in the backtest
data$weight[] = NA #Zero out any weights from previous
data$weight[] = ifelse(MAF>MAC&rsi<50,1,0) #If price of SPY is above the SMA then buy
#Call the function to run the backtest given the data, which contains the prices and weights.
models$technical_model = bt.run.share(data, trade.summary=T)
#Plot equity curve and export the trades list to csv
plot(models$technical_model$equity, main="Equity Curve")
Actualmente, para comprobar la calidad de mi estrategia, utilizo el código anterior contra 10 acciones e índices elegidos al azar en mi cartera (AAPL, GOOG, GE, GS, PFE, AA, SPY, ^GSPC, XOM, C) y luego tomo manualmente los promedios de los resultados (por ejemplo, reducción, sharpe, factor de beneficio, etc.) para comprobar la viabilidad de la estrategia. Pero hacer esto me lleva mucho tiempo y energía. ¿Cómo puedo hacer un backtest de mi estrategia contra todo mi protofolio en lugar de uno por uno en SIT para obtener una mejor estimación de mi estrategia. ¿Qué tipo de modificaciones debo hacer en el código anterior?
0 votos
El código SIT fue escrito en el curso de una serie de blogs ( systematicinvestor.wordpress.com ) puede que encuentres una vista de la cartera allí también. De lo contrario, si su pregunta es: Tengo código para una sola acción cómo puedo usarlo para muchos, entonces esto no es una pregunta QSE.
0 votos
Si lo entiendo mal, entonces es sólo trivial: tienes código para una acción. Hay muchas maneras de utilizarlo para un montón de acciones. Además: ¿de qué naturaleza es su estrategia? ¿Ofrece señales para una sola acción o para muchas (como la clasificación de acciones o la creación de carteras)?