这更像是一种方法论(而非编程)问题,但它认为SO是适合它的地方。在雅虎于2017年5月更改其默认值以获取每日数据(在https://github.com/joshuaulrich/quantmod/issues/174,http://blog.fosstrading.com/2017/06/yahoo-finance-alternatives.html以及SO Why Open,High,Low prices are wrong when using quantmod?上讨论)之后起起伏伏,我可能不是唯一一个不能100%确定在回测程序中使用哪些数据的人quantmod getSymbols.yahoo和adjustOHLC仍然提供质量回溯测试的相关数据。 Quantmod 0.4.11还包括AlphaVantage(调整后库存)数据提供商,但我不熟悉它们的可靠性。如何准备从getSymbols调用获得的(股票和指数)数据?应该使用哪些数据((股票和股息)调整或未调整)?你使用哪些转换? adjustOHLC函数还包含一个错误,因为它没有拆分调整(通过调用很容易在AAPL上看到)
getSymbols(AAPL)
chart_Series(adjustOHLC(AAPL))
并观察2014年的跳跃。
您应该始终使用调整后的价格。大多数情况下,当数据提供商没有调整价格时,通常会调整供应商的收盘价。没有必要对原始收盘价格数据进行回溯测试。我曾经通过下载近似价格而不是调整而犯了一个错误,在回测结束时,我的策略告诉我,在所有S&P复合材料中,万事达卡是表现最差的。在查看MA图表后,很明显为什么。
由于2014年1月22日的分裂,我的数据只有一次回归qazxsw poi!总之,回溯测试的原始密切数据可能会给你完全错误的结果。
如何处理分裂
除以拆分比率之前除以每个价格。例如万事达卡有-90%
分割比例,所以你应该在1:10
之前将每个价格除以21.01.2014
。在数据中找到拆分非常容易,你只需要查找10
周围或以下的回报。
股息
在分红日股息金额之前减去每个价格。要找到分红日,你需要分红日历,你不可能自己找到它们。