MOM-10 · USO

Accelerating Momentum · Strategy evidence

Inspect the inputs, parameters and accounting behind a published result.

Run reference1e2be2adafc3
Last included price bar2026-11-10
Bundle generated (UTC)2026-11-11 10:55 UTC
Accounting modelSynthetic daily target allocations · v3
Replay the recorded returns and equity with the files below. Recreating strategy decisions needs the original matching inputs; fresh price downloads may differ. These are simulated allocations, not broker fills.

Downloads

Downloads load and verify compressed objects only when selected. Negative weights represent short exposure; no code is executed in your browser.

1. Download a complete bundle

Download the Python tool above and run this command. It checks shared objects and creates replay.zip; no repository clone is needed.

python e0543584b55263609cc8fd38cd032cb8432af6c2b48da3f53599e6e68c922f59.py https://quantarenas.com/data/evidence/runs/1e2be2adafc38bd9021f43d8c960dac3924525701c2fc008abd72e994069043d/manifest.json --bundle replay.zip

2. Replay the arithmetic

Extract replay.zip and run from its folder with Python. This verifies recorded weights, contributions and equity using only the standard library; it does not recalculate strategy decisions.

python scripts/replay_evidence.py data/evidence/runs/1e2be2adafc38bd9021f43d8c960dac3924525701c2fc008abd72e994069043d/manifest.json

3. Obtain and compare inputs

In the extracted bundle, use the recorded Python version and install the pinned dependencies. This command downloads provider inputs privately and reports inputHashMatches. Only a matching hash supports exact recomputation; revised provider data may not match. You may instead supply an original matching snapshot as private-input.json.

python -m pip install -r requirements-lock.txt
python scripts/recompute_evidence.py data/evidence/runs/1e2be2adafc38bd9021f43d8c960dac3924525701c2fc008abd72e994069043d/manifest.json --fetch-input private-input.json

4. Recompute the original strategy

With the exact original input snapshot and recorded dependencies, run the archived strategy and walk-forward selection. Original provider inputs are not public. Revised downloads fail the input-hash match and cannot establish exact reproduction.

python scripts/recompute_evidence.py data/evidence/runs/1e2be2adafc38bd9021f43d8c960dac3924525701c2fc008abd72e994069043d/manifest.json --input private-input.json
Accounting assumptions

Each day's return uses the preceding day's target allocation. The new target is decided at the current close. This is a synthetic close-based model, not a measured execution price.

Cash residual
1 - sum(weights); residual may exceed one or be negative for shorts/leverage.
Decision
Target weights use bars through close t; previous targets earn (t-1,t].
Trading costs (bp)
0
Execution assumption
Synthetic daily target allocations, not broker orders or fills; financing/borrow costs omitted.
Synthetic rebalance turnover
Sum(abs(target[t] - target[t-1]*(1+assetReturn[t])/(1+grossReturn[t]))); one-way risky notional at close t after returns, divided by pre-trade equity.
Return interval
Sum of previous target weight times each asset close-to-close return; cash return is zero.
Target weight change
Sum(abs(target[t] - target[t-1])); changes in rule targets only.
Walk-forward transition
Candidate retains its own hypothetical state; first test return uses previous published target.

Parameters used

{
  "active": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "defaults": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  }
}

Walk-forward selections

Default/pre-walk-forward history is not out-of-sample evidence. Each fold records its training and test boundaries; the selected candidate retains its own hypothetical state.

