Open Trading Surface

Changelog

All notable changes to Open Trading Surface. Versions follow semantic versioning. This page is generated from CHANGELOG.md.

3.53.3 — understanding, not work

3.53.2 — dependency claims, stated precisely

3.53.1 — a tagline the product can stand behind

3.53.0 — Open Trading Surface

3.52.1 — the site catches up with the terminal

3.52.0 — every judgment model gets hands, and the terms say whose opinions these are

3.51.0 — the venture book gets hands

3.50.0 — the venture book: what the statements cannot see

3.49.0 — every overlay carries its relationship to the price

3.48.0 — the rotation itself, charted

3.47.1 — the plot is always a snapshot

3.47.0 — the model of models: what the market is looking at

3.46.1 — the frame holds every pane

3.46.0 — the pricing engine reaches the screen

3.45.2 — the daemon that could not come back

3.45.1 — the ledger outgrew its reader

3.45.0 — the pricing engine: every model, one interface, on the chart

3.44.1 — three panels, one computation

3.44.0 — the interpretation pane: the model explains itself

3.43.2 — one headline valuation: the legacy blend says what it is

3.43.1 — the sweep that could not advance

3.43.0 — realtime tailing for 1-minute charts, opt-in

3.42.0 — back-calculated bands for the index, and on demand

3.41.1 — the band back-fills its own history

3.41.0 — one model on the chart: the superseded overlays retired

3.40.0 — the patient foundation, the investment phase, and the stance-first panels

3.39.0 — the valuation band: normal variation bounded, degree not judgment

3.38.0 — the fundamental trend: trend correlation without autocorrelation

3.37.1 — the accuracy test projects, it does not price

3.37.0 — the fundamental-accuracy test: the level adoption criterion, run rather than cited

3.36.0 — the level upgrade surfaces: v2 becomes visible, and its risk-free rate becomes real

3.35.0 — the widened leave-one-out set needs a cache, not a timeout

3.34.0 — the sector cohort preference never fired: a kind the producer doesn't emit

3.33.0 — horizon models, spiral loop 3a: the per-name loading, fitted walk-forward

3.32.0 — horizon models, spiral loop 2: the short leg earns its coefficient, and the double-count is gone

3.31.0 — horizon models, spiral loop 1: three duration models, a class registry, and the composite tracking line

3.30.0 — the value line is a native model series, not a separate chart

3.29.0 — the Valuation overlay: the earnings-justified chart, from the price identity

3.28.1 — fix overlapping transcripts in a multi-panel view

3.28.0 — name your views

3.27.0 — a tab is a view, not a security

3.26.0 — a premium only compares like with like

3.25.0 — the cohort re-rating enters the attribution

3.24.0 — one comparable set, used everywhere

3.23.0 — peer groups enter the decomposition, and shed their cap

3.22.0 — a peer group is a cohort with a subject

3.21.0 — the Screener tab is retired; there is one thing now

3.20.0 — the full screening machinery, inside Cohorts

3.19.0 — the screen builder lives in Cohorts (step 2)

3.18.0 — a cohort is a screen (step 1: every cohort is expressible)

3.17.0 — nothing is auto-excluded; exclusion is your choice

3.16.0 — a cohort declares whether it prices its members

3.15.0 — the watchlist tool surface is retired

3.14.0 — Watchlists becomes Alerts; lists live in Cohorts

3.13.0 — a custom cohort is an editable list

3.12.0 — a saved screen is a cohort

3.11.0 — a cohort no longer needs a shadow watchlist

3.10.0 — you can open a cohort

3.9.0 — a watchlist can hold an index

3.8.3 — the reseed can finish

3.8.2 — the reseed can reach the names it was protecting

3.8.1 — the self-check reaches every model

3.8.0 — the model now checks itself against what was reported

3.7.1 — 3.7.0 broke calibration, and the test said it was fine

3.7.0 — the rate on debt is reported, not invented

3.6.3 — a missing valuation no longer disables feature selection

3.6.2 — four bugs the first live run exposed

3.6.1 — the Attribution picker points at returns

3.6.0 — Attribution now selects features against price CHANGES

3.5.0 — Standing removed

3.4.2 — the Standing tab never rendered

3.4.1 — the level registry was dead in the shipped build

3.4.0 — two panels, two valuations, no warning

3.3.0 — the sector models face the gate

3.2.1 — equity cannot be cheaper than debt

3.2.0 — the prediction held, and the third model

3.1.1 — one function was answering two questions

3.1.0 — the study was reading a second definition of substantiated value

3.0.3 — the block version named the wrong model

3.0.2 — a zero that meant "not reported" arrived as a measurement

3.0.1 — the routing table was never being asked

