Files
my_wiki/raw/量化/abuquant/abuquant-策略开发与回测实践摘编.md
T

6.2 KiB
Raw 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 1-9、12、15-19)中的开发模式与可执行流程,供阅读源码或复现示例时参考。框架版本 0.4.0,所有 API 名称以源码为准。

1. 择时策略开发模式(notebook 1)

择时策略决定"什么时候买/卖"。核心三步:

  1. 编写买入择时因子:继承 AbuFactorBuyBase 并混入方向类(BuyCallMixin/BuyPutMixin),实现 fit_day(today, orders) 生成买入订单(self.buy_tomorrow(order))。
  2. 分解模式逐步回测:先只用买入因子,观察买入点;再叠加卖出因子。
  3. 实现卖出因子:继承 AbuFactorSellBasefit_day 中调用 self.sell_tomorrow(order)

关键概念:

  • kl_pd:择时时段行情;combine_kl_pd:合并前一年行情(供特征构建)。
  • 因子通过 _init_self(**kwargs) 读取自定义参数。
  • buy_tomorrow/sell_tomorrow:次日成交,避免未来函数。

2. 择时策略优化(notebook 2

三类卖出因子组合:

类型 代表因子 作用
基本止盈止损 AbuFactorAtrNStopn 倍 ATR 止盈止损) 保护利润、控制风险
风险控制止损 AbuFactorPreAtrNStop(单日最大跌幅 n 倍 ATR 止损) 单边风险控制
利润保护止盈 AbuFactorCloseAtrNStop(利润回撤止盈) 只做单边止盈

ATRAverage True Range,平均真实波动范围)定义:TR = max(|最高-最低|, |最高-昨收|, |昨收-最低|),ATR 即 TR 的均值,衡量波动强度。

3. 滑点与手续费(notebook 3

  • 滑点:AbuSlippageBuyMean/AbuSlippageSellMean 默认均价买入/卖出(当日均价),优点简单高效,交易数量足够多时接近实盘;基类注释明确:不考虑大资金冲击成本,实盘迁移需日内分钟 K 线择时。
  • 手续费:AbuCommission 计算每笔手续费(示例含 TSLA 按金额比例与固定费用两种形式),order.commission 记录。

4. 多股票回测与仓位管理(notebook 4)

  • 多支股票可用同一因子组合统一回测,也可按股票分别指定不同因子。
  • 仓位管理:默认 AbuAtrPositionATR 仓位),示例还有 AbuKellyPositionKelly 仓位)、AbuPtPosition(价格位置仓位);通过 AbuPositionBase 全局默认类或 kwargs 指定。
  • 并行:AbuPickTimeMaster 调度,多进程执行提升效率(Windows 注意 ABuParallel 的 ProcessPoolExecutor 实现)。

5. 选股策略开发(notebook 5

  • 选股因子继承 AbuPickStockBase,实现 fit_first_choice(首选)等方法;示例:价格选股(AbuPickStockPriceMinMax)、拟合角度选股(AbuPickRegressAngMinMax)、相似度选股(AbuPickSimilarNTop)、位移路程比选股(AbuPickStockShiftDistance)。
  • 多个选股因子可并行执行;选股在择时周期内每月/每周动态重新执行。
  • 选股 WorkerAbuPickStockWorker)在择时序列之前的窗口迭代初始交易对象进行因子拟合。

6. 回测结果度量(notebook 6

  • AbuMetricsBase 提供基本度量(收益、回撤、胜率、盈亏比等),支持可视化。
  • 可继承扩展自定义度量类(_read_custom_metrics 等钩子)。
  • 期货市场使用 AbuMetricsFutures(含持仓/保证金维度)。
  • 度量结果可保存/读取(ABuStorenotebook 15 用 load_abu_result_tuple 读取训练集结果)。

7. 参数寻优与评分(notebook 7

  • AbuGridSearch:对买入/卖出/选股因子在参数取值范围内 Grid Search。
  • AbuScoreTuple/AbuBaseScorer:对度量结果评分,支持不同权重、自定义评分类。
  • 示例问题:"应该考虑多少天的均线?"——通过网格搜索+评分确定。
  • AbuCrossVal:交叉验证避免过拟合。

8. 机器学习集成(notebook 12

  • 特征提取:从行情构建特征(AbuMLFeature 内置特征定义,支持用户扩展)。
  • AbuML 中间层持有 x/y/dfAbuMLCreater 封装常用学习器初始化(sklearn 系)。
  • 测试集验证与非均衡技术(imbalance 处理)。
  • 继承 AbuMLPd 对数据处理做业务封装。
  • 应用场景:UMP 裁判训练(失败交易特征分类)、策略有效性验证(notebook 32)。

9. 数据源接入(notebook 19

  • 数据模式切换:沙盒/实盘数据模式。
  • 数据存储切换:本地文件存储后端。
  • 数据源切换:内置沙盒(ABuDataFeed)↔ 外部数据源。
  • 全市场数据更新:ABuDataCache merge 策略。
  • 外部数据源接入示例:股票、期货、比特币/莱特币(CrawlBu 提供雪球等爬虫采集)。

10. 开发注意事项(源码注释级)

  • 所有数据访问统一走 ABuSymbolPd 对外接口。
  • 卖出因子若用于期货需 support_direction() 声明支持 put 方向,fit_day 中按 order.expect_direction 正负号区分 call/put 处理(如 ATR 止损:call 方向"暴跌卖出"put 方向"暴涨卖出")。
  • 买入因子方向唯一:一个因子不能同时看涨又看跌。
  • 因子内部可绑定专属卖出因子与选股因子(局部生效)。
  • lock_factor:选股因子可封锁本源买入因子执行。

11. 证据边界

  • 本文基于 notebook markdown 文本与源码 docstring 提炼,API 细节以源码为准;未执行任何回测复现。
  • 教学 notebook 中的具体收益率数字(如沙盒示例收益)未收录——沙盒数据量小,结果不具代表性,且代码依赖旧版数据文件。