1 · 2013-01-04T00:00:00 → 2013-07-03T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.7737390838775545,
  "run": 0,
  "testEnd": "2013-07-03T00:00:00",
  "testStart": "2013-01-04T00:00:00",
  "trainEnd": "2013-01-03T00:00:00",
  "trainStart": "2010-01-04T00:00:00"
}
2 · 2013-07-05T00:00:00 → 2014-01-03T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.6644459222213368,
  "run": 0,
  "testEnd": "2014-01-03T00:00:00",
  "testStart": "2013-07-05T00:00:00",
  "trainEnd": "2013-07-03T00:00:00",
  "trainStart": "2010-07-06T00:00:00"
}
3 · 2014-01-06T00:00:00 → 2014-07-03T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.5997418406515116,
  "run": 0,
  "testEnd": "2014-07-03T00:00:00",
  "testStart": "2014-01-06T00:00:00",
  "trainEnd": "2014-01-03T00:00:00",
  "trainStart": "2011-01-06T00:00:00"
}
4 · 2014-07-07T00:00:00 → 2015-01-07T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.12714579700560696,
  "run": 0,
  "testEnd": "2015-01-07T00:00:00",
  "testStart": "2014-07-07T00:00:00",
  "trainEnd": "2014-07-03T00:00:00",
  "trainStart": "2011-07-07T00:00:00"
}
5 · 2015-01-08T00:00:00 → 2015-07-08T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.20440543231469346,
  "run": 0,
  "testEnd": "2015-07-08T00:00:00",
  "testStart": "2015-01-08T00:00:00",
  "trainEnd": "2015-01-07T00:00:00",
  "trainStart": "2012-01-09T00:00:00"
}
6 · 2015-07-09T00:00:00 → 2016-01-08T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.0648720775598547,
  "run": 0,
  "testEnd": "2016-01-08T00:00:00",
  "testStart": "2015-07-09T00:00:00",
  "trainEnd": "2015-07-08T00:00:00",
  "trainStart": "2012-07-09T00:00:00"
}
7 · 2016-01-11T00:00:00 → 2016-07-11T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.031523529534859304,
  "run": 0,
  "testEnd": "2016-07-11T00:00:00",
  "testStart": "2016-01-11T00:00:00",
  "trainEnd": "2016-01-08T00:00:00",
  "trainStart": "2013-01-11T00:00:00"
}
8 · 2016-07-12T00:00:00 → 2017-01-12T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.347664727953124,
  "run": 0,
  "testEnd": "2017-01-12T00:00:00",
  "testStart": "2016-07-12T00:00:00",
  "trainEnd": "2016-07-11T00:00:00",
  "trainStart": "2013-07-12T00:00:00"
}
9 · 2017-01-13T00:00:00 → 2017-07-13T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.6602555375004128,
  "run": 0,
  "testEnd": "2017-07-13T00:00:00",
  "testStart": "2017-01-13T00:00:00",
  "trainEnd": "2017-01-12T00:00:00",
  "trainStart": "2014-01-13T00:00:00"
}
10 · 2017-07-14T00:00:00 → 2018-01-12T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -1.125157579256509,
  "run": 0,
  "testEnd": "2018-01-12T00:00:00",
  "testStart": "2017-07-14T00:00:00",
  "trainEnd": "2017-07-13T00:00:00",
  "trainStart": "2014-07-14T00:00:00"
}
11 · 2018-01-16T00:00:00 → 2018-07-16T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.06673772977108358,
  "run": 0,
  "testEnd": "2018-07-16T00:00:00",
  "testStart": "2018-01-16T00:00:00",
  "trainEnd": "2018-01-12T00:00:00",
  "trainStart": "2015-01-16T00:00:00"
}
12 · 2018-07-17T00:00:00 → 2019-01-17T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.15461779582589022,
  "run": 0,
  "testEnd": "2019-01-17T00:00:00",
  "testStart": "2018-07-17T00:00:00",
  "trainEnd": "2018-07-16T00:00:00",
  "trainStart": "2015-07-17T00:00:00"
}
13 · 2019-01-18T00:00:00 → 2019-07-18T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.12680887306378735,
  "run": 0,
  "testEnd": "2019-07-18T00:00:00",
  "testStart": "2019-01-18T00:00:00",
  "trainEnd": "2019-01-17T00:00:00",
  "trainStart": "2016-01-19T00:00:00"
}
14 · 2019-07-19T00:00:00 → 2020-01-17T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.045716414832970266,
  "run": 0,
  "testEnd": "2020-01-17T00:00:00",
  "testStart": "2019-07-19T00:00:00",
  "trainEnd": "2019-07-18T00:00:00",
  "trainStart": "2016-07-19T00:00:00"
}
15 · 2020-01-21T00:00:00 → 2020-07-21T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.2276483172756322,
  "run": 0,
  "testEnd": "2020-07-21T00:00:00",
  "testStart": "2020-01-21T00:00:00",
  "trainEnd": "2020-01-17T00:00:00",
  "trainStart": "2017-01-23T00:00:00"
}
16 · 2020-07-22T00:00:00 → 2021-01-22T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.30463210812351466,
  "run": 0,
  "testEnd": "2021-01-22T00:00:00",
  "testStart": "2020-07-22T00:00:00",
  "trainEnd": "2020-07-21T00:00:00",
  "trainStart": "2017-07-24T00:00:00"
}
17 · 2021-01-25T00:00:00 → 2021-07-23T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.1697237761201907,
  "run": 0,
  "testEnd": "2021-07-23T00:00:00",
  "testStart": "2021-01-25T00:00:00",
  "trainEnd": "2021-01-22T00:00:00",
  "trainStart": "2018-01-25T00:00:00"
}
18 · 2021-07-26T00:00:00 → 2022-01-26T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.18530284148773168,
  "run": 0,
  "testEnd": "2022-01-26T00:00:00",
  "testStart": "2021-07-26T00:00:00",
  "trainEnd": "2021-07-23T00:00:00",
  "trainStart": "2018-07-26T00:00:00"
}
19 · 2022-01-27T00:00:00 → 2022-07-27T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.46539502554441275,
  "run": 0,
  "testEnd": "2022-07-27T00:00:00",
  "testStart": "2022-01-27T00:00:00",
  "trainEnd": "2022-01-26T00:00:00",
  "trainStart": "2019-01-28T00:00:00"
}
20 · 2022-07-28T00:00:00 → 2023-01-27T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.6675439026849107,
  "run": 0,
  "testEnd": "2023-01-27T00:00:00",
  "testStart": "2022-07-28T00:00:00",
  "trainEnd": "2022-07-27T00:00:00",
  "trainStart": "2019-07-29T00:00:00"
}
21 · 2023-01-30T00:00:00 → 2023-07-28T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.5544306314534667,
  "run": 0,
  "testEnd": "2023-07-28T00:00:00",
  "testStart": "2023-01-30T00:00:00",
  "trainEnd": "2023-01-27T00:00:00",
  "trainStart": "2020-01-30T00:00:00"
}
22 · 2023-07-31T00:00:00 → 2024-01-31T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.5077183941706004,
  "run": 0,
  "testEnd": "2024-01-31T00:00:00",
  "testStart": "2023-07-31T00:00:00",
  "trainEnd": "2023-07-28T00:00:00",
  "trainStart": "2020-07-31T00:00:00"
}
23 · 2024-02-01T00:00:00 → 2024-08-01T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.3762205111230019,
  "run": 0,
  "testEnd": "2024-08-01T00:00:00",
  "testStart": "2024-02-01T00:00:00",
  "trainEnd": "2024-01-31T00:00:00",
  "trainStart": "2021-02-01T00:00:00"
}
24 · 2024-08-02T00:00:00 → 2025-01-31T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.08226235238427396,
  "run": 0,
  "testEnd": "2025-01-31T00:00:00",
  "testStart": "2024-08-02T00:00:00",
  "trainEnd": "2024-08-01T00:00:00",
  "trainStart": "2021-08-02T00:00:00"
}
25 · 2025-02-03T00:00:00 → 2025-08-01T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.16409042354398112,
  "run": 0,
  "testEnd": "2025-08-01T00:00:00",
  "testStart": "2025-02-03T00:00:00",
  "trainEnd": "2025-01-31T00:00:00",
  "trainStart": "2022-02-03T00:00:00"
}
26 · 2025-08-04T00:00:00 → 2026-02-04T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.7535688883472106,
  "run": 0,
  "testEnd": "2026-02-04T00:00:00",
  "testStart": "2025-08-04T00:00:00",
  "trainEnd": "2025-08-01T00:00:00",
  "trainStart": "2022-08-04T00:00:00"
}
27 · 2026-02-05T00:00:00 → 2026-08-05T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": -0.6633549932801228,
  "run": 0,
  "testEnd": "2026-08-05T00:00:00",
  "testStart": "2026-02-05T00:00:00",
  "trainEnd": "2026-02-04T00:00:00",
  "trainStart": "2023-02-06T00:00:00"
}
28 · 2026-08-06T00:00:00 → 2026-11-10T00:00:00
{
  "config": {
    "entry_threshold": 0.0,
    "periods": [
      21,
      63,
      126,
      252
    ],
    "weights": [
      0.4,
      0.3,
      0.2,
      0.1
    ]
  },
  "isSharpe": 0.16126443776577667,
  "run": 0,
  "testEnd": "2026-11-10T00:00:00",
  "testStart": "2026-08-06T00:00:00",
  "trainEnd": "2026-08-05T00:00:00",
  "trainStart": "2023-08-07T00:00:00"
}