3.0.0 — the routing table finally has somewhere to route

2.99.0 — a dead end that knows the detour should mention it

2.98.0 — the picker was baking the open tab's ticker into every candidate

2.97.0 — the time axis, which most of the catalogue lives on

2.96.0 — "insufficient_overlap" was hiding two category errors

2.95.0 — the picker was calling a route that had never been called

2.94.0 — the picker could not express the analysis it was calling

2.93.0 — the probabilities, as distinct from the weights

2.92.0 — feature selection analysis, and the gravitational family

2.91.0 — the Attribution view actually attributes

2.90.0 — Attribution reaches the UI, and Operating Model becomes a parent

2.89.0 — the attribution panel, and the tool's contract

2.88.0 — camps F and G: the investigation loop, and forecasting both sides apart

2.87.1 — cross-sectionality is a property of the top layer, not of the model

2.87.0 — multiple top-level models, routed by applicability

2.86.0 — the cost rate mattered more than the discount rate, and camp C had left it broken

2.85.0 — the thresholds are judgment, a short page is not a complete band, and the ledger fill is resumable

2.84.1 — the census, and the relevance floor

2.84.0 — joint uncertainty, the claim axis, and compositional submodels

2.83.0 — coefficients belong to the version, or history cannot be recomputed honestly

2.82.0 — the residual is the product: persistence, regime, and what a move actually means

2.81.0 — the cohort and macro candidates, and the two variables that would have fooled us

2.80.0 — the gate gets a second axis: revalidatable beats lucky

2.79.0 — the security block, rebuilt: no price in the level, a real cost of capital, and advantage that has a duration

2.78.0 — the admission gate: nothing enters the known block without earning it

2.77.0 — the model now resolves to the price, and reports what it cannot explain

2.76.0 — is the within-cohort spread the market, or is it us?

2.75.0 — Camp 4 completed: equilibrium is reachable, and carries what we now know

2.74.0 — Camp 4: Equilibrium as an Operating Model

2.73.1 — a cache written under an old schema is stale even when it is fresh

2.73.0 — per-name applicability, and the variance study generalised across cohort axes

2.72.0 — the standard valuation declares where it does not apply

2.71.1 — the study now warns when the between-sector term is measuring US

2.71.0 — the sector variance decomposition becomes a tool

2.70.0 — Camp 3: the Relationship Operating Model

2.69.0 — membership was filtered by liquidity, and by nothing that checked whether a company still exists

2.68.0 — Camp 2: Security and Peer Group on the contract

2.67.0 — Camp 1: the Operating Model contract

2.66.0 — Camp 0: the substrate repair

2.65.1

2.65.0

2.64.0

2.63.1

2.63.0

2.62.2

2.62.1

2.62.0

[2.61.0] — Peer groups become real: a bug fix, a Cohorts tab, cohort-driven comps, and weighted groups

[2.60.1] — Fix: the decomposition was reachable as a tool but invisible in the UI

[2.60.0] — Value decomposition, camp 6: absolute or relative, but say which. VALUE-DECOMPOSITION-SPEC complete.

[2.59.0] — Value decomposition, camp 4: the negative results become part of the product

[2.58.0] — Value decomposition, camp 3b: the decomposition becomes queryable

[2.57.0] — Value decomposition, camp 2: premium bands, without lookahead

[2.56.0] — Value decomposition, camp 3a: the premium panel, and history without waiting three years

[2.55.0] — Value decomposition, camp 1: the gap was never an error

[2.54.0] — Value decomposition, camp 0: the cohort lattice

[2.53.0] — Model honesty, camp 6: a point-in-time track record, or none at all

[2.52.0] — Model honesty, camp 5: scope — the model says what it cannot see

[2.51.0] — Model honesty, camp 4: calibration coherence and driver fade

[2.50.0] — Model honesty, camp 3: the influence map stops flattering itself

[2.49.0] — Model honesty, camp 2: fair value stops pretending to be a number

[2.48.0] — Model honesty, camp 1: elasticities reconciled with the influence graph

[2.47.0] — EV roll-forward bands and continuous crosshair linking

[2.46.0] — Charting arc, camp 4: multi-chart layouts

[2.45.0] — Charting arc, camp 5: the performance envelope, measured

[2.44.0] — Charting arc, camp 3: valuation bands

[2.43.0] — Charting arc, camp 2: expression series and the accountability chart

[2.42.0] — Charting arc, camp 1: series transforms

[2.41.4] — Chart isolation: overlays and indicators are scoped per symbol

[2.41.3] — Support view Guide/What's-new crash fixed

[2.41.2] — Statement series are one click, not a magic search term

[2.41.1] — Diagnostics fix its own first false alarm

[2.41.0] — Self-support complete: the Support view

