- 金融科技
- 机器学习
- 数据分析
【免费下载链接】abu
阿布量化交易系统(股票,期权,期货,比特币,机器学习) 基于python的开源量化交易,量化投资架构
阿布量化(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 abupyabupy/__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 讲:择时策略的开发
择时策略决定什么时候买入投资品,回测告诉我们这种策略在历史数据中的模拟收益如何。三个步骤:
- 买入择时因子的编写;
- 分解模式(n_folds)一步一步对策略进行回测;
- 卖出择时因子的实现。
源码层面,买入因子统一继承自 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 讲:择时策略的优化
通过止盈止损保护策略产生的利润,控制风险:
- 基本止盈止损策略;
- 风险控制止损策略;
- 利润保护止盈策略。
对应卖出因子类族位于 FactorSellBu:AbuFactorAtrNStop(ATR 波动止损止盈)、AbuFactorPreAtrNStop(前置 ATR 止损)、AbuFactorCloseAtrNStop(收盘 ATR 止损)、AbuFactorSellNDay(持 N 天卖出)、AbuFactorSellBreak(跌破卖出)、AbuFactorSellDM(动态卖出)。
第 3 讲:滑点策略与交易手续费
考虑应用交易策略时产生的成交价格偏差及手续费:
- 滑点买入卖出价格确定及策略实现;
- 交易手续费的计算以及自定义手续费。
滑点模块位于 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(特斯拉)的历史成交与手续费明细示例如下:
| type | date | symbol | commission |
|---|---|---|---|
| buy | 20150423 | usTSLA | 8.22 |
| buy | 20150428 | usTSLA | 7.53 |
| sell | 20150622 | usTSLA | 8.22 |
| buy | 20150624 | usTSLA | 7.53 |
| sell | 20150706 | usTSLA | 7.53 |
| sell | 20150708 | usTSLA | 7.53 |
| buy | 20151230 | usTSLA | 7.22 |
| sell | 20160105 | usTSLA | 7.22 |
| buy | 20160315 | usTSLA | 5.57 |
| sell | 20160429 | usTSLA | 5.57 |
第 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 讲:选股策略的开发
一个好的策略需要一个好的标的:
- 选股因子的编写;
- 多个选股因子并行执行;
- 使用并行来提升选股运行效率。
选股模块位于 PickStockBu:内置AbuPickStockPriceMinMax(价格区间)、AbuPickRegressAngMinMax(回归角度)、AbuPickSimilarNTop(相似度 TopN)等;执行入口为 AlphaBu/ABuPickStockMaster.py 的AbuPickStockMaster,其在run_loop_back(stock_picks=[...])中通过n_process_pick支持选股并行。
第 6 讲:回测结果的度量
正确的度量引领着正确的前进方向:
- 度量的基本使用方法;
- 度量的可视化;
- 扩展自定义度量类。
度量模块位于 MetricsBu:核心类AbuMetricsBase计算收益、最大回撤、夏普比率、胜率等指标,AbuMetrics为股票度量实现,另有AbuMetricsFutures(期货)、AbuMetricsTC(数字货币)等扩展,自定义度量类继承AbuMetricsBase即可接入回测结果AbuResultTuple。
第 7 讲:寻找策略最优参数和评分
通过定制的评分机制,寻找一个策略最合理的参数,比如:应该考虑多少天的均线?
- 参数取值范围;
- Grid Search 寻找最优参数;
- 度量结果的评分;
- 不同权重的评分;
- 自定义评分类的实现。
参数寻优模块位于 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 股市场的回测
- A 股市场的回测示例;
- 涨跌停的特殊处理(源码佐证:SlippageBu 中
slippage_limit_up/slippage_limit_down装饰器对涨跌停价格进行保护处理); - 对多组交易结果进行分析。
第 9 讲:港股市场的回测
- 港股市场的回测示例;
- 优化策略,提高系统的稳定性;
- 将优化策略的「策略」作为类装饰器进行封装(源码佐证:CheckBu 提供参数校验装饰器体系,如
ABuChecker中的check_type、check_bound、check_subset等,可复用于策略封装)。
第 10 讲:比特币、莱特币的回测
- 比特币、莱特币的走势数据分析;
- 比特币、莱特币的走势可视化分析;
- 比特币、莱特币市场的回测。
英文文档还给出了回测中风险收益分布的示例统计(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 讲:期货市场的回测
- 期货市场的特点;
- 看涨合约的回测;
- 看跌合约的回测;
- 位移路程比优化策略(源码佐证:TLineBu/ABuTL.py 提供
shift_distance位移计算,TLineBu/ABuTLExecute.py 的shift_distance/calc_kl_speed支撑位移路程比分析)。
第 12 讲:机器学习与比特币示例
如何在投资品的量化交易中正确使用机器学习技术?
- 比特币特征的提取(源码佐证:MLBu/ABuMLPd.py 中
ABuMLPd系列类封装了比特币特征 DataFrame 的构造与make_xy); - abu 中内置机器学习模块的使用(MLBu/ABuML.py 的
AbuML统一封装 fit/predict/交叉验证/ROC/混淆矩阵/学习曲线等能力,ABuMLCreater提供十余种模型族的网格寻优); - 测试集的验证与非均衡技术;
- 继承
AbuMLPd对数据处理进行封装。
第 13 讲:量化技术分析应用
技术分析三大假设:市场行为涵盖一切;价格沿趋势移动;历史会重演。三个实践步骤:
- 阻力线、支撑线自动绘制(源码佐证:TLineBu/ABuTLine.py 的
show_support_resistance_trend/show_resistance_trend/show_support_trend自动绘制支撑阻力线); - 跳空技术分析(TLineBu/ABuTLJump.py 的
calc_jump/calc_jump_line); - 传统技术指标技术分析(IndicatorBu 内置 MA、MACD、RSI、BOLL、ATR 等指标计算与可视化,如
calc_ma_from_prices、plot_macd、plot_rsi、plot_boll、atr14等)。
第 14 讲:量化相关性分析应用
相似的投资品数据的背后,往往是相似行为模式的投资人群:
- 相关相似度的度量(SimilarBu/ABuCorrcoef.py 支持皮尔逊、斯皮尔曼等多种相关系数及滚动相关性);
- 距离的度量与相似度;
- 相似相关接口的应用(SimilarBu/ABuSimilar.py 的
find_similar_with_cnt/find_similar_with_folds/find_similar_with_se,支持本地缓存与网络计算两种模式); - 自然相关性。
第 15 讲:量化交易和搜索引擎
搜索策略生成的失败交易,由裁判拦截住冲动的交易者:
- 切分训练集交易的回测;
- 对交易进行人工分析;
- 主裁系统原理;
- 角度主裁(UmpBu/ABuUmpMainDeg.py);
- 赋予宏观上合理的解释;
- 最优分类簇筛选。
第 16 讲:UMP 主裁(Main Referee)系统
UMP 主裁在训练集中通过高斯混合模型(GMM)对失败交易聚类学习:
- 跳空主裁(gap main-referee);
- 价格主裁(price main-referee);
- 波动主裁(fluctuation main-referee);
- 验证主裁是否有效工作;
- 组织多个裁判形成更复杂的综合决策;
- 让裁判学会互相配合做出最正确判断。
实现细节可从 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)系统
- 跳空边裁(gap edge-referee);
- 价格边裁(price edge-referee);
- 波动边裁(fluctuation edge-referee);
- 综合边裁(comprehensive edge-referee);
- 验证边裁是否有效工作;
- 开启边裁模式。
边裁在实盘/回测中拦截失败概率高的信号,对应实现位于 UmpBu 的ABuUmpEdgeBase、ABuUmpEdgeDeg、ABuUmpEdgeJump、ABuUmpEdgePrice、ABuUmpEdgeWave、ABuUmpEdgeMul、ABuUmpEdgeFull,其make_ump_block_decision(ml_feature_dict)决策接口与买入/卖出因子解耦(见 FactorBuyBu/ABuFactorBuyBase.py)。
第 18 讲:自定义裁判系统
- 从不同视角训练新的主裁;
- 从不同视角训练新的边裁;
- 添加一个新的视角来记录比赛(record backtesting feature,即回测特征采集);
- 使用新视角的主裁;
- 使用新视角的边裁。
该讲并给出了 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 支持股票、期货、数字货币等多种金融投资品的行情和交易,并具有高度可定制性:
- 数据模式的切换(
E_MARKET_DATA_FETCH_MODE:网络实时抓取/本地缓存,见 CoreBu/ABuEnv.py); - 数据存储的切换(
EStoreAbu:csv/hdf5/sqlite 等,见 CoreBu/ABuStore.py); - 数据源的切换(
g_market_source全局变量); - 全市场数据的更新(abupy_ui 数据下载界面操作或
abu.run_kl_update(),文档明确推荐先更新数据再回测以提升效率); - 接入外部数据源:股票数据源;
- 接入外部数据源:期货数据源;
- 接入外部数据源:比特币、莱特币数据源。
从源码看,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的开源量化交易,量化投资架构
相关推荐
vn.py量化交易框架进阶指南:从策略开发到系统部署的完整实战
vn.py量化交易框架进阶指南:从策略开发到系统部署的完整实战 vn.py作为基于Python的开源量化交易框架,为专业交易员提供了从策略研发到实盘交易的完整解
金融科技后端机器学习10个实战策略+避坑指南:Python量化交易从入门到精通
10个实战策略+避坑指南:Python量化交易从入门到精通 Python量化交易 是结合编程与金融市场的创新领域,通过代码实现自动化交易策略,帮助投资者在复杂市
金融科技数据分析TYCyclePagerView布局详解:三种TransformLayoutType的实战应用指南 🎯
TYCyclePagerView布局详解:三种TransformLayoutType的实战应用指南 🎯 想要为你的iOS应用添加炫酷的轮播图效果吗?TYCyc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考