用流程纪律驱动量化研究:machine-learning-for-trading 第一章市场机制检测与 ML4T 研究-生产工作流实战
用流程纪律驱动量化研究machine-learning-for-trading 第一章市场机制检测与 ML4T 研究-生产工作流实战【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading本文以machine-learning-for-trading仓库第 1 章「The Process Is Your Edge」为主线系统拆解流程才是你的护城河这一核心命题从 ML4T 研究-生产工作流、探索/确认的证据边界到用高斯混合模型GMM在因子收益与宏观指标上做市场机制检测的两个完整 notebook 实战并给出可复现的运行方式与源码级依据。读完你将掌握结构突变、机制、数据漂移、概念漂移的判别词汇理解为何机制标签应当作为风险透镜而非择时信号以及如何用 walk-forward、密封保留集与选择感知评估守住研究完整性。第 1 章到底在论证什么01_process_is_edge/README.md 开篇即立论在交易中长期可持续的业绩更多取决于一套有纪律的研究流程而不是某个更精巧的模型。这套流程必须能够在市场变化、信号噪声与真实世界摩擦交易成本、数据修订、发布滞后中存活下来。章内给出的论证链条是市场是非平稳的——静态模型在变化的市场中必然退化因此机器学习用于交易应被重新定义为适应问题adaptation problem而不是模型选择竞赛model-selection contest近年的一系列冲击2008 全球金融危机、2020 疫情、2022 通胀等暴露了脆弱假设也给读者提供了讨论市场变化的可用词汇应对方案是把交易研究组织成可审计的生命周期point-in-time 正确的数据基础设施、明确的边界规则、迭代式特征与模型开发、贴近现实的策略设计、部署纪律与持续监控。仓库中与该章配套的两个可执行 notebook 是成文骨架的核心证据factor_regimes.ipynb基于 AQR Century of Factor Premia 因子收益的 GMM 机制检测与 macro_regimes.ipynb基于 FRED 宏观指标、并以标普 500 波动率与回撤做独立验证的机制检测对应的.py可执行脚本为 factor_regimes.py 与 macro_regimes.py。学习目标README 明确列出本章读者应掌握的五项能力也是本文的验收标准区分结构突变structural breaks、机制regimes、数据漂移data drift、概念漂移concept drift与在线检测online detection并解释静态交易模型为何在变化的市场中退化把ML4T 工作流理解为一套研究-生产系统包含 point-in-time 正确的数据基础设施、范围界定不变量scoping invariants、迭代式研究模块以及从实盘交易回流到研究的反馈闭环界定探索与确认之间的证据边界evidence boundary并说明试验日志trial logging、密封保留集sealed holdouts与选择感知评估selection-aware evaluation如何守护研究完整性描述因果推断与生成式 AI在有纪律的交易工作流中的位置包括它们提供的主要收益与引入的新失败模式运用机制思维、可实现性检查implementability checks与监控逻辑诊断策略脆弱点并在独立研究者与机构两种场景下适配工作流纪律。1.1 为什么流程纪律重要第 1.1 节把流程 模型的论证讲透。作者的核心观察是模型是可替换的流程是不可替换的。一个策略在某段样本上的亮眼回测往往依赖恰好命中的机制而真正决定长期存活的是研究组织方式——数据是否 point-in-time 正确、假设是否被显式记录、结论是否经受住了探索/确认边界的检验。章内给读者提供了一套可操作的市场变化词汇表这也是后续所有章节的共同语言结构突变structural break收益生成过程的参数发生一次性、持久性的改变机制regime一段时间内收益的联合行为足够稳定、可视为同一环境均值、波动率、相关性在机制内部大致稳定机制切换时发生位移数据漂移data drift模型输入的分布随时间改变概念漂移concept drift输入到标签的映射关系随时间改变在线检测online detection以流式方式、在信息可得的时间点识别上述变化的手段。近期冲击之所以暴露脆弱假设是因为大量静态策略把过去二十年有效当成了永远有效。当机制切换时把样本内拟合误当成预测能力的策略会同时失效——这正是第 1.1 节希望读者建立的警觉。1.2 ML4T 工作流把研究变成可管理的生命周期第 1.2 节给出本书的框架性蓝图——一套研究-生产工作流其支柱包括point-in-time 正确的数据基础设施任何标签、特征都不能使用当时不可得的信息修订值、未来数据这是所有后续结论成立的前提显式的范围界定规则scoping rules明确研究什么问题、不研究什么问题避免范围蔓延迭代式特征与模型开发特征工程与建模不是一次性流水线而是循环迭代的研究模块现实的策略设计把交易成本、容量、可实现性纳入设计而不是只盯着毛利部署纪律从研究到实盘有清晰的交接与验证环节持续的在线监控漂移检测、机制监控把实盘信号反馈回研究。这套工作流的核心价值在于把交易研究变成可审计的产物auditable artifacts、清晰的交接handoffs以及在探索与确认之间显式的边界。其中证据边界是全书反复出现的纪律点仓库后续章节为其提供了大量工程化实现——例如 20_strategy_synthesis/00_holdout_predictions.ipynb 与 tests/test_best_ic_excludes_before_the_maximum.py 等测试都是在落实评估不得看到训练期之后信息的约束。探索阶段允许自由试错但一旦进入确认阶段就必须通过试验日志记录每一次尝试、用密封保留集研究阶段不可触碰的 holdout防止选择泄漏、用选择感知评估考虑到从众多候选中挑出最优本身带来的多重检验偏差校准显著性——仓库 07_defining_the_learning_task/07_multiple_testing.ipynb 对后者有专门展开。1.3 因果推断与生成式 AI 在工作流中的位置第 1.3 节刻意把两个现代方法族放进工作流内部而不是当作独立的潮流来介绍因果推断causal inference被定位为锐化机制、假设与诊断的工具它不是替代预测模型而是帮助研究者说清楚为什么这个信号会带来收益、显式写出识别假设、并对因果结论做诊断与反驳refutation。这与仓库第 15 章15_causal_estimation的整套工程DoWhy、EconML 的 DML、tigramite 时序因果发现、placebo 检验等一脉相承——例如 tests/test_causal_placebo_draws.py 与 tests/test_causal_refutation_pvalue.py 正是把因果结论必须经得起反驳落成可执行测试。生成式 AIgenerative AI被定位为扩展研究能力与非结构化数据处理的手段文档阅读、财报解析、研究助手等同时被明确标注了三个新风险泄漏leakage模型可能把未来信息编进输出、幻觉hallucination、工作流膨胀workflow bloat工具链越复杂纪律失效点越多。仓库第 2224 章22_rag_financial_research、23_knowledge_graphs、24_autonomous_agents即是这些能力与风险的工程化实验场。作者的核心立场是新工具提高的是纪律的价值而不是替代纪律。工具越多流程纪律越不可替代。1.4 市场机制检测两个可运行的 notebook 实战第 1.4 节把非平稳性变成可操作的东西并配套两个端到端 notebook。机制方法在识别不利环境并把它连接到预先定义的风险动作时最有用——机制首先是风险透镜而不是可靠的择时信号。两个 notebook 都刻意在全样本上拟合描述性并在文末明确能用于实盘决策的标签必须来自 walk-forward 拟合那套机制自第 6 章起引入。4.1 因子机制检测factor_regimesGMM 在 AQR 因子收益上找机制factor_regimes.py 的完整流程如下。数据。AQRFactorProvider().fetch(century_premia)读取 AQR Century of Factor Premia 数据集自 1927 年起、每月一行、每列一个策略的月度收益面板。数据缺失时用uv run python data/factors/aqr_download.py获取无需 API key来源为 AQR Research Librarydata/factors/aqr_download.py 同时支持--dataset按数据集下载与--data-path指定存储位置默认$ML4T_DATA_PATH或仓库data/目录。该面板由 9 个序列构成4 个跨资产多空策略Value买便宜卖昂贵、Momentum买过去一年上涨卖下跌、Carry买高收益卖低收益、Defensive买低风险卖高风险——跨股票指数、债券、货币与商品同时应用2 个美股内部策略US Stock Selection Value、US Stock Selection Momentum3 个资产类别敞口Equity indices Market、Fixed income Market、Commodities Market——它们决定一个月落在风险环境还是风格环境。预处理。任意 9 个序列中有一个缺失的月份直接drop_nulls()丢弃而非前向填充——重复前一个月的收益等于发明数据混合模型会把它当成聚类证据。随后用StandardScaler标准化到零均值单位方差面板中最宽序列的月度标准差是最窄序列的数倍不标准化则欧氏距离会被量纲最大的坐标主导分区反映的将是哪列量纲大而不是面板往哪个方向动。拟合网格。核心参数脚本顶部即生产默认值测试运行时由 Papermill 覆盖为参数默认值作用SEED42固定所有估计器的随机初始化使图表可复现GMM 由 EM 从随机起点爬坡不同起点可能落在不同局部最优并交换簇编号N_REGIMES_GRID[2, 3, 4, 5, 6]候选簇数量网格2 是最小有意义分区数6 处停止准则在 6 之前已分化MONTHS_PER_YEAR12年化月度统计量均值乘 12标准差乘 √12ROLLING_VOL_MONTHS12滚动波动率窗口宽度短到能在机制内部移动长到单月不主导估计对每个候选数拟合全协方差GMMcovariance_typefull、n_init10、reg_covar1e-6记录三个准则另拟合同簇数的 K-means 作对照再补两个准则不看的量切换次数相邻月份标签不同的次数与最小簇规模最空簇的月数。三个准则各奖励什么BIC贝叶斯信息准则对数似然按自由参数数 × log(样本量)惩罚越低越好。惩罚随样本增长在长面板上远比 AIC 吝啬于增加簇AIC赤池信息准则同样思路但每参数恒定罚 2越低越好倾向购买更多簇轮廓系数silhouette逐月比较到本簇其他月的平均距离与到最近其他簇的平均距离的归一化差取值 [-1,1]越高越好负值意味着典型月份离别的簇比离自己的簇更近——这是纯粹的几何分离陈述与似然无关。本面板上三者的裁决并不一致BIC 在 2 簇最低、轮廓系数在 2 簇最高而 AIC 一路降到 6 簇最大拟合数仍在降。AIC 买到的多出来的簇是什么看两个补充列更大的簇数带来更频繁的标签切换且至少一个簇的月数少到无法描述——一个样本的碎片配上自己的协方差改善了拟合却不是一个能被命名的机制。BIC 与轮廓系数都要求簇大到足以被描述这正是机制要出现在风控报告里的前提。据此本 notebook 选定 2 簇模型N_REGIMES_SELECTED 2。swimlane 图揭示的关键现象把每个簇数模型的逐月标签画成横向色带会发现增加簇数不会让时间线更干净只会让它更斑驳——新增的簇不是从早期模型合并掉的年代中切出时代而是从整个世纪各处抽取月份。原因在于混合模型没有时间概念没有任何机制偏好相邻月份保持同标签。这个缺失正是本节末尾把隐藏马尔可夫模型HMM点名为补足机制的原因。为簇命名Risk-on / Risk-off。簇编号无意义换种子可互换命名必须来自模型之外的锚点——这里用每个簇内持有股票指数的平均收益收益高的一簇命名Risk-on投资者加风险敞口的时期低的一簇命名Risk-off。注意这种命名与拟合一样使用了全样本是分区事后长什么样的描述不是 1929 年可执行的规则。与历史事件对照。时间线标注了七个史实1929 大崩盘、1937 衰退、1973 石油危机、1987 黑色星期一、2000 互联网泡沫见顶、2008 全球金融危机、2020 疫情。对数坐标的股票指数累计曲线按机制着色。结论是Risk-off 月份以短促爆发而非漫长熊市的形式散布在整个世纪。机制内波动率。12 个月滚动标准差年化后按机制着色虚线为各机制内均值。Risk-off 簇确实坐在世纪中波动率更高的区段上——这是机制标签与风控行动对应的第一项证据。每个因子在每种机制下赚多少。把各序列在每种机制内的月度均值乘 12 画成配对柱状图得到本书最反直觉的发现之一Value 与债券在 Risk-off 月份反而赚得更多Momentum、股票、Carry、Defensive 在 Risk-off 月份显著变差其中 Carry 与 Defensive 转负。于是平静市场里被读作安全收入的两个策略——赚取利差的 Carry、做多低风险资产的 Defensive——恰恰在环境恶化时停止支付而 Value 与债券反向而行。推论是策略的全样本平均收益说明不了它在组合真正需要的环境里是否在场——要判断一个因子是否构成分散化必须按环境条件化后去看这正是机制标签即使无人能对它下单也值得估计的原因。受限流的回撤警告。对只保留 Risk-off 月份、按日期拼接的收益流计算最大回撤数字很大跨 2007-2009 等区间、把相邻年代的亏损拼接成连续下挫。脚本郑重提醒这个数字没有任何投资者真实经历过——拼接流丢掉了中间的恢复月份把数十年内彼此分离的片段读成了一笔不间断的亏损。统计量本身不错错的是读者以为它指某个对象。一般化结论条件化统计量继承条件化的假设——均值不在乎顺序所以幸存而任何读取路径的统计量回撤、连涨连跌、恢复时间、止损一旦路径被切割就变成另一个统计量报告时不说清对象就是误导。机制能持续多久。episode 定义为连续同标签月份的最大段。两簇模型在一个多世纪的样本上切换约几十次平均每约十几个月切换一次。作者据此给出使用边界一年切换数次的标签无法驱动再配置——每次切换都要付交易成本包括模型一个月后自己反转的切换同一标签作为历史透镜和风控报告的输入则完全合格。若要构造可执行的机制模型需要转移结构让留在原机制比离开更可能——HMM 是标准选择且随时间向前拟合。仓库中的 09_model_based_features/11_hmm_regimes.ipynb 构建前者09_model_based_features/13_regime_as_feature.ipynb 把结果变成下游模型可读的特征。figure 1.5 工件输出。脚本把日期、2 簇标签、滚动波动率、各机制均值波动等数组写入get_output_dir(1, factor_regimes)/figure_1_5/inputs.npz书籍印刷版的 Figure 1.5 直接读取这些数组绘制而非重新估计——保证书图与 notebook 拟合严格一致。4.2 宏观机制检测macro_regimes从 FRED 指标找机制并用市场数据独立验证macro_regimes.py 问一个更难的问题不借助任何收益数据能否从宏观条件中恢复同一类分区它的吸引力在于从收益估计的机制有复述自己所拟合的波动率的风险而从劳动力市场与利率环境估计的机制是关于条件的陈述之后再用股市行为去检验——这个检验正是把发现了东西的机制模型与切分了日历的机制模型分开的第二部分。数据与准备。load_macro()返回宽表每日日期索引 × 每列一个序列非日频序列前向填充至日频元数据由load_macro_metadata()提供列含义、发布频率、是否为派生序列。需要FRED_API_KEY并先运行一次uv run python data/macro/download.py支持--dry-run仅做计划详见 data/macro/README.md。标普 500 日线由load_sp500_index()读取随仓库自带、无需下载。核心参数参数默认值作用N_REGIMES4簇数固定为 4取自本 notebook 沿用的 Two Sigma 研究18 因子面板报 4 机制是选择而非结果——准则比较见 factor_regimesPANEL_START2002-01-01面板最早月份FRED 文件自 2000 年起留两年是因为同比通胀率需要此前 12 个月MAX_MISSING_SHARE0.5扩展面板中缺失占比超过该值的序列被剔除MIN_COPHENETIC0.7树状图忠实概括距离矩阵的惯例阈值四个核心指标每个代表一个可命名的条件UNRATE失业率——劳动力市场状态DFF有效联邦基金利率——货币政策立场T10Y2Y10 年减 2 年美国国债收益率——收益率曲线形状负值倒挂是战后多数衰退的前兆CPIAUCSL消费者价格指数——以变化率进入原因见下。月度对齐的诚实细节。日频面板用group_by_dynamic(every1mo, labelright)切月并取last()先按窗口右缘打戳1 月的窗口盖 2 月 1 日戳保证行内只有 1 月的数据再offset_by(-1d)回退到该月最后一天——否则4 月失业率被读成 5 月图表轴、打印日期与交付给书籍构建的数组都会集体错位一个月。为什么物价指数必须用变化率而非水平。CPI 几乎逐月上升按水平聚类会让所有早期月份在一个簇、所有晚期月份在另一个簇——因为水平列的最大方差来源就是趋势本身得到的机制实为对日历的陈述。取同比百分比变化pct_change(MONTHS_PER_YEAR)剔除趋势代价是丢掉前 12 个月。另外三个指标本就是比率无需处理四列同以百分点计但量纲范围差异大失业率跨数点、利差跨零点几分故仍需标准化否则距离几乎全由失业率决定。拟合与命名。与 factor_regimes 同款估计器full covariance、n_init10、reg_covar1e-6、固定种子。聚类输出数字经济名称由手写阈值规则按固定顺序赋予规则集中写在一处以便被争论条件按序判定取簇均值命名unrate 10Crisisunrate 6 且 dff 0.5Recovery危机余波高失业但政策利率在地板dff 3 且 t10y2y 0.5Tightening高政策利率 平坦曲线cpi_yoy 4Inflationunrate 5 且 dff 2Expansion其余Transition脚本明确声明聚类是估计的命名是断言的——换一个读者改阈值就会给同一分区换名字且有守卫逻辑if len(set(cluster_names.values())) ! len(cluster_names)抛错防止两个簇撞名。独立验证聚类从没见过市场数据。标普 500 月度收益、年化波动率与最大回撤按机制分组。关键统计口径年化波动率 机制内月度收益标准差 × √12只描述该机制的月份最大回撤 在整个指数日历顺序的运行峰值上逐月度量报告的是指数在条件处于该机制时达到的最深跌幅——它回答的是指数触底时哪个机制在执政而非只在该机制持仓的账户回撤。验证结果一半通过、一半失败而两半都有教学价值通过的一半波动率排序波动率从平静到喧嚣的排序在经济上可读——Tightening 是政策利率昂贵但市场平静含异常物价或异常失业率的机制波动更高。聚类从未见过收益排序没有被强制是真正的独立证据失败的一半回撤列回撤不随波动率排序。面板最深跌幅约 -50% 量级落在被命名为 Recovery 的机制——高失业 政策利率在地板。这个组合恰恰是央行对崩盘的响应所以标签与崩盘同时抵达而非提前。风控报告最想预警的机制恰是这个模型只能事后确认的机制——这是宏观机制作为环境描述器而非预测器的最干净例证。扰动分析这个分区经得起多大改动用调整兰德指数adjusted Rand index月份对的同/异簇一致率重标定后随机重命名 0、完全一致 1度量两次分区的共识。扰动两族(1) 换随机种子 0/7/123/2024 重拟合(2) 丢弃面板前 1/3/6/12 个月后重拟合。结果显示所有扰动与基准拟合的共识都低到足以改变命名规则的走向——有些扰动甚至分裂出小到命名规则换分支的簇。作者的处方不是挑名字最好看的拟合而是写清楚拟合了什么、在什么窗口上、从哪个起点出发并把扰动表与结果一起发布任何在如此低共识下会崩溃的下游结论都不被这个模型支撑。这正是本章论点浓缩成的一张表模型平平无奇、四行代码就能拟合把可用结果与轶事分开的是拟合之后的检查以及在不体面时如实报告的纪律。扩展面板反事实实验counter-experiment。把除核心四列外的所有序列约 30 列超过缺失比例阈值 50% 才剔除喂给同一 GMM得到四个模型对比模型说明Core, 4 chosen series四列核心模型基准Extended, N series全部保留序列直接进 GMMExtended, 10 principal components先 PCA 降维再进 GMMExtended, k-means同面板的 K-means 对照扩展面板的轮廓系数更高——这是个陷阱。面板里混进了130 年各期限美债收益率几乎同一条曲线、一个10Y-2Y派生列与面板已有列是同一序列的两份拷贝、按季度发布因而月度重复的 GDP、以及以水平进入的三个价格指数正是核心面板对 CPI 拒绝的处理。脚本用duplicate_pairs()找出完全相同容差 1e-9的列对、用(df.diff() 0).mean()度量与上月完全相同的占比再画 small multiples缓慢趋势主导整个面板只有 VIX 与初请失业金在尖峰。PCA 给出数字两个方向就解释了约八成方差——主方向是趋势本身第二方向是长端利率水平二者都不是机制而真正在条件破裂时移动的 VIX 与初请失业金要到第三、四主成分才出现且方差占比很小。致命的判据是episode 计数一个机制必须能回到自己离开过的条件才算恢复性条件而把日历切成连续区块的模型episode 数等于簇数且永不回访。扩展模型把样本切成与簇数相等的连续大块、从不回访任何簇——它把日历分割成了连续年代而核心模型确实回访因此能把 2008 余波与 2020 余波叫成同一件事。轮廓分数奖励前者因为趋势面板的连续年代在距离空间中天然相距甚远。一般化教训分离分数回答这些组离得够远吗机制模型必须回答下次同样条件到来时这个标签能否提前告诉我什么——两个问题没有理由同答案而无判断装配的面板正是它们分道扬镳的地方。对指标聚类而非对月份聚类。Ward 链接对标准化列建树用cophenetic 相关树首次合并高度与原始成对距离的相关接近 1 才是忠实概括评估。树在零距离处首先合并两个10Y-2Y同名序列两份拷贝随后聚合出只趋势的序列短中期美债收益率曲线形状 失业率最后才在最远距离合并 VIX 与初请失业金——唯一在危机时间尺度上移动的部分。树的局限同样被声明它不替研究者选面板双胞胎列保留哪个取决于数据无法提供的理由列的含义、发布是否赶得上决策时刻。4.3 两个 notebook 共同沉淀的方法论簇数是决策不是估计BIC/AIC/轮廓系数奖励不同目标必然分歧选与标签用途匹配的目标并说明选了哪个、为什么簇编号无意义直到模型之外的东西命名它换种子可重编号而不改变分区先条件化环境再信任因子均值全样本溢价可能完全来自单一环境——这在池化数字里不可见却决定它是否构成分散化说明条件化统计量的构造把机制月份拼接成流其回撤没有任何投资者经历过同一数字是信息还是误导取决于是否声明构造方式全样本拟合买到的是描述不是预测每个标签都被其后的月份告知不能当特征使用walk-forward 才使标签可用自第 6 章起引入水平还是变化率是第一个决定不是预处理细节趋势列进聚类 把日历穿经济外衣分离分数不是验证用 episode 计数问模型是否回访是更便宜的真问题更多序列不等于更多信息九条美债期限 双份利差 两个 GDP 是一个只有少数方向的面板命名是断言混合模型给分区每个经济名都来自手写阈值规则用模型没见过的数据验证机制模型这些机制未见过任何市场数据故股市波动与回撤是独立检查——一半通过、一半没通过写之前先扰动拟合不同随机起点或短 3 个月的样本就能改变命名走向把扰动表与结果一起发布。两处已知限制同样被如实写出FRED 只提供最新修订值任何数字都不是它标注日期当天可得的策略若要使用须走load_macro_initial_release且等待发布滞后——失业率当月值要到下月初才发布混合模型无时间概念、无转移结构宏观面板的长 episode 来自指标自身慢变而非模型。仓库中的 data/macro/loader.pyload_macro/load_macro_metadata/load_macro_initial_release与 data/equities/loader.pyload_sp500_index即这两个 notebook 的全部数据入口。1.5 独立研究者与机构的真实工作流第 1.5 节把工作流翻译进真实运营语境机构受益于内置的摩擦与审查——多级评审、风控隔离、责任分离这些摩擦本身就是纪律的载体独立研究者没有这些内置结构必须自己建立治理——通过文档化、检查点checkpoint与显式的停止标准stop criteria来补足。作者特别指出独立从业者的脆弱点无人复核、容易自我确认、缺乏强制交接以及仍可竞争之处决策链短、可快速迭代、可完全掌控数据与假设。一个贯穿性的实操主张是可复用基础设施会随时间复利。把数据加载、point-in-time 校验、评估框架、扰动检查做成模块本仓库即为此而建——utils/、data/、case_studies/utils/都是这种可复用基础设施每一次研究的质量门槛都会抬升而不是每次从零搭台。这正是仓库 06_strategy_definition/exploration.md 与各 case_study 目录所实践的形态。运行与验证方式README 给出两条标准运行路径均在仓库根目录执行# 从仓库根目录运行任意 notebook.py 为 jupytext 可执行版本 uv run python 01_process_is_edge/factor_regimes.py uv run python 01_process_is_edge/macro_regimes.py # 测试模式Papermill 以缩减数据重跑整章 notebook uv run pytest tests/test_chapter_notebooks.py -v -k 01_process_is_edge数据准备仅在缺数据时需要uv run python data/factors/aqr_download.py # AQR Century of Factor Premia无需 key # 设置 FRED_API_KEY 后 uv run python data/macro/download.py # FRED 宏观面板--dry-run 仅计划 uv run python data/macro/download_alfred.py # 首次发布initial release版本数据几个环境前提notebook 标注的 Docker 镜像为ml4t数据根目录由ML4T_DATA_PATH控制默认仓库data/AQRFactorProvider从data/factors/aqr读取set_global_seeds(SEED)由 utils/reproducibility.py 提供确保全部估计器可复现AQR 加载器通过structlog记录下载与缓存决策notebook 将其阈值提到WARNING以保持加载单元可读。测试侧tests/test_chapter_notebooks.py 通过 Papermill 注入参数覆盖生产默认值来运行缩减版另有 tests/test_chapter_imports.py 守护章节脚本可导入性。延伸阅读仓库内01_process_is_edge/factor_regimes.ipynb因子机制检测完整 notebook01_process_is_edge/macro_regimes.ipynb宏观机制检测完整 notebook对应书图 Figure 1.609_model_based_features/11_hmm_regimes.ipynb 与 09_model_based_features/13_regime_as_feature.ipynb把机制标签升级为可执行特征的后续工程data/factors/aqr_download.py、data/macro/README.md、data/macro/loader.py、data/equities/loader.py两个 notebook 的数据基础设施07_defining_the_learning_task/07_multiple_testing.ipynb探索/确认边界与多重检验的展开。参考文献章内引用Ang, A., Bekaert, G. (2002). International Asset Allocation With Regime Shifts.Review of Financial Studies.Arnott, R. D., et al. (2018). A Backtesting Protocol in the Era of Machine Learning.Duffie, D. (2020). Still the Worlds Safe Haven? Redesigning the U.S. Treasury Market After the COVID-19 Crisis.Easley, D., et al. (2012). The Volume Clock: Insights into the High Frequency Paradigm.Fabozzi, F. J., et al. (2024). Paradigm Shift: Embracing Holism in Causal Modeling for Investment Applications.The Journal of Portfolio Management.Fabozzi, F. J., Stenholm, C. C. (2025). Strategic Discipline: How Asset Management Mirrors Military Operations.The Journal of Portfolio Management.Fang, Z., Moore, J. (2025). What AI Can (and Cant Yet) Do for Alpha.Giglio, S., et al. (2022). Factor Models, Machine Learning, and Asset Pricing.Annual Review of Financial Economics.Harvey, C. R., et al. (2016). …and the Cross-Section of Expected Returns.Review of Financial Studies.Horvath, B., et al. (2021). Clustering Market Regimes Using the Wasserstein Distance.Ilmanen, A., et al. (2021). How Do Factor Premia Vary Over Time? A Century of Evidence.Lee, J. (2025). Man Group Says Agentic AI Is Now Devising Quant Trading Signals.Bloomberg.com.Lo, A. W. (2004). The Adaptive Markets Hypothesis: Market Efficiency from an Evolutionary Perspective.Luk, M. (2023). Generative AI: Overview, Economic Impact, and Applications in Asset Management.Pearl, J. (2019). The Seven Tools of Causal Inference, with Reflections on Machine Learning.Communications of the ACM.López de Prado, M. (2018). The 10 Reasons Most Machine Learning Funds Fail.The Journal of Portfolio Management.López de Prado, M., et al. (2024). The Case for Causal Factor Investing.López de Prado, M., Zoonekynd, V. (2025). Correcting the Factor Mirage: A Research Protocol for Causal Factor Investing.The Journal of Portfolio Management.Ryseff, J., et al. (2024). The Root Causes of Failure for Artificial Intelligence Projects and How They Can Succeed: Avoiding the Anti-Patterns of AI.Schölkopf, B., et al. (2021). Towards Causal Representation Learning.Studer, S., et al. (2021). Towards CRISP-ML(Q): A Machine Learning Process Model with Quality Assurance Methodology.Machine Learning and Knowledge Extraction.Uysal, A. S., Mulvey, J. M. (2021). A Machine Learning Approach in Regime-Switching Risk Parity Portfolios.The Journal of Financial Data Science.【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考