Files
my_wiki/raw/量化/abuquant/abuquant-期货回测与位移路程比摘编.md

6.7 KiB
Raw Permalink Blame History

title, source, source_commit, source_version, license, last_updated, type, tags, raw_sources
title source source_commit source_version license last_updated type tags raw_sources
阿布量化(ABuQuant)期货回测与位移路程比摘编 https://github.com/bbfamily/abu d602d847677e4c2b77b0a122df30816ea68b5710 (2026-01-24) 0.4.0 GPL 2026-08-07 source-derivative
量化
期货
回测
位移路程比
path hash
raw/量化/abuquant/_meta/源码哈希清单.tsv sha256:e07923e8607d1ce333d692f6acc8db3b5f68f1c9e9679d5629705e359e2f0e1f
path hash
raw/量化/abuquant/abuquant-框架架构摘编.md sha256:1d40144383bd5f8e0f5d6049da545abb2933a83328693dc2d7852af9e70291d6

阿布量化(ABuQuant)期货回测与位移路程比摘编

本摘编聚焦阿布量化对期货市场的处理方法(abupy_lecture notebook 11、25),核心知识点:期货合约数据特点、保证金/强平机制、看涨看跌双向策略、位移路程比选股优化、内外盘低频统计套利。框架版本 0.4.0。

