← 返回《初阶量化交易:策略编写及系统搭建》
📑 查看全课大纲(第 7 / 38 节)

量化交易系统的基本架构

约 5 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

量化交易系统的基本架构

小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。

在许多投资者的初级印象中,量化交易似乎只是由几个数学公式或简单的买卖技术指标拼凑而成。然而,在成熟的量化基金或专业机构中,量化交易是一套高度模块化、多层协同运行的工业级软件与风控系统

即使两个团队采用相同的趋势跟踪或均值回归思想,最终实盘业绩往往有天壤之别——这其中的差距,正是由系统底层在数据清洗、风控约束、成本测算、组合优化与订单执行等工程细节上的设计所决定的。本讲将深度拆解专业量化交易系统的五大核心支柱模块,并系统梳理一个完整交易系统不可或缺的六大基本要素。


💡 核心导读

  • 量化交易系统的五大核心支柱
    1. 数据模块(Data Feed / 系统的血液):涵盖高频 Tick、日线 OHLCV、财务数据及另类数据,决定了策略信息的输入质量与时效性;
    2. Alpha 预测模型(Alpha Model / 策略大脑):趋势跟踪、均值回复、多因子选股模型,负责输出资产收益预期;
    3. 风险控制模型(Risk Model / 生存命脉):严密把控单标的敞口、行业敞口与波动率上限,确保系统在极端大难中”活着度过危机”;
    4. 交易成本模型(Transaction Cost Model / 盈利试金石):精确计算印花税、佣金费率、滑点与市场冲击成本,防止”回测盈利、实盘全亏在手续费上”;
    5. 投资组合构建与执行引擎(Portfolio & Execution / 仲裁与四肢):综合 Alpha 预期、风险约束与摩擦成本,求解最优目标头寸,并通过智能算法进行撮合报单。
  • 完整交易系统的六大核心要素问答
    • 在什么市场进行买卖?(标的池与流动性筛选)
    • 用什么逻辑进行买卖?(明确的 Alpha 信号判定)
    • 一次买卖多少头寸?(动态资金与仓位管理)
    • 在什么时机入场?(精确触发机制)
    • 什么时候止损离场?(保护性风险底线)
    • 什么时候止盈退出?(动态保盈与趋势终结判定)
┌─────────────────────────────────────────────────────────────┐
│                    工业级量化交易系统标准架构                   │
└──────────────────────────────┬──────────────────────────────┘

 ┌─────────────────────────────┼─────────────────────────────┐
 ▼                             ▼                             ▼
┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐
│   数据层 (Data)   │   │  预测层 (Alpha)  │   │  风控层 (Risk)   │
├──────────────────┤   ├──────────────────┤   ├──────────────────┤
│ • Tick/日线行情   │   │ • 趋势跟随信号   │   │ • 单票敞口限制   │
│ • 财务与另类数据 │   │ • 均值回复模型   │   │ • 组合波动率约束 │
│ • 实时清洗与对齐 │   │ • 多因子打分引擎 │   │ • 极端回撤熔断   │
└────────┬─────────┘   └────────┬─────────┘   └────────┬─────────┘
         │                      │                      │
         └──────────────────────┼──────────────────────┘

         ┌──────────────────────────────────────────┐
         │ 组合构建与仲裁器 (Portfolio Optimizer)   │
         │ (综合 Alpha + Risk + 成本求解目标头寸)    │
         └──────────────────────┬───────────────────┘

         ┌──────────────────────────────────────────┐
         │ 智能执行引擎 (Execution Router & Order)   │
         │ (滑点控制、部分成交追单、对冲断腿保护)    │
         └──────────────────────────────────────────┘

一、量化交易系统的五大核心支柱模块

1. 数据基础设施模块(Data Infrastructure)

  • 定位:量化系统的血液。
  • 涵盖内容:历史长周期日线行情、日内分钟线、L1/L2 逐笔 Tick 数据、财报报表与另类数据源。
  • 关键要求:重点防范未来函数(Look-ahead Bias)、复权价格失真与数据截面缺失。

