跳到正文

用平实的语言介绍这个项目

一个看起来比实际好一倍的系统。

这个项目把新披露的 SEC 文件按“有多大可能重要”排序。真正有意思的不是排序本身,而是:早期版本的得分大约是诚实版本的两倍,原因只是对一个时间戳的假设,而这个差异被测量出来并公开发布,而不是悄悄改掉。

要解决的问题

每天申报的量,没人读得完

上市公司持续在申报,而其中大部分并不会改变什么。想要跟上的人,每天早上都要决定当天哪些文件值得打开——这个决定通常只凭标题、凭公司规模,或者干脆不做。

所以这个项目问的问题很窄,也可以核对:在今天申报的全部文件里,哪五份应该先读?排序结果可以对照之后实际发生的情况来评分,这也是选择排序而不是任何需要预测价格的做法的原因。

评估覆盖 957 个交易日内的 9,721 份申报文件,每个交易日的中位数为 9 份。

数据来自哪里

三类来源,各有自己的观察时间

  • SEC 申报文件

    来自 EDGAR 的 8-K 披露,并保留受理时间戳——也就是该文件真正对外公开的时刻,而不是文件上印的日期。

  • 日线价格

    复权后的日开盘价、最高价、最低价与收盘价,用于测量披露之后发生了什么,以及构建公司页上的历史走势。

  • Company Facts

    已申报的财务数字,附带其会计概念、单位与报告期间,用于“财报结果”部分,而不是用于排序模型。

没有任何数据是购买的、从终端抓取的或人工录入的。全部输入要么是公开申报文件,要么是供应商复权价格序列,评估过程还记录了每一项的行数与内容哈希。

做什么与不做什么

明确的边界

它做什么

  • 按“之后出现异常大幅、经基准调整后的波动”的估计概率,对当天的申报文件排序。
  • 在模型从未训练过的交易日上,把这个排序与实际发生的情况作对照测量。
  • 公开测量结果、失败的尝试,以及支撑两者的证据文件。

它不做什么

  • 不提供投资建议、目标价或买卖判断。
  • 它估计的是反应的幅度,从不估计方向。大幅波动可能朝任一方向。
  • 历史排序结果不等于交易收益。这里没有考虑交易成本、滑点、容量,也没有计入判断错误的代价。

测出来是多少

诚实测量下的得分

19.8%模型每天排在前五的文件中,重要文件的平均占比
11.6%同一指标,但随机选五份
766参与测量的交易日

这个数字的含义。 它是每天前五名中事后被证明重要的平均占比。它不是“前五名里至少找到一份重要文件”的概率,也不是按天计算的成功率。在一个典型交易日里选五份,它意味着其中大约有一份是重要的。

平均精度的 95% 区间为 36.5% 至 43.0%,来自按交易日聚类的自助重采样,共 2,000 次抽样。只给点估计而不给这个区间,会让结果显得比样本所能支撑的更精确。

那个时间戳

对一个时间戳的假设

文件在某一分钟被受理,读者只能在那之后行动。最初的流水线却按申报“日期”建仓——对于收盘后受理的文件,这意味着在它存在之前就已建仓。模型的其他部分没有任何改动。

在相同的交易日上测量,这条捷径得到 31.2%,而诚实流水线得到 19.8%。下表每一行都再去掉一项模型本不该知道的信息。

每一阶段去掉一种“事后才知道”的信息。最后一行就是产生本站全部公开数字的流水线。
阶段每日前五占比平均精度不可能成立的建仓占比
Naive pipeline31.2%59.7%96%
+ purged, embargoed CV31.2%59.0%96%
+ shifted trailing features27.4%43.9%96%
+ point-in-time universe27.4%43.9%96%
+ point-in-time entry19.8%39.7%0%

哪些没成功

三件尝试过但没有上线的事

刻意写成一份“否定清单”。这三项都用与正面结果相同的机制测量,并以相同方式报告。

  • 来自申报正文的语言特征

    对正文做情绪分析与变化检测得到的特征,并没有在“到达时间 + 条目代码”已有的信息之外改进排序。

  • 把“与自身历史比较”用作排序信号

    把一份披露与同一家公司的历史比较,在公司页上是有用的;但它并没有改进横截面的每日排序。

  • 波动率预测

    只有通过样本外覆盖率检验的预测器才会出现在公司页上。没有任何预测器通过时,这张卡片是直接不出现,而不是给一个近似值。

正在运行的部分

正在运行的部分

研究引擎按计划刷新申报文件、价格与已申报财报,并据此重新生成每一个公司页。你正在看的这个网站就是它的输出,页面上的每个数字都链接到其背后的申报文件或价格序列。