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

Hans123策略

约 16 分钟

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

量化策略的完整研发与工业级系统搭建

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

在完成了策略算法模型与经典实战原型的学习后,量化工程师必须建立对专业级量化交易系统(Production Quant System)全生命周期工程架构的宏观认知。在真实量化对冲基金中,一个策略从最初的数学灵感闪现,到最终在服务器上全自动执行真金白银的下单,需要跨越学术假设、因子特征加工、事件驱动撮合回测、仿真模拟盘(Paper Trading)与实盘极速柜台网关对接等一系列高标准的工程验证环节。

本讲系统介绍经典的 Hans123 日内开盘区间突破策略原型与状态转移机设计;全面梳理工业级量化交易系统的五层标准工程架构(数据层、特征层、策略层、风控层、网关层);并给出从研发到实盘上线的全流程标准化规范。


💡 核心导读

  • 经典日内突破策略原型:Hans123 策略模型
    • 设计初衷:利用开盘阶段(09:30-10:00)机构资金进场形成的能量聚集区间,捕捉日内单边主升浪/主跌浪,尾盘全额平仓绝不隔夜,彻底免疫夜间外盘黑天鹅跳空风险
    • 适用品种(硬性前提):本策略内含「当日开仓当日平仓」与「卖开做空」两个动作,仅适用于 T+0 且可双向交易的品种(商品期货、股指期货、期权、可转债等);A 股股票为 T+1 制度且无卖空机制(融券门槛高、券源稀缺),当日买入无法当日卖出,Hans123 原始形态在 A 股股票上不可直接执行——这也是工业级网关层优先对接 CTP 期货柜台的原因;
    • 交易规则
      1. 通道构建:记录开盘前 30 分钟形成的最高价 High30High_{30} 与最低价 Low30Low_{30}
      2. 突破开仓:30 分钟后,价格向上突破 High30High_{30} 立即买开做多,向下击穿 Low30Low_{30} 立即卖开做空;
      3. 尾盘平仓:每日收盘前 5 分钟(14:55)无条件清空全部持仓。
  • 工业级量化交易系统的五层标准分层架构
    1. 数据基础设施层(Data Infrastructure):全市场 Level 1/Level 2 Tick、分钟/日 K 线、财务报表与宏观舆情数据的持久化存储(NoSQL / ClickHouse / InfluxDB);
    2. 特征与因子计算层(Feature & Factor Layer):高频盘口因子与低频截面因子的实时/离线流式计算,执行 3-Sigma 去极值、标准化与行业中性化;
    3. 策略与信号决策层(Strategy & Signal Layer):动态股票池筛选、择时指标状态机、多策略组合决策;
    4. 风控与资金管理层(Risk & Portfolio Management):账户级总杠杆控制、单标的敞口上限、CPR 百分比风险模型与 ATR 动态跟踪止损;
    5. 执行撮合与交易网关层(Execution & Gateway Layer):CTP 期货极速柜台、券商 C++ API、FIX 协议接口,负责智能算法拆单(TWAP/VWAP)与订单状态机维护。
┌─────────────────────────────────────────────────────────────┐
│                    工业级量化交易系统五层工程架构               │
└──────────────────────────────┬──────────────────────────────┘

 ┌───────────────┬─────────────┼─────────────┬───────────────┐
 ▼               ▼             ▼             ▼               ▼
┌─────────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────────┐
│ 1. 数据层   │ │ 2. 特征层 │ │ 3. 策略层 │ │ 4. 风控层 │ │ 5. 网关层   │
├─────────────┤ ├───────────┤ ├───────────┤ ├───────────┤ ├─────────────┤
│ • Tick/K线  │ │ • 多因子库│ │ • 选股池  │ │ • CPR 头寸│ │ • CTP/FIX   │
│ • 财报/快照 │ │ • 中性化  │ │ • 择时信号│ │ • ATR 止损│ │ • 算法拆单  │
│ • 时序数据库│ │ • 正交化  │ │ • Hans123 │ │ • 敞口限制│ │ • 订单状态机│
└─────────────┘ └───────────┘ └───────────┘ └───────────┘ └─────────────┘

一、从回测到实盘的四阶推进阶梯

① 历史回测 (Backtesting) ──► ② 样本外盲测 (OOS / WFO) ──► ③ 模拟盘仿真 (Paper Trading) ──► ④ 极小实盘真金验证 (Live Trading)
  • 模拟盘仿真(1~3 个月):核验策略在实时行情节拍下的网络延迟、滑点表现、接口断线重连与涨跌停撮合逻辑;
  • 极小实盘验证:先用数万元资金小步慢跑,观察真实盘口冲击与心理压力,逐步加码。

二、Hans123 策略状态机设计

在日内策略实现中,必须维护一个清晰的有限状态机(FSM):

  • STATUS_WAIT(09:30 前等待开盘);
  • STATUS_BUILDING_CHANNEL(09:30-10:00 收集极值,禁止交易);
  • STATUS_MONITORING(10:00-14:55 监控突破开仓);
  • STATUS_EOD_CLOSE(14:55 触发强平并锁定空仓)。

⚠️ 品种适配红线:上述状态机默认标的支持 T+0 双向交易(期货/期权/可转债)。若强行套用到 A 股股票,「当日买入 \to 14:55 强平」在 T+1 制度下根本无法成交,「跌破下轨开空」亦无对应机制;迁移到 A 股必须改造为「隔日突破跟踪」或借助底仓做 T 的变体。


