☰
阿布量化交易系统(ABu)技术指南:从择时策略开发到 UMP 裁判决策的完整实战体系
2026/10/1 2:07:18 网站建设 项目流程
  • 金融科技
  • 机器学习
  • 数据分析

【免费下载链接】abu

阿布量化交易系统(股票,期权,期货,比特币,机器学习) 基于python的开源量化交易,量化投资架构

项目地址:https://gitcode.com/gh_mirrors/ab/abu
点击查看免费下载

阿布量化(ABu)是一套基于 Python 的开源量化交易与量化投资架构,覆盖股票(美股、A 股、港股)、期货、期权、比特币与莱特币等投资市场,其核心目标是「用一句话可解释的智能策略」——借助机器学习自动优化策略,主动分析策略生成的订单行为以拦截亏损交易。本文以仓库英文主文档 readme-en.md 为骨架,结合 abupy 源码实现,系统讲解阿布量化的环境部署、十九讲实战教程体系(择时、选股、回测、度量、参数寻优、多市场回测、机器学习、UMP 裁判与数据源),读者可据此从零搭建量化环境,并掌握每个模块对应的源码入口与底层实现机制。

项目愿景:迈向自动进化的量化策略

英文主文档开篇即点明 ABu 的设计哲学:Abu seeks the intelligent-strategy which be able to explained by of a word(阿布寻求一种可以用一句话解释的智能策略)。具体表现为三个层次:

  • 策略自动改进:ABu 帮助用户自动改进策略,主动分析策略生成订单的行为,提前拦截可能导致亏损的交易;
  • 从手工到全自动:当前阶段仍是手工编写代码,但 ABu 的设计目标是在未来全自动运行整个工作流程与策略本身;
  • 种子策略自成长:用户只需提供若干种子策略(seed strategy),在此基础上让计算机持续自我学习、自我成长,构建出能够随时间序列数据自动调节参数的新策略。

仓库导航与文档索引

ABu 仓库将源码、教程、示例代码分目录组织,对应关系如下(来源:readme-en.md):

内容路径
阿布量化交易系统源码abupy
阿布量化使用教程(30+ 个 Notebook)abupy_lecture
阿布量化非编程界面操作abupy_ui
《量化交易之路》示例代码ipython 与 python
《机器学习之路》示例代码外部仓库 abu_ml

从 abupy/init.py 可以看到,顶层包一次性导入并聚合了 20 个功能子包:CoreBu(核心环境)、FactorBuyBu(买入因子)、FactorSellBu(卖出因子)、AlphaBu(择时/选股主控)、BetaBu(仓位管理)、UmpBu(裁判系统)、MLBu(机器学习)、DLBu(深度学习)、MetricsBu(回测度量)、PickStockBu(选股)、SlippageBu(滑点)、TLineBu(趋势线分析)、MarketBu(市场数据)、SimilarBu(相关性分析)、TradeBu(交易执行)、IndicatorBu(技术指标)、WidgetBu(界面组件)等,包版本号为0.4.0。这意味着import abupy后即可直接访问abupy、abupy.env、abupy.ABuPickStockMaster等全部上层 API。

核心特性与设计目标

英文文档列出的两大特性与两大设计目标如下:

核心特性

  • 使用多种机器学习技术智能优化策略(源码佐证:MLBu/ABuMLCreater.py 内置 bagging、adaboost、随机森林、XGBoost、决策树、KNN、逻辑回归等十余种模型的网格搜索最优实现,如bagging_classifier_best、xgb_regressor_best、random_forest_classifier_best);
  • 在实盘中指导策略进行交易,提高策略的实盘效果,战胜市场。

工程设计目标

  • 分离基础策略与策略优化监督模块(策略因子与 UmpBu 裁判监督模块解耦);
  • 提高灵活度和适配性。

支持的投资市场

  • 美股、A 股、港股;
  • 期货市场、期权市场;
  • 比特币(BTC)、莱特币(LTC)。

底层市场枚举定义在 CoreBu/ABuEnv.py 的EMarketTargetType中:E_MARKET_TARGET_US(美股)、E_MARKET_TARGET_CN(A 股)、E_MARKET_TARGET_HK(港股)、E_MARKET_TARGET_FUTURES_CN(国内期货)、E_MARKET_TARGET_FUTURES_GLOBAL(国际期货)、E_MARKET_TARGET_OPTIONS_US(美股期权)、E_MARKET_TARGET_TC(数字货币)。仓库 RomDataBu 内置了上述市场的样例行情数据,包括stock_code_US.csv、stock_code_CN.csv、stock_code_HK.csv、futures_cn.csv、futures_gb.csv、symbols_db.db等。

