6.2 KiB
6.2 KiB
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 |
|
|
阿布量化(ABuQuant)策略开发与回测实践摘编
本摘编提炼阿布量化教学文档(abupy_lecture notebook 1-9、12、15-19)中的开发模式与可执行流程,供阅读源码或复现示例时参考。框架版本 0.4.0,所有 API 名称以源码为准。
1. 择时策略开发模式(notebook 1)
择时策略决定"什么时候买/卖"。核心三步:
- 编写买入择时因子:继承
AbuFactorBuyBase并混入方向类(BuyCallMixin/BuyPutMixin),实现fit_day(today, orders)生成买入订单(self.buy_tomorrow(order))。 - 分解模式逐步回测:先只用买入因子,观察买入点;再叠加卖出因子。
- 实现卖出因子:继承
AbuFactorSellBase,fit_day中调用self.sell_tomorrow(order)。
关键概念:
kl_pd:择时时段行情;combine_kl_pd:合并前一年行情(供特征构建)。- 因子通过
_init_self(**kwargs)读取自定义参数。 buy_tomorrow/sell_tomorrow:次日成交,避免未来函数。
2. 择时策略优化(notebook 2)
三类卖出因子组合:
| 类型 | 代表因子 | 作用 |
|---|---|---|
| 基本止盈止损 | AbuFactorAtrNStop(n 倍 ATR 止盈止损) |
保护利润、控制风险 |
| 风险控制止损 | AbuFactorPreAtrNStop(单日最大跌幅 n 倍 ATR 止损) |
单边风险控制 |
| 利润保护止盈 | AbuFactorCloseAtrNStop(利润回撤止盈) |
只做单边止盈 |
ATR(Average True Range,平均真实波动范围)定义:TR = max(|最高-最低|, |最高-昨收|, |昨收-最低|),ATR 即 TR 的均值,衡量波动强度。
3. 滑点与手续费(notebook 3)
- 滑点:
AbuSlippageBuyMean/AbuSlippageSellMean默认均价买入/卖出(当日均价),优点简单高效,交易数量足够多时接近实盘;基类注释明确:不考虑大资金冲击成本,实盘迁移需日内分钟 K 线择时。 - 手续费:
AbuCommission计算每笔手续费(示例含 TSLA 按金额比例与固定费用两种形式),order.commission记录。
4. 多股票回测与仓位管理(notebook 4)
- 多支股票可用同一因子组合统一回测,也可按股票分别指定不同因子。
- 仓位管理:默认
AbuAtrPosition(ATR 仓位),示例还有AbuKellyPosition(Kelly 仓位)、AbuPtPosition(价格位置仓位);通过AbuPositionBase全局默认类或 kwargs 指定。 - 并行:
AbuPickTimeMaster调度,多进程执行提升效率(Windows 注意 ABuParallel 的 ProcessPoolExecutor 实现)。
5. 选股策略开发(notebook 5)
- 选股因子继承
AbuPickStockBase,实现fit_first_choice(首选)等方法;示例:价格选股(AbuPickStockPriceMinMax)、拟合角度选股(AbuPickRegressAngMinMax)、相似度选股(AbuPickSimilarNTop)、位移路程比选股(AbuPickStockShiftDistance)。 - 多个选股因子可并行执行;选股在择时周期内每月/每周动态重新执行。
- 选股 Worker(
AbuPickStockWorker)在择时序列之前的窗口迭代初始交易对象进行因子拟合。
6. 回测结果度量(notebook 6)
AbuMetricsBase提供基本度量(收益、回撤、胜率、盈亏比等),支持可视化。- 可继承扩展自定义度量类(
_read_custom_metrics等钩子)。 - 期货市场使用
AbuMetricsFutures(含持仓/保证金维度)。 - 度量结果可保存/读取(
ABuStore,notebook 15 用load_abu_result_tuple读取训练集结果)。
7. 参数寻优与评分(notebook 7)
AbuGridSearch:对买入/卖出/选股因子在参数取值范围内 Grid Search。AbuScoreTuple/AbuBaseScorer:对度量结果评分,支持不同权重、自定义评分类。- 示例问题:"应该考虑多少天的均线?"——通过网格搜索+评分确定。
AbuCrossVal:交叉验证避免过拟合。
8. 机器学习集成(notebook 12)
- 特征提取:从行情构建特征(
AbuMLFeature内置特征定义,支持用户扩展)。 AbuML中间层持有 x/y/df,AbuMLCreater封装常用学习器初始化(sklearn 系)。- 测试集验证与非均衡技术(imbalance 处理)。
- 继承
AbuMLPd对数据处理做业务封装。 - 应用场景:UMP 裁判训练(失败交易特征分类)、策略有效性验证(notebook 32)。
9. 数据源接入(notebook 19)
- 数据模式切换:沙盒/实盘数据模式。
- 数据存储切换:本地文件存储后端。
- 数据源切换:内置沙盒(ABuDataFeed)↔ 外部数据源。
- 全市场数据更新:
ABuDataCachemerge 策略。 - 外部数据源接入示例:股票、期货、比特币/莱特币(CrawlBu 提供雪球等爬虫采集)。
10. 开发注意事项(源码注释级)
- 所有数据访问统一走
ABuSymbolPd对外接口。 - 卖出因子若用于期货需
support_direction()声明支持 put 方向,fit_day中按order.expect_direction正负号区分 call/put 处理(如 ATR 止损:call 方向"暴跌卖出",put 方向"暴涨卖出")。 - 买入因子方向唯一:一个因子不能同时看涨又看跌。
- 因子内部可绑定专属卖出因子与选股因子(局部生效)。
lock_factor:选股因子可封锁本源买入因子执行。
11. 证据边界
- 本文基于 notebook markdown 文本与源码 docstring 提炼,API 细节以源码为准;未执行任何回测复现。
- 教学 notebook 中的具体收益率数字(如沙盒示例收益)未收录——沙盒数据量小,结果不具代表性,且代码依赖旧版数据文件。