13 KiB
13 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)框架架构摘编
本文是对 GitHub 仓库 bbfamily/abu(阿布量化,ABuQuant)的架构知识摘编。源码本体 73MB 不整包入库,仅保留本摘编与源码哈希清单(
_meta/源码哈希清单.tsv,381 个文件)。原始源码本地存放于raw/量化/abuquant-src/(已被 .gitignore 排除),可通过上方 commit 与 GitHub 重新获取验证。本项目 GPL 许可,教学文档版权归作者"阿布"(微信号 abu_quant)所有。
1. 项目定位
阿布量化是一个开源的 Python 量化交易系统,目标:分离基础策略与策略优化监督模块,提高灵活度和适配性。支持市场:美股、A股、港股、期货、期权、比特币、莱特币。版本 0.4.0,作者阿布,配套教材《量化交易之路》(示例代码在仓库 ipython/、python/ 目录)与《机器学习之路》(独立仓库 maxmon/abu_ml)。
架构哲学(README 中"道生一、一生二、二生三、三生万物"系列):以因子为最小单位(一),因子组合成策略(二),策略接入回测与决策体系(三),全市场多策略并行演化(万物)。
2. 顶层目录结构
| 目录 | 内容 |
|---|---|
abupy/ |
框架源码(21 个 Bu 模块 + 内置依赖) |
abupy_lecture/ |
官方使用文档:33 个 Jupyter notebook 教学 |
abupy_ui/ |
非编程界面操作(notebook 形式的 UI 演示) |
ipython/、python/ |
《量化交易之路》书示例代码 |
界面操作视频教程/、img/ |
视频与图片素材 |
gen/ |
生成的临时数据(stock_day_change.npy) |
3. 源码模块分层(abupy/)
框架按领域拆分为 21 个 Bu 模块,abupy/__init__.py 全部导入后对外统一命名空间:
| 模块 | 职责 |
|---|---|
CoreBu |
核心基础设施:环境(ABuEnv)、基准(ABuBenchmark)、并行(ABuParallel,Windows 用 ProcessPoolExecutor 规避 joblib 长时间任务系统弹窗)、pandas 兼容层(ABuPdHelper)、存储(ABuStore)、废弃警告(ABuDeprecated) |
MarketBu |
市场与数据:数据缓存(ABuDataCache)、数据源示例(ABuDataFeed,内置沙盒仅供学习)、解析(ABuDataParser)、股票/期货 symbol 模块、行业分类、市场切割与选股操作、可视化 |
FactorBuyBu |
买入择时因子:基类 AbuFactorBuyBase、示例因子(突破、双均线、趋势、日胜率等) |
FactorSellBu |
卖出择时因子:基类 AbuFactorSellBase、示例因子(ATR 止盈止损、N 日卖出、突破卖出、双均线) |
PickStockBu |
选股因子:基类 AbuPickStockBase、示例因子(价格、角度、相似度、位移路程比等) |
AlphaBu |
调度层:选股/择时的 Master-Worker 并行调度(ABuPickStockMaster/Worker、ABuPickTimeMaster/Worker),整合金融时间序列、因子与资金类 |
BetaBu |
仓位管理示例:ATR 仓位(AbuAtrPosition)、Kelly 仓位(AbuKellyPosition)、价格位置仓位(AbuPtPosition) |
TradeBu |
交易层:订单(AbuOrder)、资金(AbuCapital)、基准(AbuBenchmark)、机器学习特征定义(ABuMLFeature) |
SlippageBu |
滑点:买入/卖出滑点基类与均价滑点示例(默认 AbuSlippageBuyMean/SellMean) |
UmpBu |
裁判决策(UMP, Umpire):主裁(Main)与边裁(Edge)共 17 个文件,含基类与角度/价格/波动/跳空/多混等示例 |
MetricsBu |
回测度量:AbuMetricsBase、期货度量(AbuMetricsFutures)、GridSearch 参数寻优 |
TLineBu |
技术线:AbuTLine(拟合、位移路程比、通道、骨架、支撑阻力)、黄金分割、波浪、VWAP、相似度 |
IndicatorBu |
技术指标:ATR、BOLL、MA、MACD、RSI 等 |
MLBu |
机器学习:AbuML 中间层、学习器封装(ABuMLCreater)、GridSearch、MLPd 业务封装 |
DLBu |
深度学习工具:caffe 图片标准化与训练集切割 |
SimilarBu |
相关性与相似度:相关系数计算与可视化 |
CrawlBu |
爬虫数据源(雪球常量等) |
CheckBu |
检查与预处理:函数对象/参数/返回值检查 |
UtilBu |
工具:懒加载(LazyFunc)、委托、正则、文件等 |
WidgetBu |
UI 组件(24 个文件,供 abupy_ui 使用) |
ExtBu、joblib/、empyrical/、futures/ |
内置第三方依赖(six、joblib 等),锁版本避免兼容问题 |
4. 核心类层次与数据流
4.1 因子体系(策略的最小单位)
AbuFactorBuyBase(FactorBuyBu):买入择时因子基类,必须混入且只能混入一个方向类——BuyCallMixin(看涨,expect_direction=1.0,buy_type_str="call")或BuyPutMixin(看跌,expect_direction=-1.0,buy_type_str="put",用于期货/期权反向策略)。买入因子内部可容纳专属卖出因子与选股因子。AbuFactorSellBase(FactorSellBu):卖出择时因子基类,通过support_direction()声明支持的买卖方向(如 ATR 止损因子支持 call+put 两个方向),fit_day()中按order.expect_direction区分处理。AbuPickStockBase(PickStockBu):选股因子基类,在择时周期内每月/每周动态重新选股。- 因子统一继承
AbuParamBase,支持 kwargs 参数化。
4.2 回测数据流
数据(MarketBu: ABuSymbolPd) → 基准(TradeBu: AbuBenchmark,确定时间范围/对齐/市场限制)
→ 资金(TradeBu: AbuCapital) → 择时 Worker(AlphaBu: AbuPickTimeWorker)
└─ 每日驱动 fit_day:买入因子(AbuFactorBuyBase) 生成订单(AbuOrder)
→ 卖出因子(AbuFactorSellBase) 止盈止损
→ UMP(AbuUmpManager) 主裁/边裁拦截决策
→ 滑点(SlippageBu) 决定成交价
→ 仓位管理(BetaBu: AbuPositionBase) 决定买入数量
→ 订单结果 → 度量(MetricsBu: AbuMetricsBase) → 结果存储/可视化
- 金融时间序列
kl_pd为择时时段,combine_kl_pd合并之前一年数据(用于机器学习特征构建)。 - 基准
AbuBenchmark的作用:交易时间范围确定、时间序列对齐、抛弃异常序列、市场范围限制、与策略度量结果对比。
4.3 UMP 裁判决策体系(UmpBu)
UMP(Umpire,裁判)是阿布量化的特色:用机器学习训练"裁判"拦截策略生成的失败交易。
- 主裁(Main):对买入信号整体裁决,示例含角度(Deg)、价格(Price)、波动(Wave)、跳空(Jump)、多混(Mul)等,基类
AbuUmpMainBase。 - 边裁(Edge):对交易特征做专项裁决(角度、价格、波动、多混、全混),基类
AbuUmpEdgeBase。 AbuUmpManager:买入/卖出因子与 UMP 的组织管理通信模块;外部用户可用append_user_ump()添加自定义裁判(需先训练并生成 cache 文件),开关g_enable_user_ump。- 训练流程(notebook 15-18):切分训练集回测 → 提取失败交易特征 → GMM 分类 + 最优分类簇筛选(
ump_main_clf_dump()一行完成)→ 本地保存分类器 → 测试集开启拦截对比。特征如:买入当天价格在特征周期内的 rank(price_rank60)、跳空间隔与能量、波动率 wave_score 等。 - 主裁拦截的价值:拦截大量低质量交易,节省佣金、降低交易数量本身即优化;效果提升方向——更多裁判/更多特征、复杂综合裁决、按统计权重加权。
4.4 度量与优化(MetricsBu)
AbuMetricsBase度量回测结果(收益、回撤、胜率等),期货有专门AbuMetricsFutures、AbuMetricsTC。AbuGridSearch借鉴 sklearn GridSearch,对买入/卖出/选股因子做最优参数寻优;AbuCrossVal交叉验证。- 技术线
AbuTLine提供show_best_poly(最优拟合次数)、show_shift_distance(位移路程比)、show_regress_trend_channel(拟合通道)、show_skeleton_channel(骨架通道)、show_percents(黄金分割/比例分割)等分析手段,可用于策略参数选择(如港股优化示例)。
4.5 数据源(MarketBu)
- 内置沙盒数据(
ABuDataFeed)仅供学习与基本测试,覆盖美股/A股/港股/比特币/莱特币/期货连续合约。 ABuDataCache实现采集存储、读取与 merge 更新策略。- 外部数据源可接入:股票、期货、数字货币;数据模式/存储/数据源均可切换(notebook 19)。
- 数据对外统一接口
ABuSymbolPd,其它模块只应通过它取数。
5. 期货支持要点
- 期货连续合约 symbol 如
JM0(焦煤)、J0(焦炭)、I0(铁矿石)等,请求的是连续数据而非具体合约(如 JD1709)。 AbuFuturesCn记录每品种:min_uni(每手数量,如鸡蛋 5 吨/手、胶合板 500 张/手)、commission(每手手续费)、min_deposit(最低保证金比例)。- 期货因子通过混入
BuyPutMixin支持看跌方向(向下突破作为买入信号的 put 策略)。 - 详见摘编《阿布量化:期货回测与位移路程比》(同目录)。
6. 使用限制与注意事项
- 版本 0.4.0 较旧(2018 年后主要更新集中在文档与 UI),依赖 Python 2/3 兼容层(six、funcsigs),新环境部署需处理依赖兼容(
CoreBu/ABuFixes.py负责统一不同依赖库版本)。 - Windows 并行:长时间多任务用
ProcessPoolExecutor(joblib 在 Windows 上 10 小时以上任务可能触发系统弹窗错误)。 - 内置数据仅供学习,实盘需自购数据源。
- 缠论、波浪、谐波、K线形态、均线信号等"量化 2.0"功能在 README 中作为网站 abuquant.com 的 AI 分析能力宣传,仓库源码中形态识别实现以 TLineBu/IndicatorBu/WidgetBu 为基础,未在仓库内提供完整形态库代码;相关宣传内容属项目介绍,未在本摘编中作为可复现能力收录。
7. 教学资源索引(abupy_lecture,33 个 notebook)
| 编号 | 主题 |
|---|---|
| 0 | 量化环境部署 |
| 1 | 择时策略的开发(买入/卖出择时因子、分解模式回测) |
| 2 | 择时策略的优化(基本止盈止损、风险控制止损、利润保护止盈) |
| 3 | 滑点策略与交易手续费 |
| 4 | 多支股票择时回测与仓位管理(多因子、自定义仓位、并行) |
| 5 | 选股策略的开发(选股因子、并行执行) |
| 6 | 回测结果的度量(基本用法、可视化、自定义度量类) |
| 7 | 寻找策略最优参数和评分(参数范围、Grid Search、评分、自定义评分类) |
| 8 | A股市场的回测(涨跌停特殊处理、多组交易分析) |
| 9 | 港股市场的回测(策略类装饰器封装优化) |
| 10 | 比特币、莱特币的回测(走势分析、可视化、回测) |
| 11 | 期货市场的回测(期货特点、看涨/看跌合约、位移路程比优化) |
| 12 | 机器学习与比特币示例(特征提取、内置 ML 模块、测试集验证、非均衡技术) |
| 13 | 量化技术分析应用(阻力支撑自动绘制、跳空分析、传统指标) |
| 14 | 量化相关性分析应用(相关相似度、距离度量、自然相关性) |
| 15 | 量化交易和搜索引擎(切分训练集、主裁系统原理、角度主裁、最优分类簇筛选) |
| 16 | UMP 主裁交易决策(跳空/价格/波动主裁训练、开启拦截模式) |
| 17 | UMP 边裁交易决策 |
| 18 | 自定义裁判决策交易(append_user_ump) |
| 19 | 数据源(数据模式/存储/数据源切换、全市场更新、接入外部数据源) |
| 20 | A股全市场回测 |
| 21 | A股 UMP 决策 |
| 22 | 美股全市场回测 |
| 23 | 美股 UMP 决策 |
| 24 | 比特币 vs 黄金、莱特币 vs 白银 |
| 25 | 期货市场内外盘低频统计套利 |
| 26 | "星期几是这个股票的好日子"(星期效应分析) |
| 27 | 狗股选股策略与择时策略的配合 |
| 28 | 真·动态自适应双均线策略 |
| 29 | 多因子策略并行执行配合 |
| 30 | 趋势跟踪与均值回复的长短线搭配 |
| 31 | 资金仓位管理与买入策略的搭配 |
| 32 | 策略有效性的验证 |
《量化交易之路》ipython 示例:第二章 Python、第三章 NumPy、第四章 pandas、第五章 可视化、第六章 数学、第七章 量化系统入门(三只小猪)、第八章 量化系统开发、第九章 度量与优化、第十章 机器学习·猪老三、第十一章 机器学习·ABU、附录 A-C(环境部署、相关性分析、统计分析与指标应用)。
8. 摘编边界
- 本摘编基于源码 docstring、README 与教学 notebook 的 markdown 文本提炼,未逐行核验全部算法实现。
- 源码哈希清单记录了 381 个文件的 SHA-256(不含 .git 元数据),可作为从 GitHub 重新获取源码后的一致性校验依据。
- 项目营销性描述("18496 种策略""上百种模型"等)未作为可验证事实收录。