安装、部署与验证

英文文档给出的安装流程非常简洁,分两步:

1. 环境部署

推荐使用 Anaconda 部署 Python 环境,完整部署流程(含依赖安装、数据沙盒配置)详见仓库内对应教程:0-abupy量化环境部署.ipynb)。

2. 安装验证

安装完成后执行以下代码验证环境是否就绪:

import abupy

abupy/__init__.py在导入时会完成所有子模块的注册与全局环境初始化(见 CoreBu/ABuEnv.py)。需要说明的环境事实:默认数据缓存目录为~/abu(g_project_root),内置示例数据路径为项目内 RomDataBu/csv(g_project_kl_df_data_example);若用户主目录含中文字符(Windows 场景),缓存路径会自动切换到 abupy 源码根目录以避免 pandas 读写 csv/hdf5 出错。

非编程界面操作(可选)

若不想编写代码,abupy_ui 提供基于 Notebook 的可视化界面操作,涵盖历史回测、阻力位支撑位分析、跳空缺口筛选、趋势敏感速度对比、位移路程比分析、线性拟合、黄金分割、价格通道、相关性分析、涨跌幅分析与股票基本信息查询等 11 项操作,详见 abupy_ui/readme.md。其中历史回测界面的操作流程如下:

十九讲实战教程体系(核心内容)

英文文档的主体是 19 讲量化实战教程索引,每一讲对应 abupy_lecture 下的一个 Notebook,构成了从「策略开发 → 优化 → 度量 → 多市场回测 → 机器学习 → UMP 裁判 → 数据源」的完整闭环。以下逐讲展开,并结合源码补充底层实现要点。

第 1 讲:择时策略的开发

择时策略决定什么时候买入投资品,回测告诉我们这种策略在历史数据中的模拟收益如何。三个步骤:

  1. 买入择时因子的编写;
  2. 分解模式(n_folds)一步一步对策略进行回测;
  3. 卖出择时因子的实现。

源码层面,买入因子统一继承自 FactorBuyBu/ABuFactorBuyBase.py 中的AbuFactorBuyBase(提供fit_day/fit_month决策与make_buy_order下单),内置实现包括 ABuFactorBuyBreak(突破)、ABuFactorBuyTrend(趋势)、ABuFactorBuyWD(星期)、ABuFactorBuyDM(动态均线)等;卖出因子继承自 FactorSellBu/ABuFactorSellBase.py。组合调用入口是 CoreBu/ABu.py 的abupy.run_loop_back()。

第 2 讲:择时策略的优化

通过止盈止损保护策略产生的利润,控制风险:

  1. 基本止盈止损策略;
  2. 风险控制止损策略;
  3. 利润保护止盈策略。

对应卖出因子类族位于 FactorSellBu:AbuFactorAtrNStop(ATR 波动止损止盈)、AbuFactorPreAtrNStop(前置 ATR 止损)、AbuFactorCloseAtrNStop(收盘 ATR 止损)、AbuFactorSellNDay(持 N 天卖出)、AbuFactorSellBreak(跌破卖出)、AbuFactorSellDM(动态卖出)。

第 3 讲:滑点策略与交易手续费

考虑应用交易策略时产生的成交价格偏差及手续费:

  1. 滑点买入卖出价格确定及策略实现;
  2. 交易手续费的计算以及自定义手续费。

滑点模块位于 SlippageBu:买入滑点继承AbuSlippageBuyBase(如均值滑点AbuSlippageBuyMean),卖出滑点继承AbuSlippageSellBase(如AbuSlippageSellMean),内置涨跌停保护装饰器slippage_limit_up/slippage_limit_down。手续费计算位于 TradeBu/ABuCommission.py,内置美股calc_commission_us、A 股calc_commission_cn、港股calc_commission_hk、国内期货calc_commission_futures_cn、全球期货calc_commission_futures_global、美股期权calc_options_us等实现,支持通过commission_dict自定义。回测中usTSLA(特斯拉)的历史成交与手续费明细示例如下:

typedatesymbolcommission
buy20150423usTSLA8.22
buy20150428usTSLA7.53
sell20150622usTSLA8.22
buy20150624usTSLA7.53
sell20150706usTSLA7.53
sell20150708usTSLA7.53
buy20151230usTSLA7.22
sell20160105usTSLA7.22
buy20160315usTSLA5.57
sell20160429usTSLA5.57