2. Alpha 预测模型(Alpha Model)

  • 定位:生成超额收益预期的算法核心。
  • 主流类型
    • 趋势跟踪类(动量策略、均线突破系统);
    • 均值回复类(统计套利、配对交易、布林带通道);
    • 多因子选股类(价值、成长、质量、低波因子综合打分)。

3. 风险控制模型(Risk Model)

  • 定位:保障账户长期生存的防护网。
  • 核心哲学做交易只要在大难来临的时候不死,就必然有后福。金融市场每隔数年就会发生一轮极端牛熊切换与黑天鹅震荡,严谨的风控模型通过资产分散化、杠杆上限控制与止损规则,确保在最恶劣的市场环境下坚决不冒永久性丧失本金的风险。

4. 交易成本模型(Transaction Cost Model)

  • 定位:决定高频与量化策略由盈转亏的关键分水岭。
  • 主要构成
    • 显性成本:印花税(单边卖出 0.05%,2023-08-28 起减半征收)、券商佣金(如万分之三或更低)、单笔最低 5 元规费;
    • 隐性成本买卖价差(Bid-Ask Spread)、滑点(Slippage)以及大额订单引发的市场冲击成本(Market Impact)

5. 投资组合构建与执行模型(Portfolio Optimizer & Execution Engine)

  • 组合构建器:扮演”法官/仲裁器”角色,平衡 Alpha 收益预期、风险敞口与交易磨损,输出最优目标持仓向量;
  • 执行模型:负责将理论目标持仓转化为交易所报单,处理未完全成交、撤单追单以及跨品种对冲时的”单腿断单(Legging Risk)“异常。

二、一个完整交易系统的六大核心要素

无论是个人开发的轻量级策略还是百亿量化私募的实盘系统,一个完整的交易策略必须对以下六大问题给出明确、定量的解答:

① 交易市场与标的 ── 在什么标的池上运作?(A股主板、科创板、ETF、商品期货)
② 核心驱动逻辑   ── 买卖基于什么假说?(基本面低估、量价动量突破、日历效应)
③ 目标头寸规模   ── 单笔交易建仓多少?(固定比例、凯利公式、波动率倒数加权)
④ 入场触发时机   ── 满足什么条件开仓?(突破阈值确认、指标金叉、成交量放大)
⑤ 保护性止损线   ── 亏损达到多少离场?(固定百分比止损、ATR 跟踪止损、时间止损)
⑥ 盈利平仓退出   ── 什么时候获利了结?(达到目标价位、均线死叉、动量衰竭)

📝 动手练一练

下面我们通过面向对象(OOP)方式,用 Python 实现一个四层解耦的最小化量化交易系统原型,完整串联行情输入、Alpha 信号判定、风控头寸仲裁与订单成本执行:

import pandas as pd
import numpy as np

