Run the market, prototype
Table of Contents
| Item | Where |
|---|---|
| Prototype | the prototype page |
| Gemini review | none |
| Answers | Gemini's review of Control how a market ticks |
| Group | Market data prototypes |
1. Summary
The built Market regime tab does six jobs on one page. It reads the market, forces it, sets what moves it, draws every feed's arrivals, checks each feed against its law, and logs the loop. Gemini reviewed it and drew it twice. This prototype takes the review's look and its best ideas. It drops every control and model the service does not have, captures the useful ones for later, and splits the page into six tabs, one question each. Its raster is a temporal raster: an hour folded by the minute, so a regime spell, which lasts minutes, is visible at all.
It is throwaway. It reads no service, and the market on it is a small model of
the service's own, run in the page with a fixed seed. A link can open one tab,
for example run-the-market/#arrivals. The bar at the top switches between a
system administrator, who sets the market, and a tenant, who reads it.
2. Detail
2.1. The tabs
| Tab | The question | What it holds |
|---|---|---|
| Now | What is the market doing? | The pace over two minutes, with the regime and the heat stacked and the active spells shaded. The market's intensity λ(t) against the ticks a second it produced. The force switch, who holds the state, how long it has held, the mean spells and the active share. The last changes. |
| Settings | What moves it? | The six numbers in four cards: the regime, the heat, simulated time, the tails. Each field shows the number it implies, the old value once it is edited, and the service's own rule as it is typed. Apply shows the change before it is made. |
| Arrivals | How do the ticks come? | The last hour as a temporal raster, coloured by all feeds, a class, one feed or the pace. Below it, the zoom: two minutes, feed by feed. |
| Laws | Which law does each feed draw from? | The three families with their intensity and their stability rule, and every feed's law, read only, each row linking to that feed's Arrivals tab. |
| Fit | Does each feed follow its law? | Seen against asked per feed on a log scale, the chosen feed's gaps against Exp(1), and the loop's health. |
| Trace | What did the loop do? | Every decision, filtered by kind and by feed, newest first. |
A strip of seven figures stays above every tab: the state, the multiplier, the pace, the heat's loop gain, ticks a second, the market speed and the lateness. That is the review's strongest idea. A person on any tab can see the market without leaving the question they came with.
2.2. The intensity and the ticks
The review's headline chart was the arrival intensity λ(t) with the tick count over it. The built tab had no such chart: it drew the pace, which is a multiplier, and ticks a second on a separate axis. λ(t) is the sum over the feeds of each law's rate, times its sensitivity, times the pace, with a Hawkes feed's excitation on top. It is measured in ticks a second, as the count is, so the two share an axis, which the review's two axes did not need. A spike in λ is a Hawkes burst, and a gap between λ and the bars is the noise of a point process. The service already reports each feed's intensity now, so the built chart needs the loop to keep their sum in its history beside the heat.
2.3. The laws
The review drew a model selector for the whole engine. The market has no law: each feed has its own, chosen on its Arrivals tab. What is worth having is the view across feeds, as the GMM components prototype gives for mixtures: how many feeds draw from each law, the law's formula and its stability rule, and every feed's law with its last minute of ticks. It is read only, and each row opens the feed's Arrivals tab, so a law is still edited in one place.
2.4. The temporal raster
The user asked for the raster to be a temporal raster plot. Time is folded: each column is a minute and each cell one second of it, so an hour is a 60 by 60 grid. A regime spell lasts five or ten minutes, so the two-minute raster of the built tab almost never shows one whole. Folded, a busy spell is a band of bright columns, and the strip above the columns says which minutes were active. The scale tops out at the 98th percentile, so one burst does not wash every other cell out.
It folds two ways. An hour by the second shows the spells. Ten minutes by the tenth of a second, sixty columns of ten-second blocks, shows the bursts inside them, which is what a fast market needs once a second holds too many ticks to tell a burst from a busy spell.
2.5. It has to hold at any tick rate
A mark a tick does not scale. A mark is about two pixels wide, so a two-minute row saturates at a few hundred ticks, and at fifty times today's rates every row is a solid bar. Every figure on the Arrivals tab is therefore a count at heart:
- The folded raster is a count a cell already, so it reads the same at any rate.
- The feed-by-feed lanes draw every tick while the busiest row holds fewer than 250, and otherwise draw each of 120 slots coloured by its count against what the feed's law asks for at the window's pace. A row brightens when it runs ahead of its law, so rows brightening together is still what a market-wide factor looks like. Auto chooses, and a person can force either.
The prototype's Load control multiplies every feed's rate by ten or fifty, to show the marks saturate and the counts hold. It is the prototype's own, not a control the screen would carry.
2.6. What was taken from the review
| From the review | Here |
|---|---|
| A telemetry strip above the content | Kept on every tab, with the product's own figures |
| Cards with an icon, a mono uppercase title, a line of purpose and the action on the right | Every card |
| Each setting with the number it implies under it | Every field: a spell's rate, the loop gain, the half-life, a wall minute in simulated time, the tilt when active |
| Figures without float noise | Six significant figures at most: 0.0016666666666666668 prints as 0.00166667 |
| A spell length, not a rate | The regime's two fields are spells in seconds; the rate is what they imply |
| A half-life beside the decay | Shown as what the decay implies; the decay stays the stored number |
| Window presets of 30, 60 and 120 seconds | On the zoom |
| Rows coloured by asset class, with a count | The class tokens, and seen against asked |
| A toast after a change | Kept |
| The dark, dense, monospaced look | On the product's tokens, with Gemini's cyan, emerald, amber and rose mapped to the accent, up, warn and down |
2.7. What was dropped, and why
| From the review | Why not |
|---|---|
| Pause and resume the engine | The market is not paused; a feed is started and stopped on the feeds screen |
| Inject a burst of ticks | No such verb exists; a person forces a state instead |
| ACD and inhomogeneous Poisson models | Not in the service; a feed's law is periodic, Poisson or Hawkes, and is set on its own Arrivals tab |
| Hawkes alpha as a market setting | Clustering is a feed's own, on its Arrivals tab; the market has a heat, not an alpha |
| Heat thresholds that turn the state | Wrong model: the chain turns on its own, and the heat adds to the pace |
| A third, volatile state | The chain has two states |
| A cross-asset excitation matrix | Out of scope, as the market volatility channel note records |
| Burst and cross-excited tick markers, spillover arcs | The service does not classify ticks, so the marks would claim what nobody measured |
| Two units on one axis | The pace and ticks a second have axes of their own |
| A frame-rate counter and version badges | They describe the page, not the market |
| A "now" line inset from the axis's end | The axis ends at now |
| One arrival model for the whole engine | A law is a feed's own; the Laws tab reads them across feeds and links to each |
| Font Awesome, Chart.js and MathJax | The product has its own icons and draws its own figures |
2.8. Captured for later
Some of what the review drew does not exist but is worth having. Each is a capture in the product backlog inbox:
pause_and_resume_the_market: freeze the market's clock and resume where it was.inject_an_exogenous_tick_burst: a burst of real ticks, or the heat alone, at once.let_one_feeds_ticks_excite_anothers: a multivariate Hawkes over the feeds, the review's cross-asset matrix.add_an_acd_arrival_law: the review's ACD model, as a fourth law.let_the_heat_turn_the_regime: what the review's heat thresholds were reaching for, without a threshold that flaps.add_a_panic_state_to_the_regime: a third state above active, rare, short and much faster, which the review drew as volatile burst.calibrate_a_feeds_arrival_law_from_its_ticks: the "calibrate" in the review's selector.
2.9. What the review missed that the built tab had
The τ axis, the regime band behind the arrivals, seen against asked, the QQ plot and the loop's trace. All five stay.
3. Signed off
Decided 2026-10-28, after four rounds: five tabs, then λ(t) and the Laws tab, then the temporal raster, then its finer fold and the density lanes. The build follows this page, in the task Split the market regime tab into screens of their own.
4. See also
- Control how a market ticks — the prototype this one follows, and the split it keeps.
- Carry a market-wide arrival regime — the story whose task builds it.
- Market data prototypes — the group.