[2.40.0] — Self-support, camp 3 (agent side): education that executes

[2.39.0] — Self-support, camp 2: troubleshooting as behavior

[2.38.0] — Self-support, camp 1: the knowledge base is generated from the code it describes

[2.37.6] — The chart fits its window again

[2.37.5] — Fair value belongs on the price axis

[2.37.4] — A model saved on Saturday is no longer invisible on the chart

[2.37.3] — Model conclusions visible in the Macro/Data panel, not hidden behind a search term

[2.37.2] — Model conclusions in the chart's own overlay picker

[2.37.1] — Forecast & attribution: no more zeros, and no more garbage either

[2.37.0] — The deflation is live; the mountain is documented

[2.36.0] — Ascent 3: three-statement articulation. The mountain is climbed.

[2.35.0] — Ascent 2 complete: the scoreboard accrues quarterly

[2.34.0] — Ascent 2, first camp: quarterly frequency

[2.33.0] — Ascent 1 complete: factor edges reach individual segments

[2.32.0] — Ascent 1, third camp: disclosure wired into the model

[2.31.0] — Ascent 1, second camp: segment-scoped growth drivers

[2.30.0] — Ascent 1 begins: segment-level revenue history

[2.29.1] — Fix: a confident 0.00% that actually meant "no data"

[2.29.0] — Attribution runs are time series, and chart like them

[2.28.1] — The model view can build chains by hand

[2.28.0] — The operating model becomes a real causal graph, and starts keeping its own score

[2.27.1] — Fix: the CI UI check assumed a portfolio existed

[2.27.0] — The strategy reaches the screen: graded visuals, honest rebalance costs, CI-verified UI

[2.26.0] — Phase 6: the adversarial pass, and scoring decisions instead of luck

[2.25.0] — Phase 5: the push half — re-underwriting when it matters, sizing by what you know

[2.24.0] — Phase 4: the discovery surface stops flattering you

[2.23.1] — Fix: the agreement test hardcoded an absolute path and broke CI

[2.23.0] — Honest confidence, the reference class, and the valuation run backwards

[2.22.0] — The operating model gets its real data foundation, and events finally have a home

[2.21.1] — The breadcrumb reaches the top: worldview → thesis, with drift detection

[2.21.0] — The workflow breadcrumb: every holding traces back to the view that produced it

[2.20.1] — Documentation and test coverage catch up with the features

[2.20.0] — Event markers you can interrogate: hover, click through, and see the operating-model link

[2.19.1] — Fix: spurious "No FMP API key embedded" warning on every chart

[2.19.0] — Custom indicators on the chart + backtests painted on price (specs complete)

[2.18.0] — PIT bar replay: replay without lookahead (Spec B: part 2)

[2.17.0] — Rule backtesting over the series DSL (Spec B: part 1)

[2.16.0] — Detection on the chart (Spec A complete: world-model contract met)

[2.15.0] — Automated pattern & trendline detection (Spec A: engine + tool)

[2.14.0] — Series-valued DSL + user-defined indicators (charting specs: shared foundation + C-foundation)

[2.13.0] — Forecast-attribution calculator in the Operating Model view

[2.12.0] — Event markers, events pane & Analysis sentiment (event overlays, part 2)

[2.11.0] — Unified event + sentiment engine (event overlays, part 1)

[2.10.0] — Operating-model attribution + self-healing daemon on upgrade

[2.9.2] — Fix: Compare overlay drew nothing

[2.9.1] — Fix: charts failed to load on a clean install (ENOENT engine.js)

[2.9.0] — Full external-series coverage: FMP economic, treasury & indices

[2.8.0] — Cross-series chart overlays (chart overlays, part 2)

[2.7.0] — Cross-series analysis engine (chart overlays, part 1)

[2.6.1] — Documentation accuracy pass

[2.6.0] — Rich operating models: data-driven calibration (phase c)

[2.5.0] — Rich operating models: graphical influence view (phase b)

[2.4.0] — Rich operating models: external factors (phase a)

[2.3.5] — Screener responsiveness

[2.3.4] — Auto-refresh after key setup

[2.3.3] — Terminal reliability

[2.3.2] — Feedback loop, quality & hardening

[2.3.1] — Rebrand to Open Trading Surface

[2.3.0] — Distribution & legal

[2.2.0] — Hardening

[2.1.0] — Worldview & thesis probability

[2.0.0] — Company operating models

[1.9.0] — The fully-leveraged agent

[1.8.0] — Thesis engine

[1.7.0] — Institutional portfolio operations

[1.6.0] — Research memory

[1.5.0] — Surveillance & relative analysis

[1.4.0] — Professional screener & portfolio analytics

[1.3.0] — Foundation