R语言回测交易:根据历史信号/交易创建股票收益曲线

最近我们被客户要求撰写关于回测交易的研究报告,包括一些图形和统计输出。

本文介绍如何根据历史信号/交易制作股票曲线。

让我们以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)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值