1. 课程导入

课程导入 学习卡片

欢迎进入《LEAN量化回测引擎与本地研究实战》。在开始写第一行策略代码之前,我们需要先建立一张“地图”:LEAN是什么、它解决什么问题、为什么值得投入时间学习,以及这30章将如何带你从零走到可落地的本地研究流程。本章不涉及复杂算法,但会决定你后续学习的方向感与效率。

一、LEAN的定位:不只是回测器,而是研究到实盘的统一引擎

LEAN是QuantConnect开源的算法交易引擎,采用C#编写,同时提供Python接口。它的核心定位可以概括为:一套代码,贯穿回测、纸上交易与实盘交易。传统研究流程中,回测常用pandas或backtrader,实盘再换一套框架,策略逻辑需要重写,数据格式、时间对齐、订单模型都要重新适配。LEAN试图消除这种割裂:策略类、数据订阅、订单方法、风控模型在回测与实盘阶段保持一致,切换运行模式只需修改配置。

从架构上看,LEAN由几个关键层组成:数据层负责多资产、多周期数据订阅与切片;算法层承载你的策略逻辑;订单层模拟或对接真实成交;结果层输出统计指标与报告。理解这个分层,有助于后续排查“为什么回测有信号但没成交”这类问题。

核心认知:LEAN不是“更快的pandas”,而是一个事件驱动引擎。你的策略在每个时间切片被调用,通过API获取数据、下单、记录指标。思维方式需要从“向量化计算”转向“逐事件处理”。

二、核心优势:为什么选择LEAN

LEAN的优势可以从工程、研究、生态三个维度理解。

维度具体优势对学习者的意义
工程一致性回测与实盘共用同一套策略代码与订单模型减少“回测赚钱、实盘亏钱”的适配风险
多资产支持股票、期货、期权、外汇、加密货币统一接口跨市场策略无需更换框架
本地研究LEAN CLI支持本地数据、本地回测、Jupyter研究数据隐私可控,研究环境自由
开源生态社区策略、数据源、插件持续扩展可阅读成熟实现,加速学习
统计报告内置夏普、回撤、换手率、Alpha等指标无需手写绩效分析,专注策略逻辑

需要提醒的是,优势不等于“零成本”。LEAN的本地环境配置、数据格式转换、CLI命令使用,对初学者有一定门槛。本课程的设计正是为了把这些门槛拆解成可操作的步骤。

三、方法流程:从策略想法到本地回测的闭环

在LEAN中,一个完整的本地研究闭环通常包含以下步骤:

  1. 环境准备:安装LEAN CLI,创建本地项目,确认Python或C#运行环境。
  2. 数据接入:使用本地数据文件夹或下载示例数据,确保数据格式符合LEAN要求。
  3. 策略编写:继承QCAlgorithm,在Initialize中订阅数据、设置参数,在OnData中编写交易逻辑。
  4. 本地回测:通过CLI运行回测,观察日志、订单与统计结果。
  5. 结果复盘:分析回撤、胜率、盈亏比,定位逻辑缺陷或过拟合迹象。
  6. 迭代优化:调整参数或逻辑,重复回测,形成可解释的改进记录。

下面是一个最小LEAN策略的代码骨架,用于建立直观印象:

from AlgorithmImports import *

class FirstStrategy(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2023, 1, 1)
        self.SetEndDate(2023, 12, 31)
        self.SetCash(100000)
        self.AddEquity("SPY", Resolution.Daily)
        self.sma = self.SMA("SPY", 20, Resolution.Daily)

    def OnData(self, data):
        if not self.sma.IsReady:
            return
        if not self.Portfolio.Invested and self.Securities["SPY"].Price > self.sma.Current.Value:
            self.SetHoldings("SPY", 0.8)
        elif self.Portfolio.Invested and self.Securities["SPY"].Price < self.sma.Current.Value:
            self.Liquidate("SPY")

这段代码虽然简单,但已经包含LEAN策略的核心结构:时间设置、资金设置、数据订阅、指标注册、事件处理与下单。后续章节会逐项深入。

四、学习路径与整体课程框架

本课程共30章,按“认知—环境—数据—策略—回测—优化—实战”递进组织。你可以把它看作一条从入门到本地研究落地的路线图。

  • 第1-4章 认知与环境:LEAN定位、安装配置、CLI使用、项目结构。
  • 第5-9章 数据与订阅:数据格式、多资产订阅、时间切片、数据清洗。
  • 第10-16章 策略核心:Initialize与OnData、指标、下单方法、组合管理、风控。
  • 第17-22章 回测与评估:回测参数、统计报告、基准对比、过拟合识别。
  • 第23-27章 本地研究进阶:Jupyter研究、参数扫描、自定义数据、多策略对比。
  • 第28-30章 实战与复盘:完整策略案例、常见错误、从回测到纸上交易的过渡。

学习建议:每章至少运行一次示例代码,不要只阅读。LEAN的很多概念(如数据切片、订单状态)只有在实际运行日志中才会真正清晰。

五、常见误区与早期复盘

初学者在接触LEAN时,容易陷入几个典型误区:

  • 把LEAN当pandas用:试图在OnData中做大规模向量化计算,导致逻辑混乱或性能问题。
  • 忽视数据时间对齐:不同分辨率数据混用时,未理解切片顺序,导致未来函数或信号延迟。
  • 跳过本地环境直接云端:云端方便,但本地研究能力才是长期竞争力。
  • 只看收益不看回撤:LEAN报告丰富,但若只关注最终收益,容易忽略风险暴露。

复盘提醒:回测结果好,不等于策略有效。请始终检查:是否使用了未来数据?交易成本是否合理?参数是否过度拟合?LEAN提供的是工具,判断力仍在你手中。

本章的目标是让你在动手之前,先理解LEAN的边界与价值。接下来,我们将进入实际环境搭建,把这张地图变成可运行的项目。