最近开始系统性学习量化交易。之前对量化的理解一直停留在「用 Python 写一个策略然后让它自动交易」的模糊认知上,真正开始学习之后才发现里面涉及的知识比想象中要广得多。这篇文章记录我第一个月的学习内容和心得,主要是面向同样刚开始接触量化的朋友。
学习量化交易的起点是搞清楚一个策略从想法到实盘的大致流程。简单来说可以分为几个步骤:提出策略假设、获取数据、数据清洗、策略编写、历史回测、参数优化、模拟交易、实盘运行。任何一个环节出了问题,都会导致回测看起来很美的策略在实盘中一塌糊涂。我目前还在回测和参数优化的阶段,离实盘还有距离。
工具选择上,Python 是量化交易的主流语言,生态非常丰富。数据获取方面,开源的选择有 Tushare 和 AkShare,都能获取 A 股的行情数据、财务数据和宏观经济数据。回测框架我目前用的是 Backtrader,它是一个功能比较完备的 Python 回测框架,支持多品种、多时间框架、自定义手续费和滑点模型。第一个跑通的策略是一个非常简单的双均线交叉策略,虽然策略本身没有任何实战价值,但完成这个过程让我理解了数据加载、策略编写、回测执行和结果分析的全流程。
第一周遇到的最多的问题不是写策略本身,而是回测中各种容易被忽略的细节。比如前视偏差——你在回测中用到了未来才出现的数据,导致回测结果非常好看但在现实中根本无法复现。比如幸存者偏差——你只回测了现在还能查到的股票,而忽略了那些已经退市或停牌的股票,这会让回测的收益率偏乐观。还有手续费和滑点——实盘中每一笔交易都有成本,如果在回测中不考虑这些成本,策略在实盘中很可能会亏钱。这些坑都是新手最容易踩的,我在这里提醒未来的自己在写策略的时候一定要逐条检查。
目前的学习进度是用 Backtrader 跑通了几个基础策略的回测,包括均线交叉、布林带突破和简单的动量策略。接下来的计划是学习因子选股模型的基本框架,了解一下多因子模型是如何构建的,以及因子检验中需要注意哪些统计陷阱。