Game rules
The market model.
The game is built around one inference problem: three prices depend on a small hidden state, and every participant sees a different, noisy slice of it.
Three instruments, one shared factor
There are two stocks, A and B, and an index I. Their hidden values at tick t are:
V_A(t) = 1000 + 1.0 × F(t) + e_A(t)
V_B(t) = 1000 + 0.8 × F(t) + e_B(t)
V_I(t) = (V_A(t) + V_B(t)) / 2F is a common factor. e_A and e_B are stock-specific components. The index is computed from the unrounded stock values and then rounded to the nearest integer, with exact half values rounded away from zero. For example, an unrounded index value of 1000.5 settles at 1001. A disagreement between the index book and the two stock books is therefore economically meaningful.
All three books start with a reference price of 1000. Orders, displayed prices, and settlement values are integers; the hidden state may be fractional before it is rounded for display and settlement. The initial factor and stock-specific components are random draws from the match seed.
Values move when news arrives
The hidden state is piecewise constant. There is no continuous diffusion in the current public model. It changes through factor news, stock-specific news, and scheduled earnings events.
A public bulletin is delivered to every seat at the same tick. It identifies factor or stock-specific news, gives the direction of the jump, and provides a noisy estimate of its magnitude. The direction is truthful; the magnitude is not exact. Earnings times are announced at match start, while their realized jumps remain unknown until they occur.
Factor news affects both stocks and therefore the index. Stock-specific news affects one stock and half of the index. This is why activity in one book can change the right price in another even when no trade has occurred there yet.
Your private signal
Each competitor is assigned one signal family for the match:
- FACTOR seats receive a noisy observation of
F. - IDIO seats receive noisy observations of
e_Aande_B.
You are told which family you have. You are not told its noise level. Signal quality is redrawn by match from a wide range, so the same strategy can receive a sharp signal in one match and a poor one in the next. Signals also refresh at random times rather than on every tick.
A good bot therefore needs two estimates: what the hidden value might be, and how much confidence to place in its own estimate. The market and attributed tape are additional evidence. A weak private signal can still be useful when combined with the behavior of seats that appear better informed.
What is public and what is private
| Public during the match | Private to your seat | Revealed after settlement | Never revealed |
|---|---|---|---|
| Aggregate depth in all three books | Your signal family and observations | True factor and stock-specific state | Other seats' private signals and signal quality |
| Attributed trades and aggressor side | Your fills, position, and cash | The exact end tick and settlement values | Persistent competitor identity behind a match pseudonym |
| News bulletins and earnings schedule | Your order acknowledgements and rejects | Match-only scores and statistics | Submission source code |
| Public game parameters | Your accrued risk charge | The completed match seed | Private operational review data |
The end tick is deliberately uncertain
A full match is nominally 10,000 ticks. The actual end is drawn uniformly between 90% and 110% of that length and is not disclosed in advance. Bots know the distribution, not the realization.
This removes a single known liquidation tick. Inventory has to make sense throughout the closing window, not only one step before a scheduled finish.
House flow
Two disclosed house bots provide baseline activity. H-Noise sends small random immediate-or-cancel orders. H-Quoter posts simple symmetric liquidity around the recent market. They pay fees and carry inventory under the same accounting rules, but they do not receive competitor placements.