// The engine is a standalone global — no build step, no dependencies.
const snap = LLGameTheory.snapshot(closes, volumes, {
intraday: false, // true for crypto/futures intraday bars
sharesOutstanding: null // pass it for equities to get a real turnover rate
});
snap.gts // -100..+100 conviction dial
snap.stance // 'long' | 'short' | 'flat'
snap.regime // 'trend' | 'revert' | 'random_walk'
snap.crowding // { score, crowdedSide, payoffInversion }
// Full series for charting:
const full = LLGameTheory.gameTheoryScore(closes, volumes);
full.gts // Float64Array
full.diagnostics.referencePrice // Grinblatt-Han cost basis line
// Screener use: rank a watchlist by conviction with clean liquidity.
rows.sort((a,b) => b.gts - a.gts)
.filter(r => r.microstructure.vpinPercentile < 80 && !r.crowding.payoffInversion);
Every number here is derived from published models, each cited on the panel it appears in. These are descriptions of market state, not predictions, and none of this is investment advice. Percentile readings need a long history to mean anything — treat anything computed on fewer than ~250 bars as indicative only.
The same logic as this page, as TradingView scripts: LL Game Theory Score plots order-flow toxicity, Kyle's lambda, crowding and disposition overhang.