📑 查看全课大纲(第 7 / 38 节)
- 1.课程介绍与学习目标
- 2.量化交易的发展
- 3.主观投资与量化投资的关系
- 4.认识一个量化策略(1)
- 5.认识一个量化策略(2)
- 6.理工生做量化的优势
- 7.量化交易系统的基本架构
- 8.必要的交易基础知识及参考资料
- 9.上节课思考题及本节课内容介绍
- 10.技术指标简介
- 11.基于MACD的交易信号开发(1)
- 12.基于MACD的交易信号开发(2)
- 13.基于RSI的交易信号开发
- 14.基于BOLL的交易信号开发
- 15.基于分形的交易信号开发
- 16.总结及下节课预告
- 17.开发环境安装
- 18.获取指数和个股历史行情数据
- 19.修复行情数据中的问题
- 20.抓取财报数据、数据定时更新
- 21.实现低PE股票池(1)
- 22.实现低PE股票池(2)
- 23.实现低PE策略的回测(1)
- 24.实现低PE策略的回测(2)
- 25.风险控制综述
- 26.风险控制中的止盈止损
- 27.仓位管理的工程实现
- 28.完整策略介绍-基础策略
- 29.策略的分步优化
- 30.策略评价指标(1)
- 31.策略评价指标(2)
- 32.如何评价策略
- 33.如何优化策略
- 34.tick数据的意义
- 35.tick数据的介绍及使用
- 36.Hans123策略
- 37.经典买入三法策略
- 38.量化系统的完整研发和系统搭建
量化交易系统的基本架构
约 5 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
量化交易系统的基本架构
小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在许多投资者的初级印象中,量化交易似乎只是由几个数学公式或简单的买卖技术指标拼凑而成。然而,在成熟的量化基金或专业机构中,量化交易是一套高度模块化、多层协同运行的工业级软件与风控系统。
即使两个团队采用相同的趋势跟踪或均值回归思想,最终实盘业绩往往有天壤之别——这其中的差距,正是由系统底层在数据清洗、风控约束、成本测算、组合优化与订单执行等工程细节上的设计所决定的。本讲将深度拆解专业量化交易系统的五大核心支柱模块,并系统梳理一个完整交易系统不可或缺的六大基本要素。
💡 核心导读
- 量化交易系统的五大核心支柱:
- 数据模块(Data Feed / 系统的血液):涵盖高频 Tick、日线 OHLCV、财务数据及另类数据,决定了策略信息的输入质量与时效性;
- Alpha 预测模型(Alpha Model / 策略大脑):趋势跟踪、均值回复、多因子选股模型,负责输出资产收益预期;
- 风险控制模型(Risk Model / 生存命脉):严密把控单标的敞口、行业敞口与波动率上限,确保系统在极端大难中”活着度过危机”;
- 交易成本模型(Transaction Cost Model / 盈利试金石):精确计算印花税、佣金费率、滑点与市场冲击成本,防止”回测盈利、实盘全亏在手续费上”;
- 投资组合构建与执行引擎(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 元本章小结
- 工程细节决定量化成败:策略思想只是起点,数据质量、成本测算、滑点控制与执行逻辑才是决定实盘能否复现回测收益的核心。
- 模块化分层解耦架构:标准系统应保持数据、Alpha、风控、组合构建与执行五大组件相互独立、清晰对接。
- 六大要素缺一不可:在策略上线前,必须逐一明确标的、逻辑、头寸、入场、止损与止盈规则。
📋 行动清单 (Action Checklist)
- 运行本讲最小系统代码,尝试修改
max_single_position参数(如调整为 10% 或 50%),观察系统输出的买入股数与现金变动; - 扩展该代码:在
execution_engine中增加滑点模拟(例如买入成交价上浮 0.1%,卖出成交价下浮 0.1%); - 检查自己构思中的量化策略,对照”六大必备问答”逐项核验是否已有明确的数学规则。
— 小象教研组
配套学习资源与课件
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问