第 4 讲:多支股票择时回测与仓位管理

针对多支股票实现择时策略,通过仓位管理策略控制风险:

  1. 多支股票使用相同的因子进行择时;
  2. 自定义仓位管理策略的实现;
  3. 多支股票使用不同的因子进行择时;
  4. 使用并行来提升择时运行效率。

仓位管理模块位于 BetaBu:内置AbuAtrPosition(ATR 仓位)、AbuKellyPosition(凯利公式仓位)、AbuPtPosition(百分比仓位),自定义仓位需继承AbuPositionBase。并行加速方面,abupy.run_loop_back()支持n_process_kl与n_process_pick参数;TradeBu/ABuKLManager.py 的batch_get_pick_time_kl_pd默认使用ABuEnv.g_cpu_cnt个进程并行抓取行情(CPU 核数由 CoreBu/ABuEnv.py 通过 psutil 自动探测,失败时兜底为 4)。

第 5 讲:选股策略的开发

一个好的策略需要一个好的标的:

  1. 选股因子的编写;
  2. 多个选股因子并行执行;
  3. 使用并行来提升选股运行效率。

选股模块位于 PickStockBu:内置AbuPickStockPriceMinMax(价格区间)、AbuPickRegressAngMinMax(回归角度)、AbuPickSimilarNTop(相似度 TopN)等;执行入口为 AlphaBu/ABuPickStockMaster.py 的AbuPickStockMaster,其在run_loop_back(stock_picks=[...])中通过n_process_pick支持选股并行。

第 6 讲:回测结果的度量

正确的度量引领着正确的前进方向:

  1. 度量的基本使用方法;
  2. 度量的可视化;
  3. 扩展自定义度量类。

度量模块位于 MetricsBu:核心类AbuMetricsBase计算收益、最大回撤、夏普比率、胜率等指标,AbuMetrics为股票度量实现,另有AbuMetricsFutures(期货)、AbuMetricsTC(数字货币)等扩展,自定义度量类继承AbuMetricsBase即可接入回测结果AbuResultTuple。

第 7 讲:寻找策略最优参数和评分

通过定制的评分机制,寻找一个策略最合理的参数,比如:应该考虑多少天的均线?

  1. 参数取值范围;
  2. Grid Search 寻找最优参数;
  3. 度量结果的评分;
  4. 不同权重的评分;
  5. 自定义评分类的实现。

参数寻优模块位于 MetricsBu/ABuGridSearch.py 与 MetricsBu/ABuGridHelper.py,评分体系在 MetricsBu/ABuMetricsScore.py;机器学习侧的网格搜索封装见 MLBu/ABuMLGrid.py(grid_search_init_kwargs、grid_search_mul_init_kwargs等,支持n_jobs=-1全核并行)。

第 8 讲:A 股市场的回测

  1. A 股市场的回测示例;
  2. 涨跌停的特殊处理(源码佐证:SlippageBu 中slippage_limit_up/slippage_limit_down装饰器对涨跌停价格进行保护处理);
  3. 对多组交易结果进行分析。

第 9 讲:港股市场的回测

  1. 港股市场的回测示例;
  2. 优化策略,提高系统的稳定性;
  3. 将优化策略的「策略」作为类装饰器进行封装(源码佐证:CheckBu 提供参数校验装饰器体系,如ABuChecker中的check_type、check_bound、check_subset等,可复用于策略封装)。

第 10 讲:比特币、莱特币的回测

  1. 比特币、莱特币的走势数据分析;
  2. 比特币、莱特币的走势可视化分析;
  3. 比特币、莱特币市场的回测。

英文文档还给出了回测中风险收益分布的示例统计(loss10 为最差 10% 的收益区间,top10 为最好 10% 的收益区间):

  • bitcoin loss10:[-26.895, -3.284],top10:(4.182, 38.786];
  • bitcoin 近 1 年风险降低:loss10:[-16.273, -2.783],top10:(3.948, 15.22];
  • litecoin loss10:[-28.48, -4.1],top10:(4.405, 41.083];
  • litecoin 近 1 年风险降低:loss10:[-22.823, -3.229],top10:(5.0606, 37.505]。

第 11 讲:期货市场的回测

  1. 期货市场的特点;
  2. 看涨合约的回测;
  3. 看跌合约的回测;
  4. 位移路程比优化策略(源码佐证:TLineBu/ABuTL.py 提供shift_distance位移计算,TLineBu/ABuTLExecute.py 的shift_distance/calc_kl_speed支撑位移路程比分析)。

第 12 讲:机器学习与比特币示例

