Lean-算法交易引擎


这个仓库是QuantConnect的Lean算法交易引擎,是一个事件驱动、专业级别的算法交易平台,具备优雅的工程设计和深度的量化概念建模。以下是对该仓库的详细介绍:

仓库概述

  • 平台特点:LEAN是一个事件驱动、专业级别的算法交易平台,注重优雅的工程设计和深度的量化概念建模。它支持开箱即用的替代数据和实时交易。
  • 模块化设计:该平台采用模块化设计,每个组件都可插拔和定制,并且自带了适用于所有主要插件点的模型。
  • CLI工具:提供QuantConnect Lean CLI命令行界面工具,方便开发者与Lean算法交易引擎进行交互,可用于管理项目、运行回测、部署实时算法等任务。

主要功能模块

  1. 引擎(Engine)
    • LeanEngineSystemHandlers:提供系统级处理程序的容器。
    • DataFeeds:数据管理模块,如DataManager,处理算法中数据的管理和更新。
    • Storage:存储模块,包含LocalObjectStore类,是IObjectStore的本地磁盘实现,用于管理对象存储,包括初始化、读取、保存和删除对象数据等操作,同时会检查存储限制,若超出限制会抛出StorageLimitExceededException异常。
  2. 算法(Algorithm)
    • CSharp和Python实现:提供了多种算法示例,如ObjectStoreExampleAlgorithm展示了IObjectStore的使用,通过缓存历史数据来加速连续回测;IntradayReversalCurrencyMarketsAlpha展示了如何处理新证券的创建和缓存类。
  3. 通用(Common)
    • Api:包含与API交互的相关类,如ObjectStoreResponse定义了获取对象存储信息的响应类,包括获取、列出和属性查询等响应。
    • Storage:提供ObjectStore类,作为IObjectStore的辅助类,简化了对对象存储方法的访问,支持多种数据格式的读写操作,如JSON、XML等。
  4. 其他模块
    • Brokerages:经纪商相关模块,处理与不同经纪商的交互。
    • Indicators:指标模块,提供各种技术指标的实现。
    • Optimizer:优化器模块,用于算法参数的优化。

代码示例

以下是ObjectStoreExampleAlgorithm中使用对象存储的示例代码:

class ObjectStoreExampleAlgorithm(QCAlgorithm):
    spy_close_object_store_key = "spy_close"
    spy_close_history = RollingWindow[IndicatorDataPoint](252)

    def initialize(self):
        self.set_start_date(2013, 10, 7)
        self.set_end_date(2013, 10, 11)
        self.SPY = self.add_equity("SPY", Resolution.MINUTE).symbol
        self.spy_close = self.identity(self.SPY, Resolution.DAILY)

        if self.object_store.contains_key(self.spy_close_object_store_key):
            values = self.object_store.read(self.spy_close_object_store_key)
            history = pd.read_csv(StringIO(values), header=None, index_col=0, squeeze=True)
            for time, close in history.items():
                self.spy_close.update(time, close)
        else:
            history = self.history(self.SPY, timedelta(365), Resolution.DAILY).close.unstack(0).squeeze()
            for time, close in history.items():
                self.spy_close.update(time, close)
            self.object_store.save(self.spy_close_object_store_key,
                '\n'.join(reversed([f'{x.end_time},{x.value}' for x in self.spy_close_history])))

安装和使用

  • 安装:使用pip install lean命令安装QuantConnect Lean CLI。
  • 命令示例
    • 创建新项目:lean project-create
    • 运行本地Jupyter Lab环境:lean research
    • 本地回测项目:lean backtest
    • 本地优化项目:lean optimize
    • 本地实时交易:lean live

相关链接