Skip to content
All strategies

Strategies

SPY Daily Trend–VIX Regime Prior: Deterministic PPO-HRAP Ablation

Outcome: Abandoned

SpyDailyTrendVixDeterministicPrior

Outcome Summary

SpyDailyTrendVixDeterministicPrior tested a deterministic trend-and-VIX exposure prior on daily SPY bars. After three iterations, sandbox verification produced no trades across 1,393 evaluated bars, ending the run before later backtesting, optimization, analyst review or risk review. The requested outbox file could not be written because the filesystem is read-only.

Hypothesis

Derived by the Research Lead from Duong Hien Chi Kien and Huynh Thanh Trung's PPO-HRAP: test the interpretable trend-and-VIX exposure prior independently of the learned actor, using the paper's explicitly described rho=1 endpoint. This is an operationalized component experiment, not a reproduction of the reported PPO results. Trade SPY.USEQ on completed daily bars, retaining the stated trend lookbacks, stress thresholds and exposure table. Research Lead choices are conservative lagging of VIX, resolution of the incompletely specified neutral regimes, an exposure-change threshold to limit turnover, and an intrabar protective stop. Market orders execute at the signal session's close; no next-session-open execution is required. The supplied paper provides concrete rules beyond its abstract, but exact PPO reproduction would additionally require the authors' implementation, architecture, preprocessing and simulator timing. No claimed performance is accepted as verified.

Preserve the source's SPY equity market rather than moving its VIX-conditioned mechanism to crypto. This adds short-capable exposure to a corpus that is 80.9% long-only. Corpus concentration is unspecified, so instrument-level novelty cannot be established. Venue and scope quotas are secondary to faithfully testing the submitted mechanism. The proposal differs from SPY/TLT momentum switching by using one ETF, explicit VIX stress states and graded exposure. Existing US_VIXCLS reference data supplies the required VIX series; realized volatility and VIX ETFs must not substitute for VIX.

verification_loop: Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: SPY.USEQ-1-DAY-LAST-EXTERNAL, Bars processed: 1393 Diagnostics: should_enter() returned a side 0 times over 1393 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.

Implementation

Daily SPY deterministic trend–VIX exposure prior with whole-share exposure rebalancing, entry-anchored intrabar protective stops, and reentry only after an exposure-regime change. Missing, insufficient or stale VIX disables exposure.

Minimal iteration from previous_code: initialize empty VIX indexes and remove constructor exceptions for absent or insufficient VIX observations. Synthetic scenarios can evaluate the unchanged continuous trend signal without fabricating VIX or permitting price-only entries. With valid injected US_VIXCLS timestamp_ns/value rows, the existing lagged population-z-score exposure table, sizing, rebalancing and stop logic are unchanged. Layer 2 feedback establishes a setup failure, not evidence against the mechanism; real backtests still require actual VIX injection. No independent verification was run. The bound outbox file could not be written because the workspace filesystem is read-only; the complete JSON is returned here.

Verification Results

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: SPY.USEQ-1-DAY-LAST-EXTERNAL, Bars processed: 1393 Diagnostics: should_enter() returned a side 0 times over 1393 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.

Iteration History

Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - optimization_plan fixes bar_interval at 1-DAY

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['rho', 'crisis_z', 'fast_sma', 'leverage', 'slow_sma', 'stop_pct', 'stress_z', 'warmup_bars', 'bar_interval', 'min_notional', 'vix_std_ddof', 'neutral_weight', 'rebalance_band', 'vix_z_lookback', 'return_lookback', 'bear_calm_weight', 'bull_calm_weight', 'vix_lag_sessions', 'baseline_stop_pct', '_optimization_plan', 'bear_crisis_weight', 'max_gross_exposure', 'stop_reentry_policy', 'bear_stressed_weight', 'bull_stressed_weight',……Show moreShow less

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['rho', 'crisis_z', 'fast_sma', 'leverage', 'slow_sma', 'stop_pct', 'stress_z', 'warmup_bars', 'bar_interval', 'min_notional', 'vix_std_ddof', 'neutral_weight', 'rebalance_band', 'vix_z_lookback', 'return_lookback', 'bear_calm_weight', 'bull_calm_weight', 'vix_lag_sessions', 'baseline_stop_pct', '_optimization_plan', 'bear_crisis_weight', 'max_gross_exposure', 'stop_reentry_policy', 'bear_stressed_weight', 'bull_stressed_weight', 'baseline_rebalance_band', 'neutral_negative_weight', 'vix_max_age_calendar_days'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: Setup error: ValueError: data_unavailable: inject US_VIXCLS timestamp_ns/value rows from data/supplementary/macro/US_VIXCLS.parquet - steady_downtrend: Setup error: ValueError: data_unavailable: inject US_VIXCLS timestamp_ns/value rows from data/supplementary/macro/US_VIXCLS.parquet - flat_ranging: Setup error: ValueError: data_unavailable: inject US_VIXCLS timestamp_ns/value rows from data/supplementary/macro/US_VIXCLS.parquet - volatility_spike: Setup error: ValueError: data_unavailable: inject US_VIXCLS timestamp_ns/value rows from data/supplementary/macro/US_VIXCLS.parquet - zero_volume: Setup error: ValueError: data_unavailable: inject US_VIXCLS timestamp_ns/value rows from data/supplementary/macro/US_VIXCLS.parquet - price_gap: Setup error: ValueError: data_unavailable: inject US_VIXCLS timestamp_ns/value rows from data/supplementary/macro/US_VIXCLS.parquet

Outcome Summary

A future iteration should check reference-data readiness and entry gating against the supplied data and parameters.

The strategy was abandoned after three iterations because sandbox verification failed with no trades and an entry condition that never triggered.

Test the deterministic rho=1 trend-and-VIX exposure prior from PPO-HRAP on daily SPY bars, independently of the learned actor.

Layer 3 sandbox verification produced zero trades across 1,393 evaluated bars; should_enter() returned a side zero times. No return or Sharpe metrics were supplied, and later pipeline stages were not reached.

Analysis

PPO-HRAP: Proximal Policy Optimization with a Hybrid Regime-Aware Policy for Risk-Controlled Trading

Backtest and paper results are hypothetical. Trading involves risk of loss.