From 7ba25a1eaa623770de512f00cf27ee0fc135a37e Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Mon, 16 Mar 2026 12:30:09 -0700 Subject: [PATCH] Feat: Split paper/live tracking, orderbook pricing --- lib/strategies/momentum-rider.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/strategies/momentum-rider.js b/lib/strategies/momentum-rider.js index bf9c752..3a43fb3 100644 --- a/lib/strategies/momentum-rider.js +++ b/lib/strategies/momentum-rider.js @@ -5,32 +5,36 @@ export class MomentumRiderStrategy extends BaseStrategy { super('momentum-rider', { triggerPct: config.triggerPct || 75, betSize: config.betSize || 2, - cooldownMs: config.cooldownMs || 60000, + slippage: config.slippage || 3, + cooldownMs: config.cooldownMs || 20000, ...config }); - - this.lastTradeTime = 0; - this.lastTradeTicker = null; + + this._lastTrade = { + paper: { time: 0, ticker: null }, + live: { time: 0, ticker: null } + }; } - evaluate(state) { + evaluate(state, caller = 'paper') { if (!state || !this.enabled) return null; + const track = this._lastTrade[caller] || this._lastTrade.paper; const now = Date.now(); - if (now - this.lastTradeTime < this.config.cooldownMs) return null; - if (state.ticker === this.lastTradeTicker) return null; + if (now - track.time < this.config.cooldownMs) return null; + if (state.ticker === track.ticker) return null; const { yesPct, noPct } = state; const trigger = this.config.triggerPct; let signal = null; - // Buy the favorite! if (yesPct >= trigger && yesPct < 99) { signal = { strategy: this.name, side: 'yes', price: yesPct, + maxPrice: Math.min(yesPct + this.config.slippage, 95), size: this.config.betSize, reason: `Riding Momentum! Yes is at ${yesPct}%`, ticker: state.ticker @@ -40,6 +44,7 @@ export class MomentumRiderStrategy extends BaseStrategy { strategy: this.name, side: 'no', price: noPct, + maxPrice: Math.min(noPct + this.config.slippage, 95), size: this.config.betSize, reason: `Riding Momentum! No is at ${noPct}%`, ticker: state.ticker @@ -47,8 +52,8 @@ export class MomentumRiderStrategy extends BaseStrategy { } if (signal) { - this.lastTradeTime = now; - this.lastTradeTicker = state.ticker; + track.time = now; + track.ticker = state.ticker; } return signal;