为什么回测平台的选择很重要
回测是将一组交易规则应用于历史数据,并衡量本应发生的结果。用于运行该测试的平台会影响三件事:数据如何存储和对齐、订单和成交如何模拟,以及底层逻辑有多容易被阅读和检查。关于这一主题的学习笔记将实用选项分为四类:Excel 等电子表格、MATLAB 等通用数值环境、TradeStation 等券商集成的零售平台,以及高端机构级套件。 有几项标准将这些类别区分开来。第一是数据来源:有些平台自带历史数据,而另一些则要求用户从其他地方导入文件。第二是时间戳对齐。只有当每个信号都是使用当时实际可获得的信息计算时,回测才有意义;当来自不同来源的价格序列在略有不同的日期上合并时,可能会出现非预期的前视偏差。第三是平台能够处理的模型复杂度,从单一品种的规则集到包含数百只股票的投组。第四是统计和数学模块的可用性,当算法依赖成熟的数值方法而非自定义代码时,这一点很重要。第五是成本,第六是同一环境是否也能发送实盘订单,还是必须构建单独的执行系统。 笔记中有一个观察悄然影响所有这些权衡:简单的策略往往是最好的策略。如果接受这一观点,运行极其复杂模型的能力就不再那么具有决定性,而更便宜、更透明的工具对许多交易者来说仍然可行。这并没有消除权衡,但改变了每一项应获得多少权重。
Excel:最基础且使用最广泛的平台
笔记将 Excel 描述为最基础且使用最广泛的回测工具,零售交易者和机构交易者都在使用。借助 VBA 宏,其能力会大幅扩展,但宏是可选的;核心工作流只需要公式和数据表。 核心优势是笔记所称的所见即所得:数据和程序位于同一屏幕,没有隐藏逻辑。典型布局将日期放在一列,原始价格放在接下来的列,指标公式放在旁边,由这些指标推导出的持仓或信号列,每期收益列,最后是用于生成图表的累计权益列。每一步都可见。任何审阅该表的人都可以点击单元格,准确看到哪些输入产生了哪些输出。 这种透明性还有第二个好处:除非使用宏,Excel 中几乎不会出现前视偏差。原因是实践性的,而非理论性的。当必须合并两个数据序列时,很容易将它们放在对齐的列中,并逐单元格匹配日期,因此计算中使用的值就是当时存在的值。不存在可能悄悄包含未来信息的独立数据对象。然而,当 VBA 宏接管计算时,这种可见性就会丧失,同样的风险也会回来。 第三个优势是可以在同一张电子表格上进行回测和实盘交易,从而避免把策略写两遍。评估历史行的同一组公式可以指向最新行,以生成当前信号。 主要缺点是只能回测相对简单的模型。Excel 并非为高容量投组模拟、重度优化或大规模数据处理而构建。笔记指出,这一限制对许多交易者来说并不致命,因为简单的策略往往是最好的策略。如果交易者的规则可以用少数几列表达,那么留在电子表格中几乎不会损失什么。
MATLAB:机构级数值回测
笔记将 MATLAB 描述为大型机构的量化研究人员和交易者最常用于回测的平台之一。它特别适合测试包含大量股票的投组策略,因为计算必须在许多品种和许多日期上重复进行。 其价值来自集成。MATLAB 捆绑了高级统计模块和数学模块,因此当交易算法依赖复杂但标准的数学概念时,函数已经存在,无需从头编写。它还提供大量在线可用的免费第三方插件,其中许多可直接用于量化交易。数据处理也得到支持:MATLAB 可以从互联网获取金融信息,并将其转换为有用的格式。 笔记强调,基本功能确实很容易学习。一个完整的回测程序可以相当快地编写出来,这也是该平台从专业编程团队扩展到一般研究用途的原因之一。 有两点缺点被突出强调。第一是成本:单份拷贝价格不菲。市场上确实有许多替代品,其代码与 MATLAB 非常相似,价格只有几百美元,甚至免费提供。笔记补充了一个有用的细节:替代品越贵,其与 MATLAB 代码的兼容性越好,这表明价格与需要重写多少之间存在滑动尺度。 第二个缺点是架构性的。MATLAB 很适合回测,但不太适合作为实盘执行平台。策略测试完成后,通常必须用另一种更适合生产要求的编程语言构建单独的执行系统。这意味着研究环境和交易环境并不相同,策略必须重新实现。笔记指出,这并未阻止 MATLAB 在量化交易中被广泛使用。
MATLAB 程序解析:脚本、函数与矩阵模型
笔记中包含了对 MATLAB 程序究竟是什么的定义,值得将其与品牌名称区分开来。MATLAB 既是一种编程语言,也是一个数值计算和可视化平台。它由 MathWorks 开发,全称是 Matrix Laboratory。它最初为矩阵运算和科学计算而设计,后来发展成为量化交易中使用最广泛的回测平台之一。 从程序员的角度看,MATLAB 程序是一个扩展名为 .m 的纯文本文件,其中包含一系列 MATLAB 命令和函数调用。运行该文件时,MATLAB 会逐行解释并执行代码。它没有 C++ 或 Java 那种单独的编译步骤,即必须先将源代码构建为可执行文件才能运行。其模型更接近 Python:一种解释型语言,代码保存后可直接运行。 与 Python 一样,MATLAB 有两种基本文件类型。脚本文件是从上到下执行的命令列表。脚本可以访问工作区中已存在的变量,并且它们创建的每个变量在结束后都会保留在工作区中。函数文件接受输入参数,执行计算,并返回输出。函数内部定义的变量会在函数结束时自动清除,因此不会污染周围的工作区。在学习材料中,example3_4.m 是一个脚本,而 lag1.m 是一个计算数据序列一期滞后的小函数。 MATLAB 在量化交易中很受欢迎,因为多项能力集中在一处。数据被视为矩阵,矩阵运算可以替代显式循环,这对大型金融时间序列很高效。权益曲线、参数曲面和概率分布的可视化只需几条命令。工具箱提供高级统计和数学例程。互联网连接支持数据获取,免费第三方插件扩展了标准版本。 根本限制是 MATLAB 不适合作为实盘执行平台。MATLAB 程序不是预编译的独立应用程序;它们必须在 MATLAB 环境内运行。笔记将其比作在原型工具中设计界面,最终产品仍必须用代码实现。



