From 83df308c371645afba97d5000e65b6f4c088bbe2 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Mon, 16 Mar 2026 12:29:47 -0700 Subject: [PATCH] Feat: Add orderbook context to strategy base --- lib/strategies/base.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/strategies/base.js b/lib/strategies/base.js index a974915..45c5114 100644 --- a/lib/strategies/base.js +++ b/lib/strategies/base.js @@ -2,21 +2,26 @@ * Base strategy class. All strategies extend this. * * Strategies receive market state updates and emit trade signals. - * Signals are { side: 'yes'|'no', price: number, size: number, reason: string } + * Signals are { side: 'yes'|'no', price: number, maxPrice: number, size: number, reason: string } + * + * `price` = ideal/target price in cents + * `maxPrice` = maximum acceptable fill price (slippage tolerance) */ export class BaseStrategy { constructor(name, config = {}) { this.name = name; this.config = config; this.enabled = true; - this.mode = 'paper'; // 'paper' | 'live' + this.mode = 'paper'; } /** * Called on every market state update. + * @param {object} marketState - includes yesPct, noPct, orderbook, ticker, closeTime, etc. + * @param {string} caller - 'paper' | 'live' — so strategies can track per-caller state * Return a signal object or null. */ - evaluate(marketState) { + evaluate(marketState, caller = 'paper') { throw new Error(`${this.name}: evaluate() not implemented`); }