- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
量化交易测试常见的陷阱
这个职位适合那些开始进行量化交易的人,也适合那些在这个领域有一定经验的人。后讨论了测试常见的陷阱,以及一些少见的!
它也着眼于交易机制以及实现这些方法的软件的不同景观。然后我们讨论是否值得建立你自己的回测系统,甚至与当今流行的开放源代码工具。
交易策略规则集历史价格数据中的应用。
也就是说,如果我们定义了一系列进入和退出资产组合的机制,并将这些规则应用于这些资产的历史定价数据,我们就可以试图理解过去可能实现的这种“交易策略”的表现。
曾经有人说过:“所有的模型都是错误的,但有些是有用的”。同样是真实的绩效回测。那么他们的目的是什么?
回测最终帮助我们决定是否值得活的交易策略规则集。它为我们提供了一个战略如何在过去进行的想法。本质上,它允许我们在分配任何实际资本之前过滤掉坏的策略规则。
很容易产生绩效回测。不幸的是,测试结果不是活的交易结果。他们只是一个现实的模型。通常包含许多假设的模型。
有软件测试的两个主要类型的“环”和“事件驱动”系统。
当设计软件测试总有一个权衡精度和实现复杂度。上述两种测试类型表示的频谱的两端为这种折衷。
测试陷阱
这是许多陷阱相关性与测试。他们所有的关注的事实是回测只是一个模型的现实。陷阱包括:
在样本测试这发生,当你utilise同样的数据到你的“直通车”贸易模型作为阱作为对“试验”的信息。它几乎总是inflates绩效的战略上,这会看到现场直播的贸易。这是因为它具有一对unseen validated注释数据,这将likely带耗散项的markedly从训练数据。输入的本质,它是一个形式的过学习问题。
幸存者偏差对股指、A周期过程的上市和上市的组成发生变化,在时间。把剔除了ST破产成本变动在账户组成回测, 因此,它是必要的使用一直到幸存者偏差数据,导致了错误的回测结果。
你的未来的预测偏差的数据可以“sneak”进入到回测非常巧妙的方式。考虑线性回归精美比过特定的时间框架。如果这个比率的冰,然后使用同样的样本,然后我们有implicitly投产在未来将有这样的数据和likely inflated绩效。事件驱动的回测怎么解决这个问题,为我们企业的下面。
市场制度变化的这一问题的事实,是证券市场的“参数”是不平稳的。这是潜在生成过程,需要标注有制动作参数是常数时间的停留。这使得它成为一个很难概括的参数化模型(其中许多贸易战略是instances)和冰likely这样的性能是高到backtests贸易比现场直播。
对交易成本的多回路backtests不要带到交易账户,甚至基本费,如费或佣金。尤其是真正进入学术论文在量化回测是largely传导自由大学交易成本。不幸的是,它是所有太容易找到策略,这是高盈利没有交易成本,但通过losses丈夫当subjected到一个真正的市场。典型的成本,包括债券,市场的影响和滑点。所有这些应该用于量化回测的求实。
这里是一些更多的subtle问题与测试这是标注为经常讨论,但incredibly是静止不动的重要考虑。他们包括:
OHLC数据OHLC数据,这是日常的数据从免费网站如雅虎财经的类型,往往是多交流融合的饲料。因此,不可能看到一些更为极端的价值观(包括当天的高价格和低价格)很可能通过一个实时交易系统获得。这种“订单路由”需要作为模型的一部分来考虑。
资金容量限制-当测试很容易利用金钱的“无限”的情况。然而,在现实中,资本和利润都受到严格限制。还需要考虑平均每日成交量(ADV)限制,特别是对小盘股而言,我们的交易可能确实会推动市场。这种“市场影响”效应需要考虑到风险管理的目的。
量化交易基准的选择是基准的测试策略是一个很好的一个测量的选择?例如,如果你是交易商品期货和A股股指,是否真的用IF,IC,IH作为基准的意义吗?一篮子其他大宗商品交易基金是否更有意义?
鲁棒性的不同在你测试你的策略开始的时候做的结果显着改变?它不应该是一个长期的战略是否值开始在星期一或星期四的事。然而,如果它是敏感的“初始条件”,你如何能够可靠地预测未来的表现时,真实的交易?
已经有很多文章讨论的问题与测试的问题在长度。
量化交易循环测试系统
一个循环回测系统是测试系统最简单的类型和变异量的博客最经常见到的,纯粹是因为它的简单性和透明度。
基本回路系统遍历每个交易日(或OHLC条),执行一些计算价格相关(S)的资产(S),如接近均线,然后是长或短的特定资产(通常在相同的收盘价,但有时一天之后)。然后迭代继续。一直以来,总股本都在跟踪和存储,以产生股票曲线。
下面是这种算法的伪代码:
每个交易K线:
do_something_with_prices();
buy_sell_or_hold_something();
next_bar();
正如您所看到的那样,这种系统的设计非常简单。这使得它的吸引力在一个特定的策略规则集的性能“先看看”。
优势
循环backtesters直接在几乎任何编程语言实现,执行速度很快。后一个优势意味着可以对许多参数组合进行测试,以优化交易设置。
缺点
主要缺点是循环回测是他们是相当不现实的。除非特别添加,它们通常没有交易成本能力。通常,订单立即以“中点”价格在“市场上”填上。因此,通常不考虑传播。
有最小的代码重用测试系统和实时交易系统之间。这意味着代码常常需要编写两次,并引入更多bug的可能性。
循环回测容易向前看的偏见,由于错误的索引。例如,如果你使用“我”、“我+ 1”或“-1”在你的面板的索引?
循环利用回测系统应该仅仅作为一个过滤机制。你可以用它们来消除明显的坏策略,但你应该对强绩效持怀疑态度。需要经常进行进一步的研究。很少有更好的表现在现场交易策略比他们在回测的更好。
过/偏置方差权衡-我们已经讨论过这一点在样品测试点。然而,过的是一个更广泛的问题,所有的(监督)的机器学习方法。解决这个问题的唯一真正方法是小心地使用交叉验证技术。即便如此,我们也应该非常小心,我们并没有简单地把我们的交易策略与训练集中的噪音结合起来。
心理相容心理常常被忽视在定量金融因为(据说)是通过创建一个算法的系统中删除。然而,它总是会因为专家都倾向于“补锅匠”或“重写”系统一旦部署活。此外,可以在一个测试似乎可以忍受,可能令人反胃的现场交易。如果你的测试曲线显示在股票交易历史上的一些点50%的亏损,你可以意料到现场交易的情况吗?
量化交易平台开源框架
www.quicklib.cn |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|