算法交易模拟器/基准数据

31

我对算法交易策略很感兴趣。请问是否有离线模拟器或基准数据可供使用(而无需进行任何实际投资)?

6个回答

76
这个问题比较宽泛,没有提到你感兴趣的工具。例如: 暂且假设你对股票感兴趣……如果是这样,请看一下Ninja Trader,它提供这些免费功能。你可以从Yahoo Finance获得免费的日终股票数据,这对于长期交易时间表已经足够;请记住,交易周期越短,你的数据分辨率需求就越严格。
如果你愿意在一个交易账户中投入几千美元,任何经纪人都会很乐意向你发送实时市场盘口数据;但是你不需要在账户中有钱进行模拟交易(至少我的经纪人不需要)。我认为对于程序员来说最灵活的经纪人是Interactive Brokers。你可以通过API从他们那里获取亚秒级的数据,只是要明白他们不会给你Tick级别的细节;他们会汇总他们的数据,具体细节因情况而异,所以最好直接与他们沟通,如果你有高精度的需求。至于离线模拟,你可以使用Ninja Trader、Interactive Brokers和许多其他在线经纪人(请参见What online brokers offer APIs?)。

额外材料

既然你提供了+200,我会分享更多内容,也许你可以用到...保留或丢弃,看它能带来什么价值。

交易时间框架

作为一般规则,时间越短,交易就越难,并且赚钱就越难以持续。如果您不确定从何处开始制定时间表,请查看每次几天或几周的交易周期;然后,如果您发现错过了太多机会,请将系统优化到更短的时间表。另一个要考虑的因素是您想多久触碰此代码并调整算法。一般规则是,随着交易周期变得更短,您需要在算法上进行更多校准和维护。并不罕见找到一个编写了良好的Swing-Trading平台十年来一直运行良好的算法交易员。另一方面,Day Trading Algorithms往往需要更多关注和适应市场条件的变化。
交易风格
与时间表密切相关的是您的交易策略。您是:

交易管理/心态

交易管理是一个相当大的主题,如果你在像精英交易者这样的交易员论坛上潜伏,你会发现它被深入地讨论。虽然在自动交易平台的同一线程中讨论这些可能听起来有些不合适,但我相信你会同意,你的假设和态度有渗透到你的代码中的隐蔽方式。我会分享一些我想到的事情:

  1. 成功主要在于防止亏损交易。好的交易自己会处理。
  2. 始终使用止损。常规智慧是“第一次亏损是最小的亏损”。如果情况开始变得不利,找到一种方法可以持续退出并保留大部分之前的利润;持有输家是成为煮青蛙的快速路径。
  3. 没有所谓的“太高”或“太低”。市场以群体心态运动,不在乎你认为它应该做什么。
  4. 与第3点密切相关:跟随长期趋势进行交易。与趋势对抗(亲切地称为“逆势交易”)可能听起来对天生反叛者很有吸引力,但您需要非常出色才能做得好。进行交易已经足够辛苦,不要试图逆势而行。
  5. 在联邦储备市场公告后的一个小时内进行交易非常困难;我认为最好退出市场。快速的利润看起来很诱人,但这是专业人士喜欢吞噬业余交易者的地方;残酷的逆转可能在几分钟内发生。
  6. 除非您有经过至少数年数据回测的经过验证的技术,否则请避免使用保证金进行交易。
  7. 常规交易的前30分钟和最后一个小时可以看到波动性的快速变化。
  8. 关于利润的获取,“多头得到饲料,贪婪的人被屠宰”
  9. 如果发现自己没有获利,请考虑评估您的交易频率;减少交易次数是成功的关键,否则滑点、佣金和垃圾交易的费用将吞噬您的利润。
  10. 由于计算延迟/处理时间和部分订单填充,限价订单相当具有挑战性并且非常接近细节;算法交易者有更大的问题要解决。

编程

  1. 记录你的代码中每个数据点和决策;我通常使用三个日志级别。交易是不精确的任务,微小的变化可能会破坏之前盈利的算法。如果出现问题,需要一种方法来比较以前的工作。
  2. 在脚本语言中进行原型设计;如果速度慢,可以随时转移到编译器。我认为Python对于量化金融来说非常棒...成熟的单元测试、C/C++集成、numpy、pyplot和pandas都是我的首选。
  3. 更多pandas插件... (pandas视频),还可以参见:在Python中计算复合收益率系列
  4. 我最初使用普通的csv,但我正在将其迁移到HDF5以进行tick数据归档。
  5. 交易模拟很容易产生误导:模拟交易没有因低流动性或工具需求高而填补问题;根据市场条件,我的真实交易可能需要两到三秒钟才能从发送订单到获得填充的时间。模拟交易也不会有数据中断;请务必在计划中包括突然的数据丢失(以及如何恢复)。低成本经纪人 tend to suffer more blips and blackouts,但如果您的时间框架更长,可能可以忽略它。

法律声明

本文所提供的信息来源于作者认为可靠的来源。然而,作者不对信息的准确性或完整性作出任何明示或暗示的陈述或保证,也不建议附带信息作为任何投资决策的基础。此数据仅供您了解,不构成要约或邀请,也不应被解释为购买任何证券或其他金融工具的建议或推荐。通过使用这些信息,您明确同意所有与信息性能和质量相关的风险由您自行承担。即使作者已经被告知此类损害的可能性,作者也不对因使用或无法使用信息而产生的任何直接、间接、偶然、特殊或后果性损害承担责任。该信息由作者“按原样”和“带所有缺陷”提供。


4
尝试使用云端回测引擎,例如QuantconnectQuantopian
Quantopian是一个基于Python的IDE,您可以在其中编写策略并在线回测。您可以进行模拟交易以及与Interactive Broker进行实际交易。 Quanconnect类似于Quantopian,它们使用基于.Net的IDE,您可以使用折扣经纪商tradier运行模拟交易和实时交易。

4
我使用 AMIBroker。 它主要用于回测算法交易策略。它非常快速,并且可以从多种免费来源下载和获取数据。

4

1

QuantGo让您租用高频数据集,而不是购买它们。我非常喜欢它,因为每个月只需要几百美元,而不是数千美元。

如果您只对较长时间间隔的交易感兴趣,则Quandl有一些很好的免费数据集。他们的股票数据API相当不错(link)。


0

谢谢提供链接,但请遵守Stack Overflow关于自我推广的政策,披露您与该库的关联。 - Mike Pennington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接