如何在投资品的量化交易中正确使用机器学习技术?

  1. 比特币特征的提取(源码佐证:MLBu/ABuMLPd.py 中ABuMLPd系列类封装了比特币特征 DataFrame 的构造与make_xy);
  2. abu 中内置机器学习模块的使用(MLBu/ABuML.py 的AbuML统一封装 fit/predict/交叉验证/ROC/混淆矩阵/学习曲线等能力,ABuMLCreater提供十余种模型族的网格寻优);
  3. 测试集的验证与非均衡技术;
  4. 继承AbuMLPd对数据处理进行封装。

第 13 讲:量化技术分析应用

技术分析三大假设:市场行为涵盖一切;价格沿趋势移动;历史会重演。三个实践步骤:

  1. 阻力线、支撑线自动绘制(源码佐证:TLineBu/ABuTLine.py 的show_support_resistance_trend/show_resistance_trend/show_support_trend自动绘制支撑阻力线);
  2. 跳空技术分析(TLineBu/ABuTLJump.py 的calc_jump/calc_jump_line);
  3. 传统技术指标技术分析(IndicatorBu 内置 MA、MACD、RSI、BOLL、ATR 等指标计算与可视化,如calc_ma_from_prices、plot_macd、plot_rsi、plot_boll、atr14等)。

第 14 讲:量化相关性分析应用

相似的投资品数据的背后,往往是相似行为模式的投资人群:

  1. 相关相似度的度量(SimilarBu/ABuCorrcoef.py 支持皮尔逊、斯皮尔曼等多种相关系数及滚动相关性);
  2. 距离的度量与相似度;
  3. 相似相关接口的应用(SimilarBu/ABuSimilar.py 的find_similar_with_cnt/find_similar_with_folds/find_similar_with_se,支持本地缓存与网络计算两种模式);
  4. 自然相关性。

第 15 讲:量化交易和搜索引擎

搜索策略生成的失败交易,由裁判拦截住冲动的交易者:

  1. 切分训练集交易的回测;
  2. 对交易进行人工分析;
  3. 主裁系统原理;
  4. 角度主裁(UmpBu/ABuUmpMainDeg.py);
  5. 赋予宏观上合理的解释;
  6. 最优分类簇筛选。

第 16 讲:UMP 主裁(Main Referee)系统

UMP 主裁在训练集中通过高斯混合模型(GMM)对失败交易聚类学习:

  1. 跳空主裁(gap main-referee);
  2. 价格主裁(price main-referee);
  3. 波动主裁(fluctuation main-referee);
  4. 验证主裁是否有效工作;
  5. 组织多个裁判形成更复杂的综合决策;
  6. 让裁判学会互相配合做出最正确判断。

实现细节可从 UmpBu/ABuUmpMainBase.py 看到:主裁使用 GMM 聚类,默认分类数量范围K_DEFAULT_NCS_RANG = slice(40, 85, 1),失败率阈值默认g_brust_min_default = (0, 0, 0.65),即以分类簇失败率大于 0.65 的簇作为主裁学习目标;训练/预测通过AbuUmpManager(UmpBu/ABuUmpManager.py)统一管理。内置主裁实现包括ABuUmpMainDeg(角度)、ABuUmpMainJump(跳空)、ABuUmpMainPrice(价格)、ABuUmpMainWave(波动)、ABuUmpMainMul(综合)、ABuUmpMainFull(全视角)。

第 17 讲:UMP 边裁(Edge Referee)系统

  1. 跳空边裁(gap edge-referee);
  2. 价格边裁(price edge-referee);
  3. 波动边裁(fluctuation edge-referee);
  4. 综合边裁(comprehensive edge-referee);
  5. 验证边裁是否有效工作;
  6. 开启边裁模式。

边裁在实盘/回测中拦截失败概率高的信号,对应实现位于 UmpBu 的ABuUmpEdgeBase、ABuUmpEdgeDeg、ABuUmpEdgeJump、ABuUmpEdgePrice、ABuUmpEdgeWave、ABuUmpEdgeMul、ABuUmpEdgeFull,其make_ump_block_decision(ml_feature_dict)决策接口与买入/卖出因子解耦(见 FactorBuyBu/ABuFactorBuyBase.py)。

第 18 讲:自定义裁判系统

  1. 从不同视角训练新的主裁;
  2. 从不同视角训练新的边裁;
  3. 添加一个新的视角来记录比赛(record backtesting feature,即回测特征采集);
  4. 使用新视角的主裁;
  5. 使用新视角的边裁。

