数据与代码

Data & Code

五篇论文所用的数据、本站图表背后的数据文件,以及 NA-IPCA 工具包:它做什么、如何校验、如何申请。

申请工具包(电子邮件) · 源代码与安装包可应要求提供

NA-IPCA v1.2.0 与 GCDE v1.2.0 · 2026 年 7 月 4 日发布,2026 年 7 月 5 日冻结并自行认证 · 论文尚未发表,代码仅应学术用户要求提供 · 申请代码 · 更新于 2026 年 10 月

各论文使用的是多数高校持有、需授权使用的美国股票数据。无套利 IPCA(NA-IPCA)的估计代码已与另一套实现相互校验,在论文发表之前仅向提出申请者提供。下面列出:各数据集、本站图表背后的数据文件,以及 NA-IPCA 工具包能做什么。

数据

个股层面的面板数据不由本站分发。每一条目说明数据来自哪里、哪篇论文使用、在第几页。

数据集

Jensen–Kelly–Pedersen 特征库

153 个美国股票特征,分为 13 个主题,由 Jensen、Kelly 与 Pedersen 基于 CRSP 与 Compustat 构建。个股层面的文件在 WRDS(contrib.global_factor);因子收益与代码在 jkpfactors.com。这一特征库是《尺子很重要》的估计面板,该文把完整特征库与其中固定的 36 个特征子集作比较(第 II.A 节,第 8 页;表 I,第 10 页);也是《解读定价误差》的估计面板(第 3.1 节,第 8 页)。《预测相同,组合不同》使用其处理后面板中可得的 132 个特征,该面板不能再分发(第 III.A 节,第 16 页;第 43 页;网络附录 IA.K,第 IA-54 页)。《特征空间度量》只用一个按此定义构建的面板(1962 年 1 月至 2025 年 12 月)来校准模拟(第 8.1 节,第 30 页;表 I,第 31 页)。

引用:Jensen, T. I., B. Kelly and L. H. Pedersen (2023). “Is There a Replication Crisis in Finance?” Journal of Finance 78(5), 2465–2518. doi:10.1111/jofi.13249

CRSP 与 Compustat(沿用 Kelly、Pruitt 与 Su,2019)

证券价格研究中心(CRSP)的月度股票收益与 S&P Global Compustat 的公司财务数据,均通过 WRDS 获取。《几何框架》构建面板时,沿用了提出工具化主成分分析(IPCA)那篇论文的复制数据集,以及该数据集的时间对齐约定与截面秩变换(第 6.1 节,第 26–27 页)。IPCA 以特征作为工具变量,刻画每只股票随时间变化的因子载荷(贝塔),即股票随共同因子变动的强弱。该面板含 36 个特征加一个常数项(L = 37),覆盖 1964 年 7 月至 2014 年 5 月共 599 个月、12,813 家公司。表 6(第 32 页)给出每个特征对应的 WRDS/Neuhierl 变量代码。《尺子很重要》把特征与 CRSP 的月度收益和交易状态配对,并按 CRSP 证券代码的固定哈希把股票分为源股票池与目标股票池(第 II.A 节,第 9 页;网络附录 IA.2,第 58 页)。

引用:Center for Research in Security Prices, University of Chicago Booth School of Business; S&P Global Compustat; both via Wharton Research Data Services. Kelly, B. T., S. Pruitt and Y. Su (2019). “Characteristics Are Covariances: A Unified Model of Risk and Return.” Journal of Financial Economics 134(3), 501–524. doi:10.1016/j.jfineco.2019.05.001

Fama–French 因子与组合

Kenneth R. French 数据库提供的月度因子收益、无风险利率,以及 25 个双重排序组合的收益。《预测相同,组合不同》把五个因子用作可观测因子(第 III.A 节,第 16–17 页)。《尺子很重要》把五个因子加动量因子(FFC6)用作可观测因子(第 II.B 节,第 11 页)。

