本文介绍如何根据历史信号/交易制作股票曲线。
让我们以MARKET TIMING与DECISION MOOSE的历史信号为例,为该策略创建股票曲线。
#***************************************************************** # 加载信号 #***************************************************************** # 提取交易历史 temp = extract.table.from.webpage(txt, 'Transaction History', has.header = F) temp = trim(temp\[-1,2:5\]) colnames(temp) = spl('id,date,name,equity') tickers = toupper(trim(gsub('\\\)','', sapply(temp\[,'name'\], spl, '\\\('))))\[2,\] load(file=filename) #plota(make.xts(info$equity, info$date), type='l') #***************************************************************** # 加载历史数据 #***************************************************************** tickers = unique(info$tickers) # 加载保存的代理原始数据 load('data/data.proxy.raw.Rdata') # 定义现金 tickers = gsub('3MOT','3MOT=BIL+TB3M', tickers) #飞毛腿新亚洲基金(SAF),并入DWS新兴市场股票基金 tickers = gsub('SAF','SAF=SEKCX', tickers) #添加虚拟股票,以保持交易日期,如果它们与数据不一致的话 dummy = make.stock.xts(make.xts(info$equity, info$date)) getSymbols.extra(tickers, src = 'yahoo', from = '1970-01-01', env = data, raw.data = data.proxy.raw, auto.assign = T) # 可选择未被Adjusted捕获的分叉点 #data.clean(data, min.ratio=3) for(i in ls(data)) data\[\[i\]\] = adjustOHLC(data\[\[i\]\], use.Adjusted=T) #print(bt.start.dates(data)) data$dummy = dummy #***************************************************************** # 设置 #***************************************************************** prices = data$prices models = list() #***************************************************************** #代码策略,SPY - 买入和持有 #***************************************************************** data$weight\[\] = NA data$weight$SPY = 1 models$SPY = bt.run.share(data, clean.signal=T, silent=T) #***************************************************************** # 创建权重 #***************************************************************** weight = NA * prices for(t in 1:nrow(info)) { weight\[info$date\[t\],\] = 0 weight\[info$date\[t\], info$ticker\[t\]\] = 1 } #***************************************************************** #创建报告 #****************************************************************** plota.matplot(scale.one(data$prices),main='Asset Perfromance')
plot(models, plotX = T)
print(plotbt))
m = 'decisionmoose' plotbmap(models\[\[m\]\]$weight, name=m)