1. 期货市场的特点(notebook 11

1.1 合约与连续数据

  • 量化需要连续数据,abu 请求的是连续合约 symbol(如 JD0 鸡蛋、JM0 焦煤、I0 铁矿石、RB0 螺纹钢、FG0 玻璃、TA0 PTA),而非具体合约(如 JD1709 是 17 年 9 月鸡蛋合约)。
  • 内置沙盒期货品种(46 个):V0 PVC、P0 棕榈、M0 豆粕、I0 铁矿石、JD0 鸡蛋、L0 塑料、PP0 PP、FB0 纤维板、BB0 胶合板、Y0 豆油、C0 玉米、A0 豆一、B0 豆二、J0 焦炭、JM0 焦煤、CS0 玉米淀粉、TA0 PTA、OI0 菜油、RS0 菜籽、RM0 菜粕、ZC0 动力煤、WH0 强麦、JR0 粳稻、SR0 白糖、CF0 棉花、RI0 早籼稻、MA0 郑醇、FG0 玻璃、LR0 晚籼稻、SF0 硅铁、SM0 锰硅、FU0 燃油、AL0 沪铝、RU0 橡胶、ZN0 沪锌、CU0 沪铜、AU0 黄金、RB0 螺纹钢、WR0 线材、PB0 沪铅、AG0 白银、BU0 沥青、HC0 热轧卷板、SN0 沪锡、NI0 沪镍。

1.2 合约要素(AbuFuturesCn

字段 含义 示例
min_uni 每手数量(一手多少吨/张) 鸡蛋 5 吨/手、胶合板 500 张/手
commission 每手手续费 各品种不同
min_deposit 最低保证金比例 0.08 = 8%

1.3 保证金与强平(教学示例,2017-07 鸡蛋)

  • 鸡蛋 2017-07-19 收盘 4014 元/吨,min_unit=5 吨/手;买 20 手=100 吨,价值约 40 万,保证金 8% 约 3 万+。
  • 杠杆本质:资金放大交易规模,收益与风险同步放大。
  • 次日(07-20)收盘 3972,亏损 = 100 吨 × (40143972) = 4200 元;若账户资金不足以覆盖新保证金(3972×100×8%≈31776),会被强行平仓——实际中期货公司会在资金不足时先要求追加保证金。
  • 看跌合约理解:向交易所"借入"商品卖出,期望价格下跌后低价买回归还,赚取差价;初始保证金与看涨一致。
  • 交割限制:个人投机账户无资格实物交割(只有有资格的企业账户可选"保值"账户类型),个人若持有到交割日,交易所会强行平仓。

2. 看涨/看跌合约的回测

  • 市场目标切换:g_market_target = E_MARKET_TARGET_FUTURES_CN
  • 看涨(call:向上突破买入因子(如 AbuFactorBuyBreak42/60 天突破改 21/42 天——期货有交割周期且季节性强,周期选择应适配品种特性;比特币示例用重采样确定 10 天上下周期)。
  • 看跌(put:向下突破买入因子 AbuFactorBuyPutBreak(混入 BuyPutMixinexpect_direction=-1buy_type_str="put")。
  • 卖出因子需 support_direction() 声明支持两个方向,fit_day 中按 order.expect_direction 处理:
    • call 买入因子(expect_direction=+1):今天相对昨天暴跌 → 止损卖出;
    • put 买入因子(expect_direction=-1):今天相对昨天暴涨 → 止损卖出。
    • 示例 AbuFactorPreAtrNStop(today.pre_close - today.close) * order.expect_direction > today.atr21 * pre_atr_n 触发止损。
  • abu 内置卖出因子基本都实现 call+put 双向;只做股票等单向市场的用户可不考虑 put。

3. 位移路程比(shift/distance)选股优化

3.1 定义

位移路程比 sd = shift / distance

  • shift(位移):起终点直线距离(价格净变化);
  • distance(路程):路径实际走过的总距离(斜边,价格波动累计);
  • 计算实现 ABuTLExecute.shift_distance,返回 (h_distance 底边, v_distance 垂直, distance 斜边/路程, shift 位移, sd 位移路程比);使用缩放后 y 值保证适应性。
  • 可视化 AbuTLine.show_shift_distance(how=EShiftDistanceHow.shift_distance_close, step_x)how 可自定义终点取值(close=序列最后元素;maxmin=趋势方向极限值;sum_maxmin=结合 sum 与极限值)。

3.2 选股逻辑(期货趋势策略适用性)

期货突破策略(21/42 天)期望标的:有趋势且能保持趋势一段时间,不希望:

  • 反复震荡、趋势快速回复(位移路程比大,如 FB0 纤维板:短涨即反弹,多次出现 >2.0 的 sd 段)→ 应过滤;
  • 太平稳无趋势(位移路程比小、无 >2.0 段,如 Y0 豆油)→ 不适合突破策略。

而 V0(PVC)位移路程比基本在 2 以下但有 >2 阶段,符合"不管涨跌都能惯性保持趋势"的理想品种。

3.3 实现

  • 选股因子 AbuPickStockShiftDistancePickStockBu),通过 show_shift_distance 计算选股周期内的 sd 并筛选。
  • 优化效果:38 个期货品种先全品种回测(收益一般),用位移路程比选股后缩小品种池,提升策略适配性。

4. 期货市场内外盘低频统计套利(notebook 25)

  • 主题为内外盘期货低频统计套利示例(同一/相关品种在不同市场间的价格关系),属于教学示例,具体策略细节需阅读 notebook 原文;沙盒数据量小,仅演示方法流程。

5. 期货量化的通用要点(由 abu 教学引申)

  • 品种周期选择:因交割周期与季节性,均线/突破参数需按品种适配(比特币示例用 ABuKLUtil.resample_close_mean 重采样确定周期)。
  • 双向策略:期货天然多空双向,因子体系需支持 put 方向。
  • 杠杆与风控:保证金制度下止损因子(ATR 止损)尤为关键。
  • 品种筛选优先于参数优化:先通过位移路程比等趋势持续性指标选出适配品种,再优化参数。

6. 证据边界

  • 本摘编来自 notebook 11/25 的 markdown 文本与源码 docstring 提炼;教学示例价格/收益数字仅用于说明机制,不代表任何历史真实回测结论。
  • 沙盒数据(2017 年前后内置数据)仅供学习,实盘需接入外部数据源并重新核验合约参数(保证金比例、手续费等随交易所规则变化)。