引用:Fama, E. F. and K. R. French (1993). “Common Risk Factors in the Returns on Stocks and Bonds.” Journal of Financial Economics 33(1), 3–56. doi:10.1016/0304-405X(93)90023-5. Fama, E. F. and K. R. French (2015). “A Five-Factor Asset Pricing Model.” Journal of Financial Economics 116(1), 1–22. doi:10.1016/j.jfineco.2014.10.010

NBER 衰退日期

NBER 商业周期测定委员会公布的美国经济周期峰谷月份。《预测相同,组合不同》在图 2 中以阴影标出衰退期(第 23 页),并分别报告两种经济周期状态下的组合表现(第 VI.C 节,第 39 页);本站只把它用作该文页面上网络附录比较图的阴影背景。

引用:National Bureau of Economic Research. “US Business Cycle Expansions and Contractions.”

本站数据

本站每张展示研究结果的交互图,都从 /data/ 加载一个 JSON 文件。这些文件由本站公开代码仓库中的 Python 流程生成,数据取自各论文的研究发布包;首页图 1 则取自作者的研究统计表。JSON 文件只含汇总结果;这些来源均未公开。每次发布前,每个文件都会与重新生成的版本核对,其 meta 块列明来源。

文件 图 来源
hero_overlap.json 首页图 1 作者基于 153 个特征的 Jensen–Kelly–Pedersen 特征库计算的描述性统计表(20 年窗口);不取自本站任何一篇论文
ruler_holdings.json 《尺子很重要》:用两把尺子分别对冲 工作论文,表 IA.2(第 63 页)
ruler_updating.json 《尺子很重要》:尺子的当月版本与年度起点版本 工作论文,图 6(第 35 页)、表 IA.31(第 97 页)
ruler_partial_hedge.json 《尺子很重要》:部分对冲 工作论文,表 VII(第 46 页)
sf_penalty_curves.json 《预测相同,组合不同》:夏普比率随惩罚的变化 工作论文,图 1(第 4 页)、表 I–II(第 19、24 页)
sf_mean_input.json 《预测相同,组合不同》:组合使用拟合均值的哪一部分 工作论文,表 III(第 30 页)
hero_geometry.json 无图;保留用于《预测相同,组合不同》页面附注所引的尺子统计量 2026-09-09 研究发布包(表 IA.L.1,第 IA-62 页)
portfolio_formation.json 《预测相同,组合不同》:网络附录中的比较 同一发布包(表 IA.G.1,第 IA-35 页)
csm_coverage.json 《特征空间度量》图 2 存档的模拟证据(表 II、图 2)
pe_specifications.json 《解读定价误差》图 3 工作论文,表 G.1

研究工具所用的 JSON 文件,列在下面各工具的数据约定中;它们同样由作者的存档生成,只含汇总结果。

研究工具:数据约定

研究工具栏目中的每项工具,都用一个存档示例演示。下面的约定逐项说明:功能读入什么、写出什么、代码检验到什么程度、哪些内容不公开。成熟度标签与各工具页一致:已实现并测试 存档研究示例 计划中的扩展。

收益状态行为画像