class MinimalQuantSystem:
    """
    最小化量化交易系统架构 (数据 -> 信号 -> 风控 -> 执行四层解耦)
    """
    def __init__(self, initial_cash=100000.0, max_single_position=0.30):
        self.cash = initial_cash
        self.portfolio_value = initial_cash
        self.positions = {}                  # 持仓字典 {标的代码: 持有股数}
        self.max_single_pos = max_single_position  # 单标的风控上限 30%
        self.commission_rate = 0.0003        # 佣金费率 万分之三
        self.min_commission = 5.0            # 单笔最低佣金 5 元

    # 1. 信号模块 (Alpha Model)
    def alpha_model(self, price_series):
        ma5 = price_series.tail(5).mean()
        ma10 = price_series.tail(10).mean()
        if ma5 > ma10:
            return "BUY"
        elif ma5 < ma10:
            return "SELL"
        return "HOLD"

    # 2. 风控与头寸仲裁模块 (Risk & Portfolio Construction)
    def risk_and_position_manager(self, signal, symbol, current_price):
        if signal == "BUY":
            max_alloc = self.portfolio_value * self.max_single_pos
            # 按 1 手(100 股)整除向下取整
            affordable_shares = int(max_alloc / (current_price * 100)) * 100
            curr_shares = self.positions.get(symbol, 0)
            target_buy = max(0, affordable_shares - curr_shares)
            return ("BUY", target_buy)
        elif signal == "SELL":
            curr_shares = self.positions.get(symbol, 0)
            return ("SELL", curr_shares)
        return ("HOLD", 0)

    # 3. 执行模块与成本扣除 (Execution Model)
    def execution_engine(self, action, symbol, shares, price):
        if action == "BUY" and shares > 0:
            cost = shares * price
            comm = max(cost * self.commission_rate, self.min_commission)
            if self.cash >= cost + comm:
                self.cash -= (cost + comm)
                self.positions[symbol] = self.positions.get(symbol, 0) + shares
                print(f"[ORDER BUY]  {symbol}: 买入 {shares} 股 @ {price:.2f} 元 | 佣金: {comm:.2f} 元 | 剩余现金: {self.cash:,.2f} 元")
        elif action == "SELL" and shares > 0:
            revenue = shares * price
            tax = revenue * 0.0005  # 单边卖出印花税万五(2023-08-28 起减半)
            comm = max(revenue * self.commission_rate, self.min_commission)
            self.cash += (revenue - tax - comm)
            self.positions[symbol] = 0
            print(f"[ORDER SELL] {symbol}: 卖出 {shares} 股 @ {price:.2f} 元 | 印花税: {tax:.2f} 元 | 佣金: {comm:.2f} 元 | 剩余现金: {self.cash:,.2f} 元")

if __name__ == "__main__":
    system = MinimalQuantSystem(initial_cash=100000.0, max_single_position=0.30)
    # 模拟某股票历史收盘价时序
    prices = pd.Series([10.0, 10.2, 10.1, 10.5, 10.8, 11.0, 11.2, 11.5, 11.6, 11.8, 12.0])
    
    # 1. 信号计算
    sig = system.alpha_model(prices)
    # 2. 风控头寸决策
    act, target_shares = system.risk_and_position_manager(sig, "000002.SZ", prices.iloc[-1])
    # 3. 撮合成交
    system.execution_engine(act, "000002.SZ", target_shares, prices.iloc[-1])

运行结果输出:

[ORDER BUY]  000002.SZ: 买入 2500 股 @ 12.00 元 | 佣金: 9.00 元 | 剩余现金: 69,991.00 元

本章小结

  1. 工程细节决定量化成败:策略思想只是起点,数据质量、成本测算、滑点控制与执行逻辑才是决定实盘能否复现回测收益的核心。
  2. 模块化分层解耦架构:标准系统应保持数据、Alpha、风控、组合构建与执行五大组件相互独立、清晰对接。
  3. 六大要素缺一不可:在策略上线前,必须逐一明确标的、逻辑、头寸、入场、止损与止盈规则。

📋 行动清单 (Action Checklist)

  • 运行本讲最小系统代码,尝试修改 max_single_position 参数(如调整为 10% 或 50%),观察系统输出的买入股数与现金变动;
  • 扩展该代码:在 execution_engine 中增加滑点模拟(例如买入成交价上浮 0.1%,卖出成交价下浮 0.1%);
  • 检查自己构思中的量化策略,对照”六大必备问答”逐项核验是否已有明确的数学规则。

— 小象教研组

配套学习资源与课件
  • 第1章课件:量化投资的发展和理工生跨界做量化的开启姿势(PDF · 2.5MB)
    下载
  • 开发环境准备:软件安装指导(PDF · 0.9MB · 建议第3章动手实践前先通读)
    下载
  • 量化入门推荐书单(PDF · 318KB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问