88 lines
4.3 KiB
TOML
88 lines
4.3 KiB
TOML
# Strategy profiles. `newsom-mm` is tuned for the Gavin Newsom 2028 Dem-nomination
|
|
# market from a live microstructure sample (2026-07-06): price ~0.195, tick 0.001,
|
|
# 2-tick spread, thin touch (~$20-250), VERY quiet tape (~0.1 trades/min),
|
|
# rewards: min 100 shares/order, 5.5c band, ~$52/day rate, 25% maker-rebate pool.
|
|
|
|
[profiles.newsom-mm]
|
|
# --- fair value ---
|
|
micro_levels = 3
|
|
flow_ewma_halflife_s = 120
|
|
# --- spread / skew ---
|
|
gamma = 0.6 # inventory skew; sized so full cap leans ~1-2 ticks
|
|
delta_min_ticks = 2 # half-spread floor = 2 ticks (market spread is 2)
|
|
c_vol = 1.5
|
|
c_tox = 3.0
|
|
# --- vol horizons ---
|
|
vol_short_halflife_s = 10
|
|
vol_long_halflife_s = 900
|
|
# --- sizing / inventory ($50 orders, $200 net max position) ---
|
|
base_size_usdc = 100.0 # per token side, split into `layers` orders
|
|
q_max_usdc = 200.0 # NET directional cap (YES minus NO exposure)
|
|
q_soft_frac = 0.6 # stop adding at net $120, exits get urgent
|
|
layers = 2 # 2 x $50 YES orders; NO auto-sizes to reward floor
|
|
reward_size_mult = 1.5 # bump reward-eligible orders to 1.5x the min (100 -> 150 sh)
|
|
layer_step_ticks = 2
|
|
# --- placement / churn ---
|
|
reprice_ticks = 2 # ignore 1-tick FV flicker (hold queue position)
|
|
resize_frac = 0.2
|
|
min_edge_ticks = 1 # never bid above FV - 1 tick
|
|
# --- regime (damped for a quiet tape: one 250-share print must not flap us) ---
|
|
event_cooloff_s = 30 # shorter: this is a deep, slow market
|
|
event_jump_ticks = 6 # 0.006 = ~3% jump -> pull quotes
|
|
event_sweep_mult = 6.0 # print must be >=6 order-sizes
|
|
event_sweep_frac = 1.0 # AND consume ~all near-touch depth to count as a sweep
|
|
trend_flow_z = 1.8
|
|
# --- lifecycle (resolves 2028 — irrelevant here) ---
|
|
end_date_taper_days = 7
|
|
reduce_only_hours = 24
|
|
halt_before_hours = 2
|
|
# --- exits ---
|
|
exit_urgency_s = 900
|
|
merge_min_size = 20.0
|
|
|
|
|
|
# romania-pm: "Next PM of Romania" — Alexandru Nazare leg. Live sample 2026-07-06:
|
|
# price ~0.487/0.488 (near 50/50 -> max reward score, low extremity), tick 0.001,
|
|
# 1-tick spread, ~$4k/day tape, rewards: min 50 shares/order, 4.5c band, ~$257/day
|
|
# rate, 25% rebate. endDate is stale (past) but still accepting -> handled as no-end.
|
|
[profiles.romania-pm]
|
|
micro_levels = 3
|
|
flow_ewma_halflife_s = 120
|
|
# --- spread / skew ---
|
|
gamma = 0.6
|
|
delta_min_ticks = 1 # tight market (1-tick spread); quote close to score
|
|
c_vol = 1.5
|
|
c_tox = 3.0
|
|
# --- vol horizons ---
|
|
vol_short_halflife_s = 10
|
|
vol_long_halflife_s = 900
|
|
# --- sizing / inventory (MINIMUM reward size — thin/gap-prone book, so a fill
|
|
# must be small & disposable, not a directional bag. Reward < max, on purpose) ---
|
|
base_size_usdc = 22.0 # ~50 sh at these prices = the reward MIN, nothing more
|
|
q_max_usdc = 100.0 # ceiling (min-size orders make accumulation slow anyway)
|
|
q_soft_frac = 0.6
|
|
layers = 1
|
|
reward_size_mult = 1.0 # floor each order to exactly the 50-share reward min
|
|
layer_step_ticks = 2
|
|
# --- placement / churn (STICKY: thin/noisy tape must not flap us out of the
|
|
# reward queue; we reprice only on real moves, not microprice jitter) ---
|
|
reprice_ticks = 3 # ignore <=3-tick FV jitter (hold queue position)
|
|
resize_frac = 0.6 # don't cancel/replace on a regime size-flip (154<->77)
|
|
min_edge_ticks = 1
|
|
# --- regime: rest through noise (high trend threshold) but pull HARD on a real
|
|
# sweep/jump, since the gapped book makes a toxic fill costly ---
|
|
event_cooloff_s = 30
|
|
event_jump_ticks = 5 # 0.005 jump from a thin book -> pull (gap protection)
|
|
event_sweep_mult = 3.0 # thinner book: a smaller print is a real sweep here
|
|
event_sweep_frac = 0.8 # consuming ~80% of near-touch depth counts
|
|
trend_flow_z = 2.6 # noisy flow z on a $4k/day tape -> raise the bar
|
|
trend_vol_ratio = 5.0 # ~1 trade/hr: microprice jitter must NOT halve size
|
|
# (real gaps still caught by event_jump_ticks)
|
|
# --- lifecycle (end date stale/None -> these are inert; acceptingOrders governs) ---
|
|
end_date_taper_days = 7
|
|
reduce_only_hours = 24
|
|
halt_before_hours = 2
|
|
# --- exits ---
|
|
exit_urgency_s = 900
|
|
merge_min_size = 20.0
|