下面是两个使用R中的Quantstrat包进行策略构建的例子,都是对600550.ss、600192.ss、600152.ss、600644.ss、600885.ss、600151.ss六只股票进行投资。第一个是简单的动量策略;第二个是简单的趋势策略。
虽然策略的表现都不太好,但是都有一个较为完整的框架,后面希望整理一下自己关于Quantstrat的学习笔记,刚接触相关方面的R语言小白,希望大家多多批评,欢迎交流!(在这之前要先加载quantstrat包)
一、动量策略:将每个股票过去14天收益率和股票过去30天收益率之间的比较作为投资信号
#设置策略时间
initDate="2018-01-01"
from="2018-04-18"
to="2020-01-23"
#导入市场数据
c=c("600550.ss","600192.ss","600152.ss","600644.ss","600885.ss","600151.ss")
Z=c("A","B","C","D","E","F")
for(i in 1:length(c)){
name=c[i]
setSymbolLookup(STOCK=list(name=name,src='yahoo'))
getSymbols("STOCK",from="2018-04-18",to="2020-01-23")
assign(paste0("A",Z[i]),na.approx(STOCK))
}
#初始化货币单位、时区和市场
Sys.setenv(TZ="UTC")
currency("RMB")
symbols=c("AA","AB","AC","AD","AE","AF")
stock(symbols,currency="RMB",multiplier=1)
#初始化投资策略环境空间
tradeSize=100000000
initEq=tradeSize*length(symbols)
strategy.st=portfolio.st=account.st="maCross"
rm.strat(strategy.st)
.blotter=.strategy=new.env()
ls(envir=.strategy)
#初始化策略
initPortf(portfolio.st,symbols=symbols,initDate=initDate,currency="USD")
initAcct(