Vest: a crypto leg's stop holds back the engine's default slippage, not NDX's

Crypto (exchangeInfo asset "crypto": BTC, ETH, SOL, HYPE) trades on weekends
when NDX, SPX and GC are shut, but its stop slippage on Vest is unmeasured, and
its book is a fraction of NDX's: about $10M an hour on a weekend against $600M,
with a batch's stops firing together. Its stops now leave 0.1% of the
position unspent (the engine's default) instead of the 0.02% measured on NDX
stop-outs; every other symbol keeps 0.02%.

The share rides on the picked contract and is used wherever a Vest leg's stop
is sized: the batch's plan, the leg's own stop, the dashboard's next stop, and
the 7:55 PM ET reset guard, which now sums each open position's own share.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Li
2026-10-30 17:26:53 -05:00
co-authored by Claude Opus 5.5
parent 618976bf5f
commit 10da0ca83e
8 changed files with 94 additions and 16 deletions
+12
View File
@@ -148,6 +148,18 @@ export function nextVestResetMs(now: number): number {
* past the trigger on average, 2.25 at worst — the 0.1% default held back
* about 30. The flat 10% of the limit still applies under it. */
export const VEST_STOP_SLIPPAGE_FRACTION = 0.0002;
/** Crypto's (asset "crypto" in exchangeInfo: BTC, ETH, SOL, HYPE): unmeasured,
* so the engine's default share (trading-logic's DLL_SLIPPAGE_FRACTION).
* Vest's BTC book trades ~$10M an hour on a weekend against NDX's ~$600M, and
* a batch's stops fire together: a square-root impact estimate scaled to the
* NDX measurement puts the worst fill near 7bp. To come down once crypto
* stop-outs are measured, as NDX's was. */
export const VEST_CRYPTO_STOP_SLIPPAGE_FRACTION = 0.001;
/** The stop-slippage share for a symbol of this exchangeInfo asset class. */
export function vestStopSlippageFraction(asset: string | undefined): number {
return asset === 'crypto' ? VEST_CRYPTO_STOP_SLIPPAGE_FRACTION : VEST_STOP_SLIPPAGE_FRACTION;
}
/**
* What to do with an open position before the daily reset so the reset can't