像真正的定量交易一样的后验交易策略

5月7日,二千零一十九
通过

(本文首次发表于 188bet appR-Bloggers–学习机器,并对 188bet appR博主


R是最好的选择之一定量金融.这里我们将向您展示如何加载财务数据,情节图表给你一个逐步的模板后验交易策略.所以,继续阅读…

我们先画一张标准普尔500指数(标准普尔500指数),美国500家最大公司的指数。为了获取索引数据并绘制图表,我们使用量子动力学包装(在起重机上)。之后我们加了两个流行的指标,这个简单移动平均(SMI)以及指数移动平均值.

看看代码:

库(quantmod)加载所需包:xts加载所需包:zoo附加包:“zoo”以下对象从“package:base”:作为日期屏蔽,as.date.numeric加载所需的包:ttr版本0.4-0包括新的数据默认值。看到了吗?getsymbols.getsymbols(“^gspc”,from=“2000-01-01”)35;“GetSymbols”当前使用auto.assign默认为true,但将在0.5-0中使用auto.assign=false。您仍然可以使用“加载符号”自动加载数据。getoption(“getsymbols.env”)35;和getoption(“getsymbols.auto.assign”)仍将检查此消息在每个会话中显示一次,并且可以通过设置选项(“getsymbols.warning4.0”=false)禁用。看到了吗?获取详细信息符号。\35\35\35\35\35\35\35\35\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.27 1377.68 1402.11 1085500000 2000-01-06 1402.11 1411.90 1392.10    1403.45  1092300000## 2000-01-07   1403.45   1441.47  1400.73    1441.47  1225200000## 2000-01-10   1441.47   1464.36  1441.47    1457.60  1064800000##            GSPC.Adjusted## 2000-01-03       1455.22## 2000-01-04       1399.42## 2000-01-05       1402.11## 2000-01-06       1403.45## 2000-01-07       1441.47## 2000-01-10       1457.60tail(GS  \35; \\\35\35\\\\35;\\35\\\\\\\\\\\\\\\\\\\\\\\\\\\\2019年4月29日2940.58 2949.52 2939.35 2943.03 3118780000 2019年4月30日2937。14 2948.22 2948.22 2924.11 2945.83 3919330000 \\35\\35\35;\35\\\35\\35;\\\\\\\3519330000 \\\\\\\\\\\\\\\\2019-04-30 2945.83_2019-05-01 2923.73图表系列(GSPC,主题=图表主题(“白色”),subset=“过去10个月”,show.grid=true)

AdDSMA(20)

阿德玛(20)

正如你所看到的,移动平均数基本上是原始数据的平滑版本,按给定的天数移动。当使用SMA(红色曲线)时,所有的天数都与EMA(蓝色曲线)相等,最近几天的权重更大,从而使结果指示器更快地检测到变化。其想法是,通过使用这些指标,投资者可能能够发现长期趋势并采取相应行动。例如,交易规则可以是在指数从下方穿过MA时买入,在指数向另一个方向移动时卖出。你自己判断一下这是否可行。

好,尽管如此,仅仅通过看一张图表就很难发现某些交易规则的盈利能力。我们正在寻找更系统的东西!我们需要一个体面的反向测试!当然,这也可以用r来完成,最好的选择是性能分析包装(在起重机上)。

为了回溯交易策略,我为您提供了一个循序渐进的模板:

  1. 加载库和数据
  2. 创建指示器
  3. 使用指标创建权益曲线
  4. 评估战略绩效

作为一个例子,我们想测试一下当金融市场表现出巨大压力时,出售指数可能会有利可图的想法。有趣的是,足够多的“压力”可以通过指标免费提供。其中之一是国家财务状况指数芝加哥联邦储备银行网址:https://www.chicagofed.org/publications/nfci/index):

芝加哥联邦储备银行(Chicago Fed)的国家金融状况指数(National Financial Conditions Index,NFCI)每周全面更新美国的金融状况。货币市场的财务状况,债务和股票市场以及传统和“影子”银行系统。[…]NFCI[被]构造为在1971年之前的采样周期内平均值为零,标准偏差为1。NFCI的正值在历史上与比平均水平更严格的财务状况有关,而历史上,负值与宽松的财务状况有关。

为了使它更具体,我们要创建一个买入信号当指数在负范围内高于一个标准差时,卖出信号否则。

请看下面的代码:

#步骤1:加载库和数据库(QuantMod)库(PerformanceAnalytics)附加包:“PerformanceAnalytics”以下对象从“包:图形”:legendGetSymbols(‘NFCI’,Src=“弗莱德”,,从='2000-01-01')[1]“nfci”nfci<-na.omit(lag(nfci))我们只能在释放后对信号采取行动,即下一天获取符号(“^gspc”,从='2000-01-01')[1]“^gspc”数据<-na.omit(合并(nfci,GSPC))合并之前(!)计算回报)数据$gspc<-na.omit(roc(cl(gspc)))计算收盘价回报步骤2:创建指标数据$sig<-ifelse(数据$nfci<1,1,0)data$sig<-na.locf(data$sig)步骤3:使用指标创建equity curvePerf<-na.omit(合并(data$sig*data$gspc,data$gspc))colnames(perf)<-c(“基于压力的策略”,“SP500”)第4步:评估战略绩效表。下行风险(perf)基于压力的战略SP500半偏差0.0075 0.0087收益偏差0.0071 0.0085损失偏差0.0079 0.0095下行偏差(mar=210%)0.0125 0.0135下行偏差(Rf=0%)0.0074 0.0087下行偏差(0%)0.0074 0.0087最大跌幅0.5243 0.6433历史风险值(95%)-0.0173-0.0188历史风险值(95%)-0.0250-0.0293模型固定风险值(95%)-0.0166-0.0182修改后的ES(95%)-0.0268-0.031表。统计(性能)基于应力的战略SP500观察4858.0000 4858.0000 NAS 0.0000 0.0000最小-0.0690-0.0947四分之一-0.0042-0.0048中位数0.0003 0.0005算术平均值0.0002 0.0002几何平均值0.0002 0.0001四分位数3 0.0053 0.0057最大值0.0557 0.1096 SE平均值0.0001 0.0002 LCL平均值(0.0001.95)-0.0001-0.0002 ucl平均值(0.95)0.0005 0.0005方差0.0001 0.0001 stdev 0.0103 0.0120偏度-0.1881-0.2144峰度3.4430 8.5837图表。性能总结(性能)

图表相对性能(性能1,珀尔夫2)

风险分散图(性能)

第一张图表显示,基于压力的策略(黑色曲线)明显优于基准,标准普尔500指数(红色曲线)。这也可以在第二张图表中看到,显示相对性能。在第三个图表中,我们看到返回(更多)和(!)与基准相比,我们的后验策略的风险(较少)更为有利。

所以,总之,这似乎是一个可行的策略!当然,在投入实际资金之前,还需要进行更多的测试!您可以使用这个框架来测试您自己的想法。

这里不是解释上述所有表格和图的地方,但正如您所看到的,两个包都非常,非常强大,我只向您展示了他们能力的一小部分。要充分利用它们的潜力,您应该查看一下Cran上随附的大量文档。

免责声明:
这不是投资建议!如果你亏了钱,什么都不负责任!

如果你能赚钱的话,如果你能给我买杯咖啡,我会很高兴的……这不算太贵,它是?

留下评论作者,请关注他们博客上的链接和评论: 188bet appR-Bloggers–学习机器.

188bet appR博客提供 每日电子邮件更新金宝搏网址 R新闻与 教程关于以下主题: 数据科学大数据, r作业,可视化(可视化) GGPROTT2箱形图地图动画)程序设计(程序) 演播室斯威夫特乳胶SQL日食吉特哈多普刮网)统计 回归主成分分析时间序列交易还有更多…



如果你走这么远,为什么不 订阅更新 从站点?选择您的口味: 电子邮件推特1188bet app,或 脸谱网

注释已关闭。

搜索R-Blo188bet appggers

赞助商

千万不要错过更新!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)