Model file structure
Export a ModelDefinition (default export or named export) and use Params helpers.
export const model: ModelDefinitionProperties
Stable model identifier used by registry and APIs.
Bar interval for the model run.
Runtime parameters built with Params helpers.
Primary bar-by-bar lifecycle handler.
Returns
onBar returns ModelAction | ModelAction[] | void
Implementation Example
import { ModelDefinition, Params, defineParameters } from "@/lib/models";
export const model: ModelDefinition = {
id: "sma-cross",
name: "SMA Cross",
version: "1.0.0",
timeframe: "1h",
parameters: defineParameters({
market: Params.market({
default: { id: "TOKEN_OR_TICKER", provider: "polymarket" },
description: "Market to trade",
}),
fast: Params.integer({ default: 10, min: 2, max: 100 }),
slow: Params.integer({ default: 30, min: 5, max: 200 }),
size: Params.number({ default: 50, min: 1, max: 1000 }),
}),
defaultState: { last: "flat" as "flat" | "long" | "short" },
async onBar(ctx) {
const { params, orders, state, setState } = ctx;
const series = ctx.getSeries();
const fast = series.sma(params.fast);
const slow = series.sma(params.slow);
if (!fast || !slow) return;
if (fast > slow && state.last !== "long") {
setState({ last: "long" });
return orders.buy(params.size, { tag: "sma-long" });
}
if (fast < slow && state.last !== "short") {
setState({ last: "short" });
return orders.sell(params.size, { tag: "sma-short" });
}
},
};
export default model;