LEARN/CITING A RUN

Citing a run

A citation identifies software. It does not identify a run. A manifest does.

Formerly pretium. Versions through 0.4.3 were published under that name and remain installable forever; cite them as pretium at their exact version and they replay bit for bit. From 0.5.0 the library is tradefloor, with the same version line and the same known-answer digest.

Not enough on its own

"We used tradefloor." That names the software and says nothing of the market you ran. Two people can obey it, get different numbers, and both be correct.

CITATION.cff covers this half

Enough to reproduce

A RunManifest carries the seven things that fix a trajectory, plus the digest it should produce.

reproduce() refuses on a mismatch

The seven things that fix a trajectory

package version Pins the implementation. 0.3.0 and 0.2.0 can differ even on the same preset.
model preset Pins the coefficients. Name it, because the default moves between releases.
seed Pins every random number the run draws.
universe fingerprint A sha256 over the roster in order, so a re-sorted roster fails the check instead of passing quietly.
macro conditions The state on day zero, before the economy starts advancing itself.
scenario The driven macro path, if you drove one.
strategy fingerprint A sha256 over the spec. This is the one to quote in a sentence.

Leave one out and the run is not reproducible. Record all seven and someone with the package and nothing else of yours can replay it.

Write it down, then check it

manifest = tf.RunManifest.of(
    engine, spec, seed=7)

manifest.to_json("study.json")

# somewhere else, later
saved = tf.RunManifest.from_json(
    open("study.json").read())

tf.reproduce(saved)   # or it raises

Why it raises instead of a warning

A manifest that quietly reproduced a different market would be worse than no manifest. So reproduce() compares the digest it got against the digest the manifest expected, and names the field that differs.

In most cases it is the preset. pt-v14 became the default on 2026-08-28, so a manifest written before that date and replayed after it fails unless it named its preset.

What to put in a paper

Momentum, top_k 5, one-day lookback, scored on tradefloor 0.4.0 under preset pt-v14, universe fingerprint 4c1e9f77a3b8d502, seeds 0 to 11, 252 days. Strategy fingerprint 9f2c8d41e7b6a530. Manifest and order log attached.

Illustrative. The fingerprints in that sentence are placeholders, and yours will differ.

Say this

The strategy behaved this way on this preset, at this horizon, in a market that holds the fourteen realism statistics. Here is the manifest.

Not this

The strategy earns this. A result here is a statement about a model market, and the envelope names five gaps that bound it further.

All pages