📝 动手练一练

下面我们用 Python 编写一段 Hans123 日内开盘区间突破策略模拟引擎,输入 1 分钟价格序列,自动提取前 30 分钟上下轨并模拟盘中突破建仓与尾盘平仓的全流程:

import pandas as pd
import numpy as np

def run_hans123_breakout(minute_prices):
    """
    Hans123 日内区间突破策略引擎:
    1. 统计开盘前 30 根 1 分钟 Bar 的最高价 High_30 与 最低价 Low_30 构成通道
    2. 30 分钟后: 突破 High_30 开多 (Buy), 跌破 Low_30 开空 (Short)
    3. 尾盘 (最后 1 根 Bar) 无条件平仓 (Close)
    """
    df = minute_prices.copy()
    
    # 提取前 30 分钟通道
    channel_high = df['high'].iloc[:30].max()
    channel_low = df['low'].iloc[:30].min()
    
    position = 0  # 1 为多头, -1 为空头, 0 为空仓
    trade_logs = []
    
    for idx, (dt, row) in enumerate(df.iterrows()):
        action = "WAIT"
        if idx < 30:
            action = "BUILDING_CHANNEL"
        elif idx == len(df) - 1:
            if position != 0:
                action = "EOD_CLOSE_ALL (尾盘平仓)"
                position = 0
        else:
            if position == 0:
                if row['close'] > channel_high:
                    action = "BUY_LONG (突破上轨开多)"
                    position = 1
                elif row['close'] < channel_low:
                    action = "SELL_SHORT (跌破下轨开空)"
                    position = -1
                    
        trade_logs.append({
            'Time': dt.strftime('%H:%M'),
            'Price': row['close'],
            'Channel_High': channel_high,
            'Channel_Low': channel_low,
            'Position': position,
            'Action': action
        })
        
    return pd.DataFrame(trade_logs), channel_high, channel_low

def test_hans123_run():
    # 模拟 09:30 到 10:45 共 75 根 1 分钟 Bar
    dates = pd.date_range("2023-05-10 09:30", periods=75, freq="1min")
    np.random.seed(42)
    
    # 前 30 分钟在 10.0~10.5 震荡, 随后在 10:05 突破 10.5 冲至 11.2
    p_base = np.concatenate([
        np.random.uniform(10.0, 10.5, 30),
        np.linspace(10.4, 11.2, 30),
        np.linspace(11.2, 11.0, 15)
    ])
    
    df = pd.DataFrame({
        'open': p_base - 0.02,
        'high': p_base + 0.05,
        'low':  p_base - 0.05,
        'close': p_base
    }, index=dates)
    
    res, c_high, c_low = run_hans123_breakout(df)
    
    print("================ Hans123 日内开盘区间突破策略 ================")
    print(f"前 30 分钟形态通道: 上轨 High={c_high:.2f} 元 | 下轨 Low={c_low:.2f} 元")
    actions = res[res['Action'].str.contains('BUY|SELL|CLOSE')]
    print("------------------------------------------------------------")
    print(actions[['Time', 'Price', 'Channel_High', 'Channel_Low', 'Position', 'Action']])
    print("------------------------------------------------------------")
    print("量化精髓: Hans123 规避隔夜跳空风险,专注日内形态通道突破爆发波段!")
    print("============================================================")

if __name__ == "__main__":
    test_hans123_run()

运行结果输出:

================ Hans123 日内开盘区间突破策略 ================
前 30 分钟形态通道: 上轨 High=10.53 元 | 下轨 Low=9.96 元
------------------------------------------------------------
     Time      Price  Channel_High  Channel_Low  Position                Action
35  10:05  10.537931     10.534955     9.960292         1     BUY_LONG (突破上轨开多)
74  10:44  11.000000     10.534955     9.960292         0  EOD_CLOSE_ALL (尾盘平仓)
------------------------------------------------------------
量化精髓: Hans123 规避隔夜跳空风险,专注日内形态通道突破爆发波段!
============================================================

本章小结

  1. 掌握 Hans123 日内突破精髓:以开盘 30 分钟极值为上下轨,突破顺势开仓,尾盘无条件平仓规避隔夜黑天鹅;牢记其仅适用于期货等 T+0 双向品种,A 股股票 T+1 制度下不可直接执行。
  2. 构建五层工业级架构:打通数据层、特征层、策略层、风控层与柜台执行层的标准化工程解耦。
  3. 坚持四阶上线原则:从历史回测、样本外盲测、模拟盘仿真到小资金实盘,步步为营杜绝盲目冒险。

📋 行动清单 (Action Checklist)

  • 运行本讲 Hans123 模拟代码,观察 10:05 突破上轨与 10:44 尾盘平仓的完整执行轨迹;
  • 绘制并检查自己交易系统的五层架构设计图,确认各层接口边界清晰;
  • 预习下一讲,深入探讨人工智能与机器学习在现代量化策略优化中的角色与边界。

— 小象教研组

配套学习资源与课件
  • 第6章课件:进入专业量化赛道的必修课(PDF · 4.3MB)
    下载
  • 开发环境准备:软件安装指导(PDF · 0.9MB · 建议第3章动手实践前先通读)
    下载
  • 量化入门推荐书单(PDF · 318KB)
    下载
🎁 免费学习资源

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

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

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