174 lines
13 KiB
Markdown
174 lines
13 KiB
Markdown
---
|
||
title: "阿布量化(ABuQuant)框架架构摘编"
|
||
source: "https://github.com/bbfamily/abu"
|
||
source_commit: "d602d847677e4c2b77b0a122df30816ea68b5710 (2026-01-24)"
|
||
source_version: "0.4.0"
|
||
license: "GPL"
|
||
last_updated: 2026-08-07
|
||
type: source-derivative
|
||
tags:
|
||
- "量化"
|
||
- "开源框架"
|
||
- "Python"
|
||
raw_sources:
|
||
- path: "raw/量化/abuquant/_meta/源码哈希清单.tsv"
|
||
hash: "sha256:e07923e8607d1ce333d692f6acc8db3b5f68f1c9e9679d5629705e359e2f0e1f"
|
||
---
|
||
|
||
# 阿布量化(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 种策略""上百种模型"等)未作为可验证事实收录。
|