What has been concluded about this
A methodology's `rules` and `universe_filters` are declared, merged, and hashed into its identity, but no pipeline step evaluates them. They have zero references in the executor. A reader seeing rules: - id: concentration_cap expr: max_asset_weight <= 0.25 reasonably concludes the constraint is enforced by that rule. It is not. In hrp@3 the constraint happens to hold because `contract.weight_bounds.max` is also 0.25 — the rule is decorative, and the two could disagree silently. This inverts the defect class the project has found repeatedly. The usual pattern is a hidden choice that takes effect without being declared. Here a declared rule appears to take effect and does not, which is arguably worse: declaring it creates the belief that it is checked. Surfaced by adding a second methodology family. xsmom@1 declares `has_full_formation_history` and a `min_history` rule; neither runs, and the history requirement is enforced only incidentally by an ExecutionError inside compute_momentum.
On this version: Declares min_history and has_full_formation_history; neither executes.
Questions asked about this
| Investigation | Outcome | Trials | Question |
|---|---|---|---|
| investigation/cost-model-vs-realized-spreads@1 | inconclusive | 0 | Is the flat 10bps transaction cost in protocol/standard@1 an adequate stand-in for realized costs across this universe, or does it... |
| investigation/declared-rules-are-inert@1 | Finding | 0 | Do the `rules` and `universe_filters` a methodology declares actually constrain what the executor does, or are they documentation that... |
| investigation/momentum-lookback-sensitivity@1 | no effect found | 6 | Does cross-sectional momentum's out-of-sample performance improve materially at lookbacks other than the 252-session window inherited... |
Reasoning
Claims this rests on
Assumptions it depends on
| Assumption | Kind | Checked? |
|---|---|---|
| assumption/adjusted-close-is-restated@1 | data | test |
| assumption/nyse-sessions@1 | market structure | test |
| assumption/one-session-execution-lag@1 | execution | test |
| assumption/skip-most-recent-period@1 | estimation | test |
Methodology
- lookback
- 252 trading_days
- skip
- 21 trading_days
- top n
- 3 assets
- rebalance cadence
- 21B
- weight bounds
- [0.0, 0.34]
- gross leverage max
- 1.0
- universe
- SPY, SH, TLT, TBT, LQD, DBC, GLD, HYG, BIL
- content hash
- a2f8a903492b5bb0a44c153cf8c943c1…
Pipeline
Assumptions
- Close-to-close execution at the next session's price.
- Past relative performance is informative about the next holding period.
- No borrow constraints or short availability limits (the universe is long-only ETFs).
- Equal weighting within the selected set; no risk scaling.
Limitations
- Long-only; expresses bearish views solely through inverse ETFs already in the universe.
- Concentrated by construction — three of nine assets — so single-asset risk is high.
- Turnover is materially higher than a covariance-based allocator, and the corrected cost model bites accordingly.
- No volatility targeting; selected assets can have very different risk.
- Estimated on daily Adj Close, which is restated over time by the data vendor.
- Nine ETFs is a far smaller cross-section than the equity universe the source paper studied; results are not a replication of that paper.
Grounded in
History
1 versions, all comparable
| Version | Why it exists | Comparable to this one? |
|---|---|---|
| @1 | Initial publication. | — |