LEARN/PARAMETERS

Parameters

Most people never touch these. Read this page if you are calibrating the model rather than running one.

87 SETTABLE() Names you can override at runtime.
118 TO_DICT() Entries visible in the preset and covered by the fingerprint.
31 THE GAP Visible, fingerprinted, and refused as an override.
8 IN THE PRESET DICT The mispricing and crowd model, which is what a preset name carries in prose.

Four kinds of coefficient

The difference matters, because a change you make in one category renames the preset and a change in another is refused outright.

Settable

RENAMES THE PRESET

87 names. Override one and the fingerprint becomes custom-, followed by 8 hex characters, so the changed model can not present as the shipped one.

momentum_theta, garch_alpha, market_factor_sigma

Derived

RECOMPUTED, NOT SET

Two coefficients are carried as recorded bit patterns and can not be set directly. Overriding the half-life recomputes both, deterministically on a given build but not bit-identically to any recorded constant.

mispricing_phi, s_phi_tick

Guards

SETTABLE, EXCLUDED FROM SEARCH

Four guards live in the tick chain and are settable, but a calibration search excludes them, because they are worst-case guarantees rather than tuning knobs. One more is not settable at all.

the mispricing cap, the crowd lean cap, the session breaker, the price cap. daily_shock_cap is fixed

Compile-time

REFUSED BY NAME

28 constants are visible in to_dict() and covered by the fingerprint, and an override is refused. The engine would ignore it, and accepting it would make the fingerprint a lie.

the sector table among them

What the settable surface covers

Read the list rather than a summary of it, with tf.ModelParams.settable(). The shape of it:

The two variance processes Per-name GJR-GARCH and the market factor's, cascade components and the slow term included.
The factor sigmas Market and sector, plus the sector loadings and the idiosyncratic scale.
Size and spread effects What a large order pays, and how wide the maker quotes.
Mispricing and crowd dynamics The half-life, the herding term and the three crowd coefficients.
News and flow coefficients Endogenous news and peer news among them.
Jump sizes and intensities How often a jump fires and how large it is.
The VIX channel How the fear gauge reaches the market factor's variance.
Crisis blend and stress The crisis lever, the sector coupling and the remembered stress terms.
The volume expression volume_move_cap among them, the one pt-v12 moved off its compiled literal.
The guards Settable, and excluded from every calibration search.

Change one, and the name changes

params = tf.ModelParams.from_preset(
    "pt-v14",
    momentum_theta=0.05)

e = tf.Engine(seed=42, universe=u,
              model=params)

e.model_fingerprint
# "custom-7f290e34"

Why it renames rather than warns

A changed preset that still called itself pt-v14 would let two different markets share one citation. The fingerprint is the first 8 hex characters of a sha256 over the canonical serialisation, so any settable change produces a new name.

An override of a compile-time constant is refused by name. Accepting one the engine would ignore would make the fingerprint a lie.

All pages