Skip to content

Signals Translated to Python + Annual Improvements

Latest

Choose a tag to compare

@tomz23 tomz23 released this 22 Oct 07:29
· 11 commits to master since this release
b4e911e

What's Changed

  • Signals are now constructed in Python instead of Stata. All translated scripts satisfy very strict numerical replication tests of the Stata outputs, or were manually approved with documented explanations for overriding the numerical tests. While this change has little direct effect on user experience, it makes long-term maintenance much easier and will provide higher quality data and more timely updates in the future. It also allows high quality AI access to the code and dataset. (#174)
  • SignalDoc.csv got two upgrades (1) Google Scholar citation data from Ivo Welch and (2) an interactive HTML browser (#191)
  • Market-cap now aggregates across all permnos within a permco before computing valuation ratios. Multi-class firms (e.g., GOOG/GOOGL) were previously treated at the permno level; we now sum equity across a company’s permnos and use that in B/M, earnings yield, etc. This addresses mismeasurement that affected ~4% of total market cap and improved replication quality and performance for MS and PS. (#167)
  • Analyst-linked signals switch to using WRDS’s CRSP–IBES link file directly, rather than the iclink macro from /wrds/lib/utility/wrdslib.sas on the WRDS file system. This affects signals that rely on IBES analyst data (e.g., changes in analyst coverage, forecast-dispersion), improves matching quality, and streamlines implementation. (#150)
  • Option-based signals (e.g., O/S from Johnson & So, 2012) now (i) use OptionMetrics’ CRSP linkfile directly and (ii) filter option volume by time-to-expiration as in the original paper. This removes volume due to automatic rebalancing that has become very high in the current era of 0DTEs (#172) (#166)
  • Short-interest signals: fixed a fill-forward bug in Recomm_ShortInterest.do that used asrol ... stat(first) but produced many missings instead of “last non-missing in past 12 months.” We now carry forward within a 12-month window by permno, restoring intended coverage; also refreshed the short-interest input data. (#178) (#165)
  • Price-delay t-stat signal: corrected typo in formula and removed unnecessary winsorization. (#177)
  • Analyst-coverage change (ChNAnalyst) now applies the size filter by date instead of over the whole sample. This improves both replication quality and performance (#182)
  • Trend-factor construction: fixed an asreg/deduplication issue that could double-count or drop rows before regressions. This stabilizes sample sizes and estimates in the trend signal. (#179)
  • For a complete list of closed issues see: https://github.com/OpenSourceAP/CrossSection/issues?q=is%3Aissue%20closed%3A2024-10-22..2025-10-22%20sort%3Aupdated-desc