Run summary

Price observations4240
Ending equity1.14462
Total return14.46%
Days with target changes544
Cumulative target change21850.00%
Cumulative synthetic rebalance turnover21931.79%
Target gross exposure50.00%
Target net exposure50.00%
Target cash residual50.00%
Effective gross exposure75.00%
Effective net exposure75.00%
Effective cash residual25.00%

Latest asset weights

MarketTargetEffective
USO50.00%75.00%

Target change measures changes in rule weights. Synthetic rebalance turnover also accounts for weight drift after returns; even unchanged targets can require rebalancing. Cash is the signed residual after net exposure.

Accounting changes on identical inputs

{
  "changedReturnDays": 0,
  "correctedTerminalEquity": 1.1446248876875236,
  "legacyTerminalEquity": 1.1446248876875236,
  "maximumDailyReturnDelta": 0.0,
  "model": "coherent-lagged-target-v2",
  "terminalEquityDelta": 0.0
}
Full run identity and technical record
{
  "inputHash": "a44b8aee0f7bb68dc53a947621eaac57e8bf44b36db5cd088fd33cb61e9f4c3c",
  "ruleVersion": null,
  "sameInputAccountingCorrection": {
    "changedReturnDays": 0,
    "correctedTerminalEquity": 1.1446248876875236,
    "legacyTerminalEquity": 1.1446248876875236,
    "maximumDailyReturnDelta": 0.0,
    "model": "coherent-lagged-target-v2",
    "terminalEquityDelta": 0.0
  },
  "sourceHashes": {
    "scripts/build_data.py": "e3dcc988d80a46f7f5a24396bb4ffcac240da8e1249de18a5a282eacccc52320",
    "scripts/enrich_metrics.py": "05611fa9c6de11c261f631cdd8a3314212e7c567f24878a396d057d88752051c",
    "scripts/evidence_v2.py": "c4c6523dbbb9513464dca25150f42cbaac7cbfd71bd8afdc855659b2c763d72e",
    "scripts/performance_io.py": "42282ff10697ceb56dc7ca2edf79538c2e1e8344da8e6d69ceac4d16ba5c668a",
    "scripts/recompute_evidence.py": "a7f59004cb7c356940ee3748439024cd83cac434acb90c0bead2ae19f81be127",
    "scripts/replay_evidence.py": "4e04d937c19b9040da6dc9c3c80ac22181b45ffba0131f3a63a4def95865fad6",
    "scripts/requirements.txt": "7424048072a2cf3d8c3b4e4f37a5b36c1e7ff3732d893c43295d17d85c5f97d1",
    "scripts/strategies/accelerating_momentum.py": "a6f20b03e80594002852439d307a1c3e5415e4ecdca98ba67ae801995bfa1020",
    "scripts/strategy_evidence.py": "a3a93d62a84298470af3eb8e7d74e9f0ca0d29cf672d1d2d5449b41904e3d58c"
  },
  "runId": "1e2be2adafc38bd9021f43d8c960dac3924525701c2fc008abd72e994069043d",
  "generatedAt": "2026-11-11T10:55:31.449953+00:00",
  "executionModel": {
    "cash": "1 - sum(weights); residual may exceed one or be negative for shorts/leverage.",
    "decision": "Target weights use bars through close t; previous targets earn (t-1,t].",
    "feesBasisPoints": 0,
    "fills": "Synthetic daily target allocations, not broker orders or fills; financing/borrow costs omitted.",
    "id": "synthetic-daily-target-v3",
    "rebalanceTurnover": "Sum(abs(target[t] - target[t-1]*(1+assetReturn[t])/(1+grossReturn[t]))); one-way risky notional at close t after returns, divided by pre-trade equity.",
    "return": "Sum of previous target weight times each asset close-to-close return; cash return is zero.",
    "targetChange": "Sum(abs(target[t] - target[t-1])); changes in rule targets only.",
    "wfo": "Candidate retains its own hypothetical state; first test return uses previous published target."
  }
}

Get the weekly Arena report

One email a week: ranking changes, new signals and new research. No spam; unsubscribe any time.