ANOTHER DRAFT FOR IMPROVEMENTS TESTING
We seal a hypothesis and walk a strategy forward across Dow 30 in 1-year steps, each tested out-of-sample on data the strategy had never touched, with survivorship-bias-free constituents reconstructed as of every anchor. This study walks the SAME sealed windows on two arms — Arm A and Arm B — identical in every respect except one declared variable: Signal Module — config — entry · indicator: aroon → rsi; entry · operator: crosses_above → crosses_below; entry · length: 25 → 14; …. Paired date by date inside each window (3751 common out-of-sample observations across 15 windows), Arm A compounds at 12.1% a year against 9.6% for Arm B — a gap of 2.5 pp. A seeded block bootstrap of the paired return differences puts the probability that Arm A genuinely beats Arm B at 81.8%. No search record exists for this design — how many alternatives were tried before it is unknown, which is a different fact from one (§2.3).xxxxxxxxxxxxx
1 Methodology
xxxxxxxxxxxxxxxxxxxxxxxxxxx
Transaction costs are not modelled in this study; all results are gross of costs.
2 Results
2.1 Headline
2.2 Per-step results
| # | Out-of-sample window | Arm A SR | Arm B SR |
|---|---|---|---|
| 1 | 2011-01-03 → 2011-12-30 | 1.39 | 0.81 |
| 2 | 2012-01-03 → 2012-12-31 | 0.06 | 0.03 |
| 3 | 2013-01-02 → 2013-12-31 | 1.67 | 2.05 |
| 4 | 2014-01-02 → 2014-12-31 | 1.85 | 1.46 |
| 5 | 2015-01-02 → 2015-12-31 | 0.04 | -0.10 |
| 6 | 2016-01-04 → 2016-12-30 | 0.78 | 0.42 |
| 7 | 2017-01-03 → 2017-12-29 | 2.77 | 2.42 |
| 8 | 2018-01-02 → 2018-12-31 | -0.27 | -0.17 |
| 9 | 2019-01-02 → 2019-12-31 | 2.34 | 2.25 |
| 10 | 2020-01-02 → 2020-12-31 | 0.97 | 0.80 |
| 11 | 2021-01-04 → 2021-12-31 | 1.48 | 1.49 |
| 12 | 2022-01-03 → 2022-12-30 | 0.24 | 0.76 |
| 13 | 2023-01-03 → 2023-12-29 | -1.07 | 1.45 |
| 14 | 2024-01-02 → 2024-12-31 | 0.34 | 0.67 |
| 15 | 2025-01-02 → 2025-12-31 | 1.62 | 0.67 |
2.3 Search accounting
No search record exists for this design. It was not promoted from a recorded evolving search, so the number of alternatives tried before it — on paper, in another tool, or in the author's head — is unknown. Unknown is a different fact from one: a study with no lineage is not a strategy with one trial, it is a strategy with an unrecorded number of them. Accordingly this paper claims no deflated Sharpe and no trial count; the honest statement is the raw out-of-sample result plus this disclosure. The registered per-step record below (§4) still guarantees each window's hypothesis was sealed before that window was scored.
2.4 The comparison
Both arms trade the same sealed windows, so their returns can be PAIRED: inside each window the two return series are inner-joined date by date and the difference rArm A − rArm B is the object under test. Because this is ONE pre-declared contrast — sealed before any window was scored — the paired statistic needs no multiple-testing deflation; the per-arm pooled numbers above are still deflated by the trial count as usual.
| # | Window | Paired bars | Arm A | Arm B | Δ | Leader |
|---|---|---|---|---|---|---|
| 1 | 2011-01-04 → 2011-12-30 | 251 | +23.8% | +14.7% | +9.1 pp | Arm A |
| 2 | 2012-01-04 → 2012-12-31 | 249 | +0.1% | -0.1% | +0.2 pp | Arm A |
| 3 | 2013-01-03 → 2013-12-31 | 251 | +20.9% | +11.1% | +9.8 pp | Arm A |
| 4 | 2014-01-03 → 2014-12-31 | 245 | +3.9% | +15.5% | -11.7 pp | Arm B |
| 5 | 2015-01-05 → 2015-12-31 | 251 | -1.0% | -3.4% | +2.4 pp | Arm A |
| 6 | 2016-01-05 → 2016-12-30 | 251 | +11.6% | +5.3% | +6.3 pp | Arm A |
| 7 | 2017-01-04 → 2017-12-29 | 250 | +18.9% | +3.3% | +15.5 pp | Arm A |
| 8 | 2018-01-03 → 2018-12-31 | 250 | -7.1% | -6.2% | -1.0 pp | Arm B |
| 9 | 2019-01-03 → 2019-12-31 | 251 | +42.9% | +28.0% | +14.9 pp | Arm A |
| 10 | 2020-01-03 → 2020-12-31 | 252 | +26.1% | +21.9% | +4.2 pp | Arm A |
| 11 | 2021-01-05 → 2021-12-31 | 251 | +21.5% | +13.5% | +8.0 pp | Arm A |
| 12 | 2022-01-04 → 2022-12-30 | 250 | +3.0% | +14.6% | -11.6 pp | Arm B |
| 13 | 2023-01-04 → 2023-12-29 | 249 | -7.0% | +13.5% | -20.4 pp | Arm B |
| 14 | 2024-01-03 → 2024-12-31 | 251 | +2.7% | +2.8% | -0.1 pp | Arm B |
| 15 | 2025-01-03 → 2025-12-31 | 249 | +32.4% | +13.3% | +19.1 pp | Arm A |
Paired Sharpe of the difference track: 0.22 · block bootstrap (2000 paths, block 10, seed 1234): P(Arm A beats Arm B) = 81.8%.
3 The circuit
The strategy is a circuit of platform primitives, frozen when the study is registered. Below is the circuit as wired on the canvas, the objective it encodes and how the search runs through it, followed by the mathematics each primitive actually computes — the same formulas the execution engine runs. The complete parameterisation is preserved in the study ledger (Appendix A).
A COMPARATIVE study — Arm A vs Arm B, walked on the same sealed out-of-sample windows. Arm A: Dow Jones 30, selected by statistical / factor criteria, traded via enter long when AROON (length=25) crosses above 0; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. Arm B: Dow Jones 30, selected by statistical / factor criteria, traded via enter long when RSI (length=14) crosses below 30; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. The arms differ in: Signal Module — config (entry · indicator: aroon → rsi; entry · operator: crosses_above → crosses_below; entry · length: 25 → 14; entry · value: 0 → 30). The contrast under test: whether Arm A generates better risk-adjusted returns than Arm B over the identical out-of-sample windows.
Envelopes show counts, ratios, dates, and the parameters the author chose. Price series and per-name figures are not published: the underlying market data is licensed to QuanterLab, and redistributing it isn't ours to do.
The objective and the search
Arm A — Dow Jones 30, selected by statistical / factor criteria, traded via enter long when AROON (length=25) crosses above 0; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it.
| Universe | Dow Jones 30 index constituents. |
|---|---|
| Selection | serial-gated across Hurst exponent, OU half-life → top 10 kept by composite score. |
| Signal generation | enter long when AROON (length=25) crosses above 0; exit when RSI (length=14) crosses above 70. |
| In-sample search | In-sample optimization via static (single best params across the in-sample); objective = sharpe; sweeping entry.value ∈ [20, 40] / 5 steps × exit.value ∈ [60, 80] / 5 steps; 252-day in-sample train window. |
| Validation & out-of-sample | rolling walk-forward (252d optimize / 63d test / 63d step); signal forward test (1y horizon from the anchor). |
| Other components | Signal: Strategy Loader. |
Arm B — Dow Jones 30, selected by statistical / factor criteria, traded via enter long when RSI (length=14) crosses below 30; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it.
| Universe | Dow Jones 30 index constituents. |
|---|---|
| Selection | serial-gated across Hurst exponent, OU half-life → top 10 kept by composite score. |
| Signal generation | enter long when RSI (length=14) crosses below 30; exit when RSI (length=14) crosses above 70. |
| In-sample search | In-sample optimization via static (single best params across the in-sample); objective = sharpe; sweeping entry.value ∈ [20, 40] / 5 steps × exit.value ∈ [60, 80] / 5 steps; 252-day in-sample train window. |
| Validation & out-of-sample | rolling walk-forward (252d optimize / 63d test / 63d step); signal forward test (1y horizon from the anchor). |
| Other components | Signal: Strategy Loader. |
What differs between the arms — one difference; the comparison is clean:
-
paramSignal Module — config
- · entry · indicator: aroon → rsi
- · entry · operator: crosses_above → crosses_below
- · entry · length: 25 → 14
- · entry · value: 0 → 30
Everything else is held identical, so an out-of-sample gap between the arms is attributable to this one change.
No transaction-cost elements are wired into this circuit; results are gross of costs.
Show the mathematics — 10 primitives, formulas and parity notes
3.1 Universe
The starting set of tickers — resolved point-in-time so there is no survivorship bias.
Before any math, you need a list of stocks. An index preset (S&P 500, Nasdaq-100, Dow 30) is reconstructed as it stood ON your anchor date by replaying the historical add/drop change-log backwards — so a 2018 backtest sees the 2018 membership, not today's winners.
Start from today's constituents and un-apply every membership change after the anchor t:
\mathcal{U}(t) = \mathcal{U}_{\text{now}} \;\ominus\; \{\text{adds after } t\} \;\oplus\; \{\text{drops after } t\}3.2 Price Loader
Bulk OHLCV fetch for the whole universe — point-in-time, no future bars.
Momentum, volatility, trend — every price-based metric needs history. This loads open/high/low/close/volume for all names in parallel, clipped so nothing after the anchor can leak in. The lookback window is derived automatically from the deepest metric you wired.
It loads exactly enough history for the hungriest downstream metric plus a warm-up buffer:
W = \max_k(\text{lookback}_k) + \text{buffer}, \qquad \text{bars} \le \text{anchor } t3.3 Filter Hurst
The Hurst exponent — is this series trending, random, or mean-reverting?
Rescaled-range (R/S) analysis measures how the spread of a series grows as you look over longer windows. A random walk spreads like √n; trends spread faster, mean-reversion slower. The exponent H captures which.
\mathbb{E}\!\left[\tfrac{R(n)}{S(n)}\right] \sim c\,n^{H} \;\;\Longrightarrow\;\; H = \frac{\log\!\big(R/S\big)}{\log n}H = \operatorname{clip}\big(\text{slope} - 0.06,\ 0,\ 1\big)H < 0.5 → mean-reverting · H ≈ 0.5 → random walk · H > 0.5 → trending. The metric is attached to each stock; ranking + the cut happen in Composite Σ / Top-N.
3.4 Filter Ou Halflife
Ornstein–Uhlenbeck half-life — how many days a deviation takes to decay by half.
First remove the long-term drift (an OLS trend line fitted to log-price), then fit an AR(1) to what remains. The autoregressive coefficient β says how fast deviations from trend get pulled back; convert it to a half-life in days. Roughly 5–40 days is the tradeable sweet spot for mean reversion.
\log P_t = a + b\,t + \varepsilon_t \quad\Longrightarrow\quad x_t = \log P_t - (a + b\,t)x_t = \alpha + \beta\,x_{t-1} + \varepsilon_t\text{half-life} = \frac{\ln 2}{\lvert \ln \beta \rvert}3.5 Top N
Keep the best N — rank, then cut.
Sort the survivors by the Composite Σ (or, if none is wired, the last metric in the chain) and keep the top (or bottom) N. The final narrowing from a scored list to a committed basket.
\text{Top-}N = \{\, i : \operatorname{rank}(\text{score}_i) \le N \,\}3.6 Strategy Loader
Deep-history load for the few names you will actually trade.
The efficiency split: screening scans ~1 year across ~500 names, but the lifecycle (signal → optimizer → walk-forward) needs years of history. So this loads that deep window ONLY for the handful of survivors. No new math — the window is derived from the deepest lifecycle lookback (default ~5 years).
W_{\text{deep}} = \max(\text{lifecycle lookbacks}) \approx 5\text{y}, \quad \text{loaded for } \mathcal{S} \text{ only}3.7 Signal Module
The entry / exit rule — turn indicators into a per-bar trade signal.
Composes indicators (RSI, moving averages, …) with comparison and logic operators into a rule that says enter, exit, or hold each bar. The rule is emitted as a portable config the optimizer tunes and the walk-forward validates — so what you design is exactly what gets traded.
\text{signal}_t = \begin{cases} +1 & \text{entry rule true} \\ 0 & \text{exit rule true} \\ \text{hold} & \text{otherwise}\end{cases}3.8 Static Optimizer
Grid-search one best parameter set over the whole in-sample window.
Sweeps a grid of parameter combinations, backtests each on the in-sample data, and keeps the single combination that scores best on your objective (Sharpe by default). One rule for the whole period — no time variation.
\boldsymbol\theta^* = \arg\max_{\boldsymbol\theta\in\text{grid}} \;\mathcal O\big(\text{backtest}(\boldsymbol\theta)\big)\text{Sharpe} = \frac{\bar r - r_f}{\sigma_r}\,\sqrt{252}3.9 Walkforward Rolling
Walk-forward with a sliding window — fixed-width, always recent.
Same out-of-sample discipline, but the training window is a fixed width that slides forward — each fold trains on the SAME amount of data, just more recent. Better when old regimes hurt and only recent behaviour matters.
\text{fold}_k:\quad [\,\text{split}_k - W,\;\text{split}_k\,]\ \text{train} \;\to\; [\,\text{split}_k,\;\text{end}_k\,]\ \text{test}3.10 Backtest Validator
Forward-test the winning rule on unseen, out-of-sample data.
Takes the wired rule config (the Walk-Forward validated config wins, else the optimized config, else the raw signal config) and trades it FORWARD on the out-of-sample window to the right of the anchor — data it never saw during optimization — re-deriving the regime as-of each bar. It produces the true out-of-sample equity curve, trades and statistics: the signal-path twin of the Portfolio Forward Test, not an in-sample replay.
E_t = E_{t-1}\,(1 + r_t),\qquad \text{Sharpe} = \frac{\bar r - r_f}{\sigma_r}\sqrt{252}4 Sealed-hypothesis record
The integrity of a walk-forward rests on registering each hypothesis before its out-of-sample window is scored — the windows themselves are historical. The order below is the order in which the hypotheses were sealed.
| # | Registered hypothesis | Anchor | Registered at |
|---|---|---|---|
| 1 | “A COMPARATIVE study — Arm A vs Arm B, walked on the same sealed out-of-sample windows. Arm A: S&P 500, selected by statistical / factor criteria, traded via enter long when AROON (length=25) crosses above 0; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. Arm B: S&P 500, selected by statistical / factor criteria, traded via enter long when RSI (length=14) crosses below 30; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. The arms differ in: Signal Module — config: {"direction":"long","entry":{"indicator":"aroon","params":{"length":25},"operator":"crosses_above","value":0},"confirm":null,"exit":{"indicator":"rsi","params":{"length":14},"operator":"crosses_above","value":70},"timeline":{"duration_days":180,"offset_days_from_anchor":0}} → {"direction":"long","entry":{"indicator":"rsi","params":{"length":14},"operator":"crosses_below","value":30},"confirm":null,"exit":{"indicator":"rsi","params":{"length":14},"operator":"crosses_above","value":70},"timeline":{"duration_days":180,"offset_days_from_anchor":0}}. The contrast under test: whether Arm A generates better risk-adjusted returns than Arm B over the identical out-of-sample windows.” | 2011-01-01 | 2026-07-25 |
| 2 | “A COMPARATIVE study — Arm A vs Arm B, walked on the same sealed out-of-sample windows. Arm A: Dow Jones 30, selected by statistical / factor criteria, traded via enter long when AROON (length=25) crosses above 0; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. Arm B: Dow Jones 30, selected by statistical / factor criteria, traded via enter long when RSI (length=14) crosses below 30; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. The arms differ in: Signal Module — config: {"direction":"long","entry":{"indicator":"aroon","params":{"length":25},"operator":"crosses_above","value":0},"confirm":null,"exit":{"indicator":"rsi","params":{"length":14},"operator":"crosses_above","value":70},"timeline":{"duration_days":180,"offset_days_from_anchor":0}} → {"direction":"long","entry":{"indicator":"rsi","params":{"length":14},"operator":"crosses_below","value":30},"confirm":null,"exit":{"indicator":"rsi","params":{"length":14},"operator":"crosses_above","value":70},"timeline":{"duration_days":180,"offset_days_from_anchor":0}}. The contrast under test: whether Arm A generates better risk-adjusted returns than Arm B over the identical out-of-sample windows.” | 2012-01-01 | 2026-07-25 |
| 3 | “A COMPARATIVE study — Arm A vs Arm B, walked on the same sealed out-of-sample windows. Arm A: Dow Jones 30, selected by statistical / factor criteria, traded via enter long when AROON (length=25) crosses above 0; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. Arm B: Dow Jones 30, selected by statistical / factor criteria, traded via enter long when RSI (length=14) crosses below 30; exit when RSI (length=14) crosses above 70, with parameters tuned in-sample to sharpe, and validated out-of-sample via walk-forward — the rule set is re-optimized on a rolling in-sample window and tested on the unseen window after it. The arms differ in: Signal Module — config (entry · indicator: aroon → rsi; entry · operator: crosses_above → crosses_below; entry · length: 25 → 14; entry · value: 0 → 30). The contrast under test: whether Arm A generates better risk-adjusted returns than Arm B over the identical out-of-sample windows.” | 2013-01-01 | 2026-07-25 |
| 4 | — unchanged from step 3 | 2014-01-01 | 2026-07-25 |
| 5 | — unchanged from step 4 | 2015-01-01 | 2026-07-25 |
| 6 | — unchanged from step 5 | 2016-01-01 | 2026-07-25 |
| 7 | — unchanged from step 6 | 2017-01-01 | 2026-07-25 |
| 8 | — unchanged from step 7 | 2018-01-01 | 2026-07-25 |
| 9 | — unchanged from step 8 | 2019-01-01 | 2026-07-25 |
| 10 | — unchanged from step 9 | 2020-01-01 | 2026-07-25 |
| 11 | — unchanged from step 10 | 2021-01-01 | 2026-07-25 |
| 12 | — unchanged from step 11 | 2022-01-01 | 2026-07-25 |
| 13 | — unchanged from step 12 | 2023-01-01 | 2026-07-25 |
| 14 | — unchanged from step 13 | 2024-01-01 | 2026-07-25 |
| 15 | — unchanged from step 14 | 2025-01-01 | 2026-07-25 |
5 Discussion
xxxxxxxxxxxx
No search record exists for this study: the design was not promoted from a recorded evolving search, so the number of alternatives tried before it is UNKNOWN — which is a different fact from one. No deflated Sharpe is claimed; the honest statement is the raw out-of-sample result plus this disclosure. The out-of-sample windows are historical.
References
- Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality. Journal of Portfolio Management, 40(5), 94–107. doi:10.3905/jpm.2014.40.5.094
- Gelman, A., & Loken, E. (2013). The garden of forking paths: Why multiple comparisons can be a problem, even when there is no “fishing expedition.” Working paper, Columbia University.
- Harvey, C. R., Liu, Y., & Zhu, H. (2016). … and the Cross-Section of Expected Returns. Review of Financial Studies, 29(1), 5–68. doi:10.1093/rfs/hhv059
- Lo, A. W. (2002). The Statistics of Sharpe Ratios. Financial Analysts Journal, 58(4), 36–52. doi:10.2469/faj.v58.n4.2453
Appendix A Reproducibility in QuanterLab
Each step is backed by a frozen run report. The study is re-derivable from the ledger below.
| # | Commit | Report | Anchor | OOS window |
|---|---|---|---|---|
| 1 | 70669d73f0cb | 289 | 2011-01-01 | 2011-01-03 → 2011-12-30 |
| 2 | 030a4f35a647 | 290 | 2012-01-01 | 2012-01-03 → 2012-12-31 |
| 3 | 9d08811ae672 | 291 | 2013-01-01 | 2013-01-02 → 2013-12-31 |
| 4 | 6694d169ac3c | 292 | 2014-01-01 | 2014-01-02 → 2014-12-31 |
| 5 | bfd56236da74 | 293 | 2015-01-01 | 2015-01-02 → 2015-12-31 |
| 6 | 5542d4d03705 | 294 | 2016-01-01 | 2016-01-04 → 2016-12-30 |
| 7 | 5f710caae120 | 295 | 2017-01-01 | 2017-01-03 → 2017-12-29 |
| 8 | fe83148202b8 | 296 | 2018-01-01 | 2018-01-02 → 2018-12-31 |
| 9 | 180d0f0ebf78 | 297 | 2019-01-01 | 2019-01-02 → 2019-12-31 |
| 10 | 8dd948c848e3 | 299 | 2020-01-01 | 2020-01-02 → 2020-12-31 |
| 11 | 9ecf8cc04e8f | 300 | 2021-01-01 | 2021-01-04 → 2021-12-31 |
| 12 | 3ab5e5c9bcff | 301 | 2022-01-01 | 2022-01-03 → 2022-12-30 |
| 13 | a95a57233536 | 302 | 2023-01-01 | 2023-01-03 → 2023-12-29 |
| 14 | 4d0349b2f538 | 303 | 2024-01-01 | 2024-01-02 → 2024-12-31 |
| 15 | 3055b9a3409c | 304 | 2025-01-01 | 2025-01-02 → 2025-12-31 |
Appendix B Per-step diagnostics
What each step's run actually did beyond its return: capital allocation across lanes and regimes, the portfolio book's rebalancing and cost drag, and how positions were sized. Harvested from the frozen run reports — present where the circuit produced them.
Step 1 · 2011-01-03 → 2011-12-30
Position sizing — sizing: half_kelly
Step 2 · 2012-01-03 → 2012-12-31
Position sizing — sizing: half_kelly
Step 3 · 2013-01-02 → 2013-12-31
Position sizing — sizing: half_kelly
Step 4 · 2014-01-02 → 2014-12-31
Position sizing — sizing: half_kelly
Step 5 · 2015-01-02 → 2015-12-31
Position sizing — sizing: half_kelly
Step 6 · 2016-01-04 → 2016-12-30
Position sizing — sizing: half_kelly
Step 7 · 2017-01-03 → 2017-12-29
Position sizing — sizing: half_kelly
Step 8 · 2018-01-02 → 2018-12-31
Position sizing — sizing: half_kelly
Step 9 · 2019-01-02 → 2019-12-31
Position sizing — sizing: half_kelly
Step 10 · 2020-01-02 → 2020-12-31
Position sizing — sizing: half_kelly
Step 11 · 2021-01-04 → 2021-12-31
Position sizing — sizing: half_kelly
Step 12 · 2022-01-03 → 2022-12-30
Position sizing — sizing: half_kelly
Step 13 · 2023-01-03 → 2023-12-29
Position sizing — sizing: half_kelly
Step 14 · 2024-01-02 → 2024-12-31
Position sizing — sizing: half_kelly
Step 15 · 2025-01-02 → 2025-12-31
Position sizing — sizing: half_kelly