Skip to content

Kiến Trúc Hệ Thống LEAN Engine

LEAN Engine là động cơ backtest mã nguồn mở của QuantConnect, được viết bằng C# và có binding cho Python. Hiểu kiến trúc của nó giúp bạn viết thuật toán đúng ngay từ đầu.

Event-Driven Architecture

LEAN là event-driven engine, KHÔNG phải vòng lặp truyền thống. Thuật toán của bạn được gọi qua các sự kiện (events) thay vì chạy trong một loop:

  • Initialize() — Chạy một lần khi bắt đầu: setup securities, indicators, warm-up.

  • OnData(Slice) — Gọi mỗi khi có dữ liệu mới (mỗi bar). Đây là nơi đặt logic giao dịch.

  • OnOrderEvent(OrderEvent) — Gọi mỗi khi lệnh được fill, reject, hoặc update.

  • OnEndOfDay() — Gọi cuối mỗi ngày giao dịch.

  • OnEndOfAlgorithm() — Gọi khi backtest kết thúc.

5 Module Framework

ModuleClassChức năng
1. Universe SelectionUniverseChọn tài sản nào tham gia thuật toán
2. AlphaAlphaModelSinh tín hiệu giao dịch (insights)
3. PortfolioPortfolioModelPhân bổ vốn dựa trên insights
4. RiskRiskModelQuản lý rủi ro (stop-loss, trailing stop, v.v.)
5. ExecutionExecutionModelKhớp lệnh thực tế

Data Pipeline

  1. Data Feed — Đọc dữ liệu từ disk (local) hoặc API (cloud)

  2. Subscription Manager — Quản lý các luồng dữ liệu đã đăng ký

  3. Consolidator — Gộp tick → second → minute → daily bars

  4. Indicator — Tính toán chỉ báo từ dữ liệu

  5. Slice — Đóng gói dữ liệu gửi đến OnData()

Key Concepts

  • Securities — Đối tượng đại diện cho tài sản (Equity, Crypto, Future, Option, Forex). Chứa price, holdings, fundamentals.

  • Symbol — Mã định danh duy nhất (vd: "AAPL", "BTCUSDT", "ES1!").

  • Resolution — Phân giải dữ liệu: Tick, Second, Minute, Hour, Daily.

  • SetWarmUp() — Pre-load dữ liệu cho indicators trước khi bắt đầu backtest.

  • ObjectStore — Lưu/tải ML models, parameters, cache dữ liệu.

    📘 Lưu ý

LEAN không hỗ trợ VN30F làm dataset mặc định. Bạn cần dùng Custom Data (AddData) để import dữ liệu VN30F. Xem hướng dẫn tại Custom Data cho VN30F.

Powered by dautu.tech