项目 约定
输入 逐月数据:date(排序、不重复、月份连续),同一批月份的 strategy_return 与 benchmark_return(小数形式的收益),可选的 cash_return;以及元数据:来源、币种、成本口径(扣除成本后的净收益或扣除前的毛收益)、最近更新日期和是否允许公开。市场状态只由基准决定;因子、信号或股票特征都不会直接进入。
设置 收益序列(七条:四条来自存档,三条由公开的市场收益和国库券收益构建)与状态定义(十分位 10/90、尾部 5%;五分位 20/80、尾部 10%;十分位 10/90、修复回撤 −10%),只用全样本。不公开半样本结果:它们会让私有收益序列的个别月份从汇总统计中被反推出来。
输出 每条序列、每种定义下:八项按状态计算的指标(原始值、单位、标准误与 95% 区间、雷达图标准化得分及截断标记)、状态规则、各状态的 n、阈值、日期范围、基准,以及 n 小于 15 时的提示。页面上可导出当前视图的 CSV;全部 21 组结果见 return_state.json。
本站文件 return_state.json,供工具页上的交互图使用:由存档的策略白皮书(2026 年)中的月度回测数据表生成;只含汇总统计。
示例 存档的系统化美国股票多空策略回测(白皮书标题称之为“Regime-Aware”,即状态感知型,但组合规则本身并不随市场状态切换):月度数据,2007 年 4 月至 2025 年 11 月(224 个月),已扣除在调仓月份计提的买卖价差成本代理(平均每月 0.73 个百分点)。该代理不含融券、融资和市场冲击成本;组合在整个股票池中等权配置,容量未作评估。这是历史回测,不是实盘交易,也未经审计。该配置是在更早的研究中从多个方案里选出的(选择偏差未作校正),其信号载荷的估计样本也可能与回测期重叠,因此不是样本外结果。
代码状态 已实现并测试 本站公开代码仓库中的 pipeline/exhibits/return_state.py,测试覆盖输入校验、与存档雷达数据表的一致性(误差在 1 × 10⁻⁸ 以内)、状态计数、置信区间、只输出汇总统计,以及一项披露筛查:私有收益序列的任何单个月份都无法由公开的线性汇总统计精确解出(作者自定上限的启发式检查,并非隐私保证)。目前只在这一存档上验证过;其他收益序列,以及更换序列背后的因子,属于计划中的扩展。
公开内容 汇总统计(各状态的月数、阈值和八项指标)与代码。
不公开内容 月度收益序列及其所在的白皮书数据表;上游的信号、组合与回测代码。以上均不公开。
如何申请 招聘团队可发邮件至 yang.liu19@imperial.ac.uk,预约讲解代码及其测试。请不要发送专有收益数据:本站没有处理这类数据的安全机制。

宏观预测评估与状态诊断

项目 约定
输入 逐起点的预测记录:预测起点月份、预测期、模型、实际值和预测值,每个模型、每个起点、每个预测期一条记录,所有模型共用同一个目标变量定义;事先固定的基准模型;用于持续性跟踪的月度持续性估计。用于新的问题时,每个预测变量的取值都须注明首次可得的日期(数据版次或发布日期)。
设置 输出版本、预测期、模型和窗口(各模型自身的窗口,或所有模型的共同窗口)。
输出 各模型的 n、RMSE、MAE 和方向命中率;相对基准模型的 RMSE;逐起点的损失差及其累计值;Diebold–Mariano 检验(与原始检验相同的等权长期方差,滞后 h − 1 期,Harvey–Leybourne–Newbold 小样本修正;另以 Newey–West(Bartlett)方差下的 p 值作敏感性检验);按信号状态拆分的预测误差。全部见 forecast_eval.json。
本站文件 forecast_eval.json,供工具页上的交互图和表使用:由作者 2026 年 2 月的英国服务业通胀研究运行结果和 ONS 数据(开放政府许可)生成。其 meta 部分记录了每个存档源文件的 SHA-256 哈希值、一致性检验结果和代码版本。
示例 英国服务业通胀,2026 年 2 月研究快照:两次存档运行(2026 年 2 月 23 日和 24 日),以及一次仅用起点前已观测结果训练的重新估计(平滑状态、全样本标准化和最新版次数据仍带有前视偏差);ONS 月度数据截至 2025 年 12 月(MM23,2026 年 2 月 18 日发布)。这些是存档的预测,不是预测服务。
代码状态 已实现并测试 本站公开代码仓库中的 pipeline/exhibits/forecast_eval.py,有基于合成数据的单元测试(包括人为构造的错误输入记录),与存档的模型比较汇总表差异在 10⁻⁹ 以内;其中的扩展窗口预测函数复现最新一次运行存储的预测,误差在 10⁻¹⁰ 以内。从公开仓库克隆后,可运行合成数据测试以及页面与 JSON 的一致性检查;与存档表格的一致性测试需要私有存档,会自动跳过。存档研究示例 数据下载、状态空间平滑和滚动回归,本站未重跑。计划中的扩展 读取新记录文件的加载器;其他变量、预测变量和国家。
公开内容 汇总统计、逐起点的累计损失差、月度持续性估计和 ONS CPI 序列(开放政府许可 v3.0),以及评估代码。
不公开内容 复现文件夹:原始下载数据、处理后的输入、估计脚本和逐起点预测文件。以上均不公开。
如何申请 ONS 序列可在英国国家统计局网站公开获取。如需讲解评估代码及其测试,请发邮件至 yang.liu19@imperial.ac.uk。

