ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ai_quant_trade 传统策略实战指南:从双均线回测框架到动量轮动与经典策略选型

ai_quant_trade 传统策略实战指南:从双均线回测框架到动量轮动与经典策略选型 金融科技示例工程【免费下载链接】ai_quant_tradeStock AI Trader: 1-stop platform for learning, sim live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C deploy JoinQuant code. 股票AI操盘手一站式学习、模拟、实盘平台。涵盖股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C部署及聚宽代码。项目地址https://gitcode.com/gh_mirrors/ai/ai_quant_trade点击查看免费下载传统策略虽然看似“昨日黄花”但其规则清晰、可解释性强、可操作性高依然是量化交易体系中最易上手、最适合作风控兜底的一环。本指南以仓库a_全网优秀资源/05_交易策略/01_传统策略/01_传统策略.md为核心结合egs_trade/vanilla下的本地回测实现系统讲解双均线策略的完整回测链路数据、择时、账户、费用、风险指标、A股强势股动量轮动的实战配置以及 Sequoia、pythondict-quant、掘金策略集锦等经典开源策略的资源清单帮助读者在本地构建一套可调试、可定制、可验证的传统策略研究环境。一、为什么本地传统策略平台仍然不可替代深度学习与机器学习策略往往需要配合规则使用传统策略则天然具备规则可解释、逻辑可审计的优势适合作为量化研究的基石。虽然聚宽、BigQuant 等在线平台提供了现成的数据获取与回测评估能力但本地平台在以下方面仍然不可或缺参见 egs_trade/vanilla/double_ma/文档教程/README.md方便调试与代码管理本地可直接断点调试、版本管理策略逻辑不再是黑盒本地资源充足在线平台资源有限跑机器学习类模型非常吃力方便定制化数据源、交易规则、费用模型均可自行改造隐私管理较好方便进行实盘落地。本仓库在 egs_trade/vanilla 目录下提供了两条完整的传统策略实战链路double_ma双均线本地回测框架与momentum_rotationA股全市场强势股轮动回测。二、双均线策略原理与本地回测框架2.1 金叉死叉双均线策略的核心逻辑双均线策略是一种趋势跟踪类策略作为基础入门策略其原理就是通过捕捉金叉死叉信号来判断买点和卖点。均线的本质是用特定时间段收盘价的平均值作为当天的均价在信号处理中相当于一种滤波手段能避免信号出现较大波动、过滤较大的跳变。趋势类策略一般适用于市场环境较好的时候。信号规则为金叉短周期均线向上穿过长周期均线短均线 ≥ 长均线意味着上涨趋势出现触发买入死叉短周期均线下穿长周期均线短均线 长均线意味着下跌趋势出现触发卖出。仓库源码 egs_trade/vanilla/double_ma/src/rules/timing_ctrl/moving_average.py 将这一择时规则封装为double_ma_timing(ma_short, ma_long, hold)函数当ma_short ma_long且当前未持仓not hold时返回buy当ma_short ma_long且已持仓hold时返回sell其余情况返回空串不交易。这里通过hold状态参数避免重复开仓/平仓保证金叉买入、死叉卖出只在状态切换时执行。用 pandas 计算双均线非常简洁见 back_tester.pydf[ma_short] df[close].rolling(windowself.test_conditions[ma_short]).mean() df[ma_long] df[close].rolling(windowself.test_conditions[ma_long]).mean()ma_short与ma_long的取值在配置文件中定义默认短均线 10 日、长均线 20 日。均线计算后窗口起始部分的均值为空值NaN源码会将其dropna()剔除因此配置回测起始日期时需要注意向前预留均线长度所需的历史数据。2.2 搭建回测环境与依赖安装运行双均线回测前需要安装仓库 requirements.txt 中列出的依赖核心包括tushare1.2.85 # A股数据接口 pandas1.2.4 # 数据处理与均线计算 numpy1.22.0 matplotlib3.3.4 # 交易图绘制 ffn0.3.6 # 风险指标计算 mplfinance0.12.9b1 chinese_calendar1.7.2 # 交易日历 typeguard2.13.0其中 Tushare 数据接口需要注册获取 tokenhttps://tushare.pro/在个人主页获取。注意Tushare Pro 大量调用或获取详细信息需要积分/付费未付费时大盘指数数据无法获取此时风险指标将跳过 alpha 和 beta 的计算。2.3 回测配置conf/double_ma.yaml 全参数解析回测条件全部通过 YAML 配置文件 conf/double_ma.yaml 声明包含三大块数据条件data_condition参数默认值/示例说明data_sourcetushare数据引擎源码中预留了更多选项todoskip_downloadTrue若数据已下载到本地则跳过重新下载benchmarkNone基准指数000001.XSHG上证综指、000300.XSHG沪深300Tushare 未付费时不可用stock_lst[000001.SZ, 600000.SH]待选股票池当前为人工选股start_time/end_time2018-01-01/2019-12-30回测区间time_freqdaily数据频率预留更多选项测试条件test_condition参数默认值说明base_rate0.04无风险利率可理解为银行存款利率capital100000初始可用资金ma_short10短均线周期ma_long20长均线周期交易费用order_cost参数默认值说明close_tax0.001卖出印花税open_commission0.0003买入佣金close_commission0.0003卖出佣金min_commission5单笔最低佣金slippage_fee0.0滑点费率如0.00246slippage_typegeneral滑点方向random 随机正负general 买正卖负trade_lim100一手 100 股买入数量为 100 的整数倍2.4 运行回测与输出物配置好 token 与 YAML 后直接运行也可参考 run.shpython back_tester.py --debug_off \ --config conf/double_ma.yaml--debug_off表示关闭调试模式从命令行读取--config指定的配置文件调试模式下会自动使用conf/double_ma.yaml并创建data、exp目录见 back_tester.py。此外还支持--data_dir数据存储目录、--exp_dir结果导出目录以及--override_config追加覆盖 YAML 配置项可多次使用。回测主流程由 back_tester.py 的offline_back_test_ctrl驱动从索引 1 开始逐日遍历避免用到当日数据偷看未来在每个交易日先按上一交易日的均线值生成买卖信号列表先处理卖出列表再处理买入列表避免现金不足按等权分配买入资金最后刷新账户总资产并绘图。输出物包括数据文件Tushare 获取的数据以日期股票代码为文件名存储为 CSV风险指标 CSVexp目录下的risk_indicator.csv交易明细 CSVtrading_info.csv交易图每个股票的资金曲线图与 K 线买卖点标注图SVG 格式。仓库当前样例回测结果2018-01-01 至 2019-12-30双均线 10/20 日见 egs_trade/vanilla/double_ma/README.md风险指标数值total_returns0.097863annal_returns0.051365sharp_ratio0.026636max_withdraw-0.152564sortino_ratio0.088889win_rate0.051365profit_loss_ratio0.776881max_con_losses9813.0722.5 账户模型与交易控制回测使用 src/back_test/account_info.py 中的Account类维护账户状态核心字段包括动态变化信息cash可用现金、total_capital总资产、pos_dict持仓字典记录持仓股数与当前价交易历史日志trade_dict每只股票的交易明细 DataFrame、daily_trading_lst每日交易记录、pd_gather_trades聚合交易记录、funds_chg_lst每日总资金变化序列。get_total_capital()将持仓市值pos_num * price累加与现金相加得到总资产该序列是后续计算收益、回撤等风险指标的基础。买卖下单、费用扣除与股票数量取整100 股整数倍由 src/back_test/trading_ctrl.py 的order_value完成资金分配则由 src/portfolio/capital_allocation.py 的equal_allocation按股票池数量等权分配。三、回测风险指标从收益到风险全景评估回测结束后src/back_test/risk_indicator.py 的cal_risk_indicator基于ffn库计算并输出以下指标理解每个指标的公式有助于正确解读回测结果策略收益total_returns账户资金在一段时间内的变化(Pend - Pstart) / Pstart * 100%年化收益annal_returns若测试周期小于一年则为折算值公式((1P)^(250/n) - 1) * 100%其中 n 为交易日数、一年按 250 个交易日计源码中one_year250Beta衡量策略收益与基准收益的关系Beta Cov(Dp, Dm) / Var(Dm)市场状态良好时越大越好。源码中仅当df_index基准数据非空时才计算未付费 Tushare 时跳过Alpha非系统性风险代表与市场波动无关的收益Alpha Rp - [Rf Beta * (Rm - Rf)]Sharpe 率sharp_ratio每承担一个风险所获得的无风险收益(Rp - Rf) / Sigma(p)越大越好最大回撤max_withdraw策略最大损失max_draw_down (Px-Py)/PxPx、Py 为一段时间内资产最高与最低值Sortino 率sortino_ratio评估策略亏损风险(Rp - Rf) / Sigma(d)用下行波动率代替总波动率越高越好胜率win_rate获胜概率源码采用当前资金大于上一笔资金且大于初始资金双重判定实现细节见源码注释代码标注了 todo/fixme 说明其统计口径有待确认盈亏比profit_loss_ratio盈利与亏损之比源码采用最大盈利 / 最大亏损的口径最大连续亏损max_con_losses一段交易时间内连续亏损的最大值。其中无风险利率 Rf 取配置文件中的base_rate默认 0.04即 4% 银行存款利率近似。回测与实盘的差异提醒回测只能尽可能接近实际但与真实交易仍存在差异见 文档教程概率性买入失败真实交易可能因涨跌停导致无法买入/卖出回测难以精确模拟滑点价格快速波动导致下单与成交价存在差异回测往往用固定比率模拟对应slippage_fee成交价格回测常以收盘价或平均价作为成交价与实际有出入。四、A股强势股动量轮动传统策略的进阶实战仓库在 egs_trade/vanilla/momentum_rotation 提供了更接近实盘场景的传统策略样例——A股全市场强势股轮动回测。项目 README 明确声明这是研究回测示例不是投资建议不承诺任何年化收益策略只做多、不融资、不做空、不接模拟盘或实盘。4.1 策略思路每月第一个可交易日换仓使用上一交易日的可见数据打分下一交易日按开盘价模拟成交动量分数默认使用 20/60/120 日收益叠加波动惩罚、成交额过滤、均线趋势过滤参数搜索默认覆盖top_n[5,10,20]、移动止损阈值0.10/0.15/0.20和大盘过滤开关总仓位不超过 100%移动止损卖出后资金留作现金直到下次换仓。4.2 配置与运行核心配置见 conf/momentum_rotation.yaml关键参数包括数据data.sourcetushare/csv、start_date/end_date、benchmark: 000300.SH样本切分split分为 train2016-01-01 至 2022-12-31与 test2023-01-01 至 2026-06-17两段用于参数搜索的样本外验证策略参数initial_cash、动量回看窗口lookback_windows: [20, 60, 120]与权重momentum_weights: [0.5, 0.3, 0.2]、趋势窗口trend_windows: [20, 60]、波动惩罚volatility_penalty: 0.5、最小成交额min_avg_amount: 50000000、大盘均线窗口market_ma_window: 60、最小上市天数min_list_days: 180、剔除 STexclude_st: true、整手lot_size: 100参数网格parameter_grid下的top_n、trailing_stop、market_filter_enabled交易费用与双均线类似的order_cost结构另含slippage_bps: 5滑点基点。运行方式Tushare Pro 模式读取环境变量TUSHARE_TOKENset TUSHARE_TOKENyour-token python run_backtest.py --config conf/momentum_rotation.yaml --exp_dir exp/momentum_rotation如需避开stock_basic的低频率限制可在配置的data下添加stock_list: [000001.SZ, 600000.SH]直接验证指定股票的真实行情链路。离线验证可将data.source改为csv并提供daily.csv、stock_basic.csv、benchmark.csv三个文件其中daily.csv至少包含ts_code,trade_date,open,high,low,close,vol,amount字段仓库unit_test/fixtures/momentum_rotation/提供了离线验证的样例数据。4.3 输出物与风险提示exp_dir下生成leaderboard.csv按样本外test_cagr降序排列的参数榜单、equity_curve.csv样本外榜首参数的资金曲线、trades.csv交易明细、metrics.csv总体指标、equity_curve.png资金曲线图。风险提示强势股轮动偏收益优先容易在趋势反转或流动性恶化时出现较大回撤回测结果受数据质量、复权方式、停牌/涨跌停处理、交易成本和样本切分影响实盘前必须单独验证数据、交易规则、滑点、容量和风控。五、经典传统策略开源资源清单关联文档还汇总了三个具有代表性的传统策略开源项目可作为策略设计参考5.1 Sequoia海龟交易法则与缠论买点Sequoia 是一个集成度较高的传统策略仓库Github 约 2.4k stars核心特色使用akshare数据接口获取行情使用TA-Lib计算技术因子仓库 a_全网优秀资源/04_因子/ta_lib 提供了 TA-Lib 的安装与文档资料egs_alpha/alpha_libs/ta_lib 提供了独立依赖说明实现了海龟交易法则与缠中说禅牛市买点两类经典规则支持微信推送交易信号。5.2 pythondict-quant量化实战教程源码集pythondict-quantGithub 约 849 stars记录了系列量化投资教程的源代码教程序列覆盖了从入门到进阶的完整路径且大多基于 Backtrader 框架实现Backtrader 教程 — 量化投资实战教程(1)2020/04/12Python 量化投资实战教程(2) — MACD策略2020/04/20Python 量化投资实战教程(3) — A股回测MACD策略2020/04/26Python 量化投资实战教程(4) — KDJ 策略2020/05/06Python 量化投资实战教程(5) — A股回测KDJ策略2020/05/16Python 量化投资实战教程(6) — 交易平均收益2020/05/26Python 量化投资实战教程(7) — 孕线真的有用吗2020/08/20Python 量化投资实战教程(8) - A股回测孕线策略2020/09/08Python 量化投资实战教程(9) - 自定义MySQL数据流2020/11/12Python 量化投资实战教程(10) - 可转债薅羊毛策略2021/03/07Prometheus 实战教程 Grafana Python — 实时监控东方财富人气榜股票2021/06/13Lean — 优秀好用的开源量化交易平台2021/10/21量化投资单因子回测神器 — Alphalens2021/11/23仓库 a_全网优秀资源/04_因子/01_alphalens.md 亦有专题资料微软开源世界首个 AI 量化投资平台 Qlib 使用教程2021/11/01仓库 a_全网优秀资源/02_综合框架/01_Qlib.md 与 egs_trade/ms_qlib 提供了更完整的本地实践什么是强化学习预测股票的效果如何5.3 掘金策略集锦myquant/strategy掘金策略集锦Github 约 945 stars是一个持续维护的经典策略库策略列表逐步增加支持 fork 后通过 Pull Request 贡献自己实现的策略。覆盖的策略类型包括趋势/突破类趋向系统指标 ADX/DMI、区间突破 dual-thrust未实现、动态突破 Dynamic Breakout、Hans 123、反转突破 r-breaker、简单海龟策略、双均线策略 dual-ma指标类人气指标 ar_ma、布林指标 boll-stock、布林强盗 bollinger_bandit、RSI、KDJ、MACD组合/选股类空中花园 skypark、动量选股 Momentum、简单 PE 因子 Factor、Alpha 相关示例、套利策略模板 arbitrage工程类仓位管理示例 position management、Python 策略框架 Framework。六、传统策略在量化体系中的定位传统策略虽看似昨日黄花但其可操作性更强仍有使用价值深度学习与机器学习策略往往需要配合规则使用传统策略恰好提供了这样的规则底座。仓库中与之配套的参考资料还包括规则选股方法论 ai_notes/02_理论/3_选股/01_规则选股.md涵盖基本面/技术面选股、趋势跟踪选股如均线多头排列、RPS 相对强弱选股、小市值策略等规则择时方法论 ai_notes/02_理论/4_择时/01_规则择时.md回测及评估指标理论 ai_notes/02_理论/6_回测及评估指标/风险指标.md投资组合管理 7 节教学 egs_trade/vanilla/portfolio_optimization从基金风险收益、数据整理、启发式组合、传统组合构建到均值方差优化、夏普率优化与带约束的组合优化是传统策略向组合管理延伸的进阶路径。整体来看以double_ma本地回测框架为基础以momentum_rotation为进阶实战再配合经典开源策略清单与规则选股方法论读者即可在本地建立起一套数据获取 → 择时信号 → 账户撮合 → 风险评估 → 组合优化的完整传统策略研究闭环。赞分享金融科技示例工程【免费下载链接】ai_quant_tradeStock AI Trader: 1-stop platform for learning, sim live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C deploy JoinQuant code. 股票AI操盘手一站式学习、模拟、实盘平台。涵盖股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C部署及聚宽代码。项目地址https://gitcode.com/gh_mirrors/ai/ai_quant_trade点击查看免费下载相关推荐Zipline 回测框架迁移指南从聚宽/优矿策略到本地回测的完整路线ai_quant_trade 视角Zipline 回测框架迁移指南从聚宽/优矿策略到本地回测的完整路线ai_quant_trade 视角 本篇技术指南以 zipline 框架笔记 http金融科技示例工程ai_quant_trade 项目 Backtrader 回测框架选型指南官方资源、教程体系与 GPL 协议下的落地策略ai_quant_trade 项目 Backtrader 回测框架选型指南官方资源、教程体系与 GPL 协议下的落地策略 导读 本文是 ai_quant_tr金融科技示例工程Dillinger 移动端架构决策树指南框架、状态、存储与离线策略的系统化选型方法Dillinger 移动端架构决策树指南框架、状态、存储与离线策略的系统化选型方法 导读 本指南以仓库内 .agent/skills/mobile desig前端开发工具上一篇Leiningen与量子计算Clojure与量子编程框架集成下一篇Translate Shell内存泄漏检测AWK脚本调试工具使用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表