该讲并给出了 UMP 模块的设计目标:

  • 无需硬编码策略(no need to hard-code strategy);
  • 无需手动设置阈值(no need to manually set the threshold);
  • 分离策略与优化监督模块,提高灵活性和适配性;
  • 发现隐藏在策略中的问题;
  • 自动学习新的交易数据。

特征采集与特征字典构造的底层实现在 TradeBu/ABuMLFeature.py(ABuMLFeature系列类),买入特征、卖出特征通过support_buy_feature/support_sell_feature声明,用户可通过append_user_feature添加自定义视角特征。

第 19 讲:数据源

abu 支持股票、期货、数字货币等多种金融投资品的行情和交易,并具有高度可定制性:

  1. 数据模式的切换(E_MARKET_DATA_FETCH_MODE:网络实时抓取/本地缓存,见 CoreBu/ABuEnv.py);
  2. 数据存储的切换(EStoreAbu:csv/hdf5/sqlite 等,见 CoreBu/ABuStore.py);
  3. 数据源的切换(g_market_source全局变量);
  4. 全市场数据的更新(abupy_ui 数据下载界面操作或abu.run_kl_update(),文档明确推荐先更新数据再回测以提升效率);
  5. 接入外部数据源:股票数据源;
  6. 接入外部数据源:期货数据源;
  7. 接入外部数据源:比特币、莱特币数据源。

从源码看,CoreBu/ABuEnv.py 定义了数据源枚举EMarketSourceType:百度(默认g_market_source = E_MARKET_SOURCE_bd)、腾讯、网易、新浪美股,以及新浪国内/国际期货、火币数字货币(BTC/LTC)等。对应的解析器实现在 MarketBu/ABuDataParser.py(BDParser、TXParser、NTParser、SNUSParser、SNFuturesParser、SNFuturesGBParser、HBTCParser),数据抓取实现位于 MarketBu/ABuDataFeed.py,网络请求默认超时设置为连接 10 秒、接收 60 秒。若需接入私有数据源,可设置ABuEnv.g_private_data_source。

实战总入口:run_loop_back 与目录结构速查

除教程外,仓库还内置了两类可直接运行的示例:

  • python 目录:c1.py~c10.py、extA.py~extC.py等按章节组织的可执行示例脚本;
  • ipython 目录:与《量化交易之路》章节对应的 Notebook,含环境部署、NumPy/pandas 工具、可视化、数学、量化系统开发与机器学习等专题。

所有回测的最终统一入口是 CoreBu/ABu.py 的abupy.run_loop_back(),其核心参数如下(源码 docstring 原文要点):

  • read_cash:初始化资金额度,例如1000000;
  • buy_factors:买入因子策略序列,例如[{'xd': 60, 'class': AbuFactorBuyBreak}, {'xd': 42, 'class': AbuFactorBuyBreak}];
  • sell_factors:卖出因子序列,例如[{'stop_loss_n': 0.5, 'stop_win_n': 3.0, 'class': AbuFactorAtrNStop}, {'pre_atr_n': 1.0, 'class': AbuFactorPreAtrNStop}, {'close_atr_n': 1.5, 'class': AbuFactorCloseAtrNStop}];
  • stock_picks:选股因子序列,例如[{'class': AbuPickRegressAngMinMax, 'threshold_ang_min': 0.0, 'reversed': False}, {'class': AbuPickStockPriceMinMax, 'threshold_price_min': 50.0, 'reversed': False}];
  • choice_symbols:备选股票池,默认None时按abupy.env.g_market_target的市场类型做全市场回测,也可显式传入如['usNOAH', 'usSFUN', 'usBIDU', 'usAAPL', 'usGOOG', ...];
  • n_folds:分解模式折数(默认 2);
  • commission_dict:自定义手续费配置;
  • n_process_kl/n_process_pick:行情与选股的并行进程数。

许可证

阿布量化遵循 GPL 开源许可证。本文所述内容均基于仓库 readme-en.md 与 abupy 源码,更多中文教程细节可继续阅读 abupy_lecture 下的对应章节 Notebook。

  • 金融科技
  • 机器学习
  • 数据分析

【免费下载链接】abu

阿布量化交易系统(股票,期权,期货,比特币,机器学习) 基于python的开源量化交易,量化投资架构

项目地址:https://gitcode.com/gh_mirrors/ab/abu
点击查看免费下载

相关推荐

上一篇:OctoPrint打印过程模拟功能:提前发现潜在问题
下一篇:如何快速配置OctoPrint以太网连接:新手完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询