代码

《预测相同,组合不同》中含截距拟合的 618 个滚动窗口,由 naipca 与 gcde 两个 Python 包估计,这两个包合并发布为 NA-IPCA v1.2.0;其中两个不含截距的 IPCA 拟合通过单独的 QZ-IPCA 基准包(v1.0.1)运行。《几何框架》与《特征空间度量》阐述的 NA-IPCA 模型家族,也由这两个包实现。《解读定价误差》估计的是基于特征的潜在因子模型,模型带有截距(基准为三个因子;第 3.2 节,第 9 页),并以岭回归作为对照基准(第 8 页);潜在因子与截距的含义见下文“模型家族”一节。《尺子很重要》估计含三个潜在因子与 FFC6 的 IPCA,分别带与不带特征截距,特征库为 36 个与 153 个特征(第 II.B 节,第 11 页)。《预测相同,组合不同》(第 43 页;复制材料可应要求提供)、《尺子很重要》(网络附录 IA.2,第 58 页)与《特征空间度量》(第 38 页)各自附有复制材料,与工具包分开。

模型家族

每个模型最多有三块:潜在因子(模型从数据中推断的共同驱动因素)、可观测因子与截距(本模型中没有被任何因子解释的那部分预期收益)。三个模型的区别在于用哪把尺子(度量)衡量,以及如何处理截距。

模型 尺子 截距 新增内容
IPCA(Kelly、Pruitt 与 Su,2019) 普通尺子(欧氏度量) 可选,无上限 基准模型:以特征作为工具变量刻画因子载荷(贝塔),即每只股票随共同因子变动的强弱
QZ-IPCA 特征尺子(格拉姆度量)Q_Z,外部给定,例如 Q_Z 的指数加权移动平均(EWMA)版本 无 同一模型改用特征尺子衡量
NA-IPCA 特征尺子 Q_Z,外部给定 联合估计,受上限 \Gamma_\alpha' Q_Z \Gamma_\alpha \le \delta 约束 把截距作为第三块;名称中的“无套利”(NA)即指这一上限(在《预测相同,组合不同》的每个窗口中,这一上限都未触及,即约束不紧)

两个软件包

naipca 用投影交替最小二乘估计 NA-IPCA:轮流求解因子与各载荷块(载荷即股票随各因子变动的强弱),再把载荷投影回约束集,反复交替,直到对特征管理组合收益的拟合不再改善为止。它在读入时校验传入的尺子,无效则拒绝而不修补;若尺子有效但条件数过大(病态),求解器会把它向一个缩放后的单位矩阵收缩,收缩量取能完成分解的最小值,并把这一收缩量(QZ.lambda)写入审计记录。缺失观测通过可用性掩码处理,绝不插补。

gcde(几何构建与诊断引擎)从逐月的特征格拉姆矩阵构建特征尺子(格拉姆度量 Q_Z)并给出报告:37 种已登记的构建方法(含参数别名),分六类(基准、收缩、特征值修复、自适应条件数控制、低秩、滚动或指数加权)。另有三个诊断模块(谱、子空间、动态)与四个校验标签(STABLE、WATCH、HIGH_ANISOTROPY、FAIL_NOT_SPD)。因为构建与估计是两个独立的程序,每次运行都记录用了哪把尺子、怎样构建、取自哪个窗口。没有任何一种构建被认证为最优:尺子是一种度量约定。

校验与可复现性

