Skip to content

Latest commit

 

History

History
120 lines (98 loc) · 4.09 KB

File metadata and controls

120 lines (98 loc) · 4.09 KB

Ethereum Rizzolver Two-Day Fixture

This fixture is a compact deterministic dataset for testing the replay pipeline without refetching CoW or Binance data.

Window

Solver:       Rizzolver
Solver ID:    rizzolver
Solver addr:  0x8f5835e9d756c9bd934bce527157a4b0ef3c5cb7
Network:      Ethereum mainnet
Candles:      2026-06-09T14:02:00Z -> 2026-06-11T14:11:00Z
Settlements:  2026-06-09T14:03:11Z -> 2026-06-11T14:11:47Z
Interval:     1m ETHUSDC candles

Files

settlement_events.csv        CoW WETH/USDC settlement deltas attributed to Rizzolver.
candles.csv                  ETHUSDC one-minute candles used by replay_with_avellaneda.py.
expected_summary.json        Expected output summary for the default fixture command below.
tuned_expected_summary.json  Expected output summary for the tuned reward-aware Rizzolver command below.

The fixture is intentionally small enough to commit, but still covers a realistic replay path:

571 loaded settlement events
570 applied settlement events
2,890 one-minute candles
2,869 simulated Avellaneda trades in the default expected run
1,425 simulated Avellaneda trades in the tuned reward-aware run

The settlement CSV includes CoW competition reward metadata, including solver_score_wei, reference_score_wei, total_winning_score_wei, and estimated_reward_native.

Profile Comparison

Both profiles below use the same Rizzolver settlement events and the same ETHUSDC candles.

Original default = old generic Avellaneda parameters on Rizzolver data.
Tuned Rizzolver  = adjusted Avellaneda parameters plus reward-aware gating on the same Rizzolver data.

This is not a comparison between Rizzolver and another solver. It is a comparison between two Avellaneda configurations applied to the same Rizzolver inventory path.

Reproduce Default

From the repo root:

python3 replay_with_avellaneda.py \
  --settlements fixtures/ethereum-rizzolver-2026-06-09-2d/settlement_events.csv \
  --candles-csv fixtures/ethereum-rizzolver-2026-06-09-2d/candles.csv \
  --initial-base 10000 \
  --initial-quote 30000000 \
  --inventory-target-base-pct 60 \
  --order-amount 0.2 \
  --risk-factor 1.0 \
  --min-spread 0.05 \
  --out-dir results/fixture_ethereum_rizzolver_2d

Expected headline:

settlement_only_pnl_pct: 31.6506697718
pnl_pct:                 31.6515912748
avellaneda_vs_settlement_only_pct: 0.0009215030
avellaneda_vs_settlement_only_quote: 430.3124104589
avellaneda_vs_settlement_only_result: better
trades: 2869
solver_reward_quote: 13297.2158681541
settlement_only_base_pct: 51.1933596860
settlement_only_imbalance: -8.8066403140 pp
final_base_pct:           52.6644748278
final_imbalance:          -7.3355251722 pp
imbalance_closed_pct:     16.7046125344

Tuned Rizzolver Profile

The tuned profile keeps the target close to Rizzolver's observed WETH inventory, increases order size so the strategy can correct inventory with fewer fills, enables transaction-cost-adjusted quotes, and uses Rizzolver reward estimates as a budget for locally negative rebalancing trades.

python3 replay_with_avellaneda.py \
  --settlements fixtures/ethereum-rizzolver-2026-06-09-2d/settlement_events.csv \
  --candles-csv fixtures/ethereum-rizzolver-2026-06-09-2d/candles.csv \
  --initial-base 10000 \
  --initial-quote 30000000 \
  --inventory-target-base-pct 40 \
  --order-amount 1.0 \
  --risk-factor 3.0 \
  --min-spread 0.2 \
  --add-transaction-costs \
  --reward-aware \
  --out-dir results/fixture_ethereum_rizzolver_2d_tuned

Expected headline:

settlement_only_pnl_pct: 31.6506697718
pnl_pct:                 31.6028255214
avellaneda_vs_settlement_only_pct: -0.0478442504
avellaneda_vs_settlement_only_quote: -22341.7339137867
avellaneda_vs_settlement_only_result: worse
trades: 1425
solver_reward_quote: 13297.2158681541
reward_budget_after_avellaneda_quote: -9044.5180456326
reward_coverage_ratio: 0.5951738535
reward_aware_skipped_trades: 364
settlement_only_base_pct: 51.1933596860
settlement_only_imbalance: +11.1933596860 pp
final_base_pct: 47.9910933966
final_imbalance: +7.9910933966 pp
imbalance_closed_pct: 28.6086249283