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

原文链接:http://tecdat.cn/?p=23808

原文出处:拓端数据部落公众号 

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

让我们以MARKET TIMING与DECISION MOOSE的历史信号为例,为该策略创建股票曲线。 

  1.  
    #*****************************************************************
  2.  
    # 加载信号
  3.  
    #*****************************************************************
  4.  
     
  5.  
     
  6.  
    # 提取交易历史
  7.  
    temp = extract.table.from.webpage(txt, 'Transaction History', has.header = F)
  8.  
    temp = trim(temp[-1,2:5])
  9.  
    colnames(temp) = spl('id,date,name,equity')
  10.  
     
  11.  
     
  12.  
    tickers = toupper(trim(gsub('\\)','', sapply(temp[,'name'], spl, '\\('))))[2,]
  13.  
     
  14.  
     
  15.  
    load(file=filename)
  16.  
     
  17.  
     
  18.  
    #plota(make.xts(info$equity, info$date), type='l')
  19.  
     
  20.  
    #*****************************************************************
  21.  
    # 加载历史数据
  22.  
    #*****************************************************************
  23.  
    tickers = unique(info$tickers)
  24.  
     
  25.  
    # 加载保存的代理原始数据
  26.  
    load('data/data.proxy.raw.Rdata')
  27.  
     
  28.  
    # 定义现金
  29.  
    tickers = gsub('3MOT','3MOT=BIL+TB3M', tickers)
  30.  
     
  31.  
    #飞毛腿新亚洲基金(SAF),并入DWS新兴市场股票基金
  32.  
    tickers = gsub('SAF','SAF=SEKCX', tickers)
  33.  
     
  34.  
     
  35.  
    #添加虚拟股票,以保持交易日期,如果它们与数据不一致的话
  36.  
    dummy = make.stock.xts(make.xts(info$equity, info$date))
  37.  
     
  38.  
    getSymbols.extra(tickers, src = 'yahoo', from = '1970-01-01', env = data, raw.data = data.proxy.raw, auto.assign = T)
  39.  
     
  40.  
    # 可选择未被Adjusted捕获的分叉点
  41.  
    #data.clean(data, min.ratio=3)
  42.  
     
  43.  
    for(i in ls(data)) data[[i]] = adjustOHLC(data[[i]], use.Adjusted=T)
  44.  
     
  45.  
    #print(bt.start.dates(data))
  46.  
     
  47.  
    data$dummy = dummy
  48.  
     
  49.  
     
  50.  
     
  51.  
     
  52.  
    #*****************************************************************
  53.  
    # 设置
  54.  
    #*****************************************************************
  55.  
    prices = data$prices
  56.  
     
  57.  
    models = list()
  58.  
     
  59.  
    #*****************************************************************
  60.  
    #代码策略,SPY - 买入和持有
  61.  
    #*****************************************************************
  62.  
    data$weight[] = NA
  63.  
    data$weight$SPY = 1
  64.  
    models$SPY = bt.run.share(data, clean.signal=T, silent=T)
  65.  
     
  66.  
    #*****************************************************************
  67.  
    # 创建权重
  68.  
    #*****************************************************************
  69.  
    weight = NA * prices
  70.  
     
  71.  
    for(t in 1:nrow(info)) {
  72.  
    weight[info$date[t],] = 0
  73.  
    weight[info$date[t], info$ticker[t]] = 1
  74.  
    }
  75.  
     
  76.  
     
  77.  
     
  78.  
     
  79.  
    #*****************************************************************
  80.  
    #创建报告
  81.  
    #******************************************************************
  82.  
    plota.matplot(scale.one(data$prices),main='Asset Perfromance')

plot(models, plotX = T)

print(plotbt))

 

  1.  
    m = 'decisionmoose'
  2.  
    plotbmap(models[[m]]$weight, name=m)



最受欢迎的见解

1.R语言对S&P500股票指数进行ARIMA + GARCH交易策略

2.R语言改进的股票配对交易策略分析SPY—TLT组合和中国股市投资组合

3.R语言时间序列:ARIMA GARCH模型的交易策略在外汇市场预测应用

4.TMA三均线期指高频交易策略的R语言实现

5.r语言多均线量化策略回测比较

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

9.matlab使用Copula仿真优化市场风险

posted @ 2021-09-17 10:40  拓端tecdat  阅读(152)  评论(0编辑  收藏  举报