校验。30 个回归测试用例全部与作者持有的另一套 MATLAB 参照实现一致,差异不超过 2.97 × 10⁻¹⁴。求解器按设计拒绝了全部 5 个无效尺子(度量矩阵)。求解器没有任何随机成分,所以输入相同,输出逐位相同。默认参数附有配置冻结证书,从不就地重新调参。每次拟合都附带审计记录:初始化来源、尺子、数据集与配置的 SHA-256 指纹、稳定化收缩量、收敛情况与运行时间。发布文件以 SHA-256 锁定,《预测相同,组合不同》背后 618 个估计窗口的每一个都记录了发布文件的哈希值;申请者随认证材料获得这些哈希值。

滚动估计

滚动、扩展与在线估计是同一个循环:上一窗口的结果就是下一窗口的热启动。一个带版本号的状态对象(NAIPCAState)携带载荷、指纹与谱系;维数或因子个数不匹配的热启动会被拒绝。工具包随附的运行时间基准测试是一个小型合成设计:6 个重叠窗口(60 只股票、10 个特征、每窗 36 个月)。在该测试中,就第一个窗口之后的各窗口合计而言,热启动使求解器迭代次数减少约 55%,运行速度约为冷启动的 2.2 倍。有一个窗口热启动反而慢于冷启动。同一窗口重新拟合由 14 次迭代降至 2 次。

如何使用

  1. 由秩变换后的特征构建逐月格拉姆矩阵。
  2. 用 gcde 构建尺子,即格拉姆度量 Q_Z(gcde 默认取各月格拉姆矩阵的平均;《预测相同,组合不同》用 EWMA 版本,第 17 页),查看诊断。
  3. 用 naipca 拟合:传入数据映射、尺子、潜在因子与可观测因子的个数,以及截距上限;读取 diagnostics_summary。
  4. 用 warm_start 逐窗口滚动,保存每个窗口的审计记录。
from naipca import fit_naipca, load_frozen_config, diagnostics_summary

# D: data mapping; Q: characteristic geometry from the GCDE toolkit
config = load_frozen_config(overrides={"max_outer": 1000, "tol_outer": 1e-6})
result = fit_naipca(D, geometry={"Q": Q, "method": "raw_mean_w"},
                    K_lat=3, K_obs=5, delta=0.05, opts=config.options)
print(diagnostics_summary(result))

工具包 README 中的快速上手示例(英文原文)。K_lat、K_obs:潜在因子与可观测因子的个数;delta:约束 \Gamma_\alpha' Q_Z \Gamma_\alpha \le \delta 中的上限 \delta,限定截距最多能承载多少预期收益。

获取方式

可应要求提供。论文尚未发表,源代码与 wheel 安装包不公开发布。学术用户可发送电子邮件至 yang.liu19@imperial.ac.uk 申请,请注明姓名、单位与用途。申请者将获得冻结的 v1.2.0 发布包:naipca 与 gcde 的 wheel 包及 SHA-256 校验文件、认证材料(发布证书与配置冻结证书、一致性测试与热启动测试日志、发布文件哈希)、无需专有数据即可运行的示例,以及研究中使用的估计脚本与一个窗口的审计样本;需授权使用的特征面板不在其中。招聘团队也可发送电子邮件(主题 “NA-IPCA walkthrough”)预约一次简短的代码演示,内容包括源码、测试日志和一份审计记录。请引用:Liu, M. (2026). NA-IPCA: Geometry-Aware Characteristic-Based Asset Pricing (QZ-IPCA and NA-IPCA toolkits), version 1.2.0.

手册与许可

《NA-IPCA 手册》(The NA-IPCA Handbook,草稿 4.1 版,2026 年 7 月,189 页;不随发布包提供)涵盖记号、尺子构建与选择、估计算法、选项、诊断、排错,以及一套实践决策流程。许可:NA-IPCA Academic Research License v1.0(2026 年 7 月),学术研究、教学、复制与基准比较可免费使用,须注明引用;商业使用、再分发与衍生工具包须取得书面许可;修改后的副本不得冒充认证版本。

使用许可

页面文字与本站 JSON 数据文件:CC BY 4.0;其中的第三方数据序列沿用其原有条款(ONS 序列:Open Government Licence v3.0)。工具包版权归作者所有,依 NA-IPCA Academic Research License v1.0 授权使用,不在本许可范围内。(查看许可协议)