Backtest Artifacts, Manifests, and Launch Contracts

Daniel Ratke
Research & Engineering
Backtest Artifacts, Manifests, and Launch Contracts
Backtest artifacts are the API between research and operations: they identify the experiment, preserve evidence, and freeze the paper-trading candidate.

Term map
Backtesting vocabulary for this article
Treat signal timestamp, point-in-time universe, quote-aware fill, reject reason, replay artifact, walk-forward test, and cache key as first-class terms. They separate reproducible research from a backtest that only preserves the final performance table.
Follow the linked definitions for Point-in-time contracts, Quote-aware fills, Reject reasons, Replay artifact, Cache key, Signal timestamp, Look-ahead leakage, Walk-forward test, Slippage model, Same-bar fill, Promotion gate, and Options data API.
Read this article with Options Backtesting API, Backtesting Framework, Backtesting Data Quality Checklist, Backtesting Execution Realism, Quote-Aware Options Backtests, and Backtest to Paper Trading Parity Checklist.
Abstract
A trading research result is only useful if it can be recreated. That requires artifacts: profile manifests, pack manifests, selected trades, daily PnL, summaries, diagnostics, and launch contracts for paper validation.
Developers should think of these files as the API between research and operations.
Why Artifacts Matter
An equity curve is a summary, not an audit trail. It does not show what data was loaded, which contracts were eligible, why a trade was rejected, which fill model was used, or whether the strategy can be run again tomorrow. Artifacts answer those questions.
For options research, artifacts are even more important because the trade is the output of several fragile steps: signal timing, historical contract discovery, liquidity filtering, quote-aware fills, exits, and portfolio aggregation. If any of those steps changes, the result changes. A manifest tells the next developer what was actually tested.
Manifests Name The Experiment
A manifest records what was tested: strategy family, parameters, symbols, date range, geometry, pricing mode, and output expectations. Without a manifest, a result becomes dependent on memory and shell history.
Manifests are also useful for review. They make it possible to compare two research runs without reading every code path.
| Artifact | Purpose | Minimum fields |
|---|---|---|
| Profile manifest | Names the strategy and parameters. | Profile id, thresholds, DTE rules, fill policy, risk settings. |
| Data manifest | Describes the inputs used by the run. | Tickers, date range, endpoints, cache ids, coverage notes. |
| Trade log | Preserves filled and rejected decisions. | Signal timestamp, selected contract, entry/exit evidence, reject reason. |
| Daily PnL | Feeds portfolio metrics. | Date, gross PnL, net PnL, active symbols, drawdown. |
| Diagnostics | Explains whether the candidate passed gates. | Trade count, PBO, DSR, overlap, rejects, coverage. |
| Launch contract | Freezes the paper candidate. | Profile, symbol set, risk caps, execution policy, monitoring rules. |
The files do not have to be large. They have to be specific enough that another run can reproduce or challenge the conclusion.
Launch Contracts Freeze The Candidate
A launch contract is the paper-trading version of the research object. It should contain the selected profile, risk settings, symbol set, DTE rules, and execution controls needed by the bot.
If the launch contract cannot express the backtest, the strategy is not ready for paper. The gap should be fixed before orders are enabled.
For example, if the backtest selected calls with 1-3 DTE, max spread 12 percent of premium, and entry only after a completed bar, the launch contract should state those constraints. If the paper bot instead selects any weekly contract, allows wider spreads, or enters from provisional bars, the paper run is no longer testing the same object.
Artifacts Make No-Go Useful
No-go branches should still keep summaries and diagnostics. The next researcher needs to know whether the branch failed because of poor PnL, high PBO, low DSR, data coverage, execution rejects, or portfolio overlap.
This is how negative results become useful. A no-go branch with clean artifacts can prevent the team from rebuilding the same weak idea under a different name. It can also show which part was promising. Maybe the signal was reasonable, but the option expression was too illiquid. Maybe the model worked in one symbol but overlapped too much with an existing sleeve. Those are different lessons.
What A Review Should See
A reviewer should be able to answer these questions without rerunning the entire research stack:
- What profile was tested?
- Which data windows and endpoints were used?
- Which contracts were selected?
- Which trades were rejected and why?
- What fill policy priced entry and exit?
- Did the run pass trade count, drawdown, robustness, and overlap gates?
- What exact object would paper trading run?
If the answer is hidden in a notebook cell or a shell command, the research is not operational yet.
Example Launch Contract Fields
| Field | Why it matters |
|---|---|
profile_id | Connects paper trading to the promoted research row. |
symbol_universe | Prevents the bot from expanding into untested names. |
entry_window | Preserves the timing assumptions from replay. |
dte_policy | Keeps contract selection in the tested expiration regime. |
fill_policy | Carries quote-aware execution into paper. |
risk_budget | Defines sizing, daily loss caps, and max positions. |
reject_policy | Tells the bot when to fail closed. |
review_metrics | Defines what paper trading must report daily. |
Takeaway
Artifacts are not administrative overhead. They are how a developer turns a backtest into a repeatable research process and eventually into a paper-trading candidate. Start with a manifest, preserve selected trades and rejects, write daily PnL, and freeze only candidates that can be expressed as launch contracts.
Related workflow
For the Backtest Artifacts, Manifests, and Launch Contracts workflow, continue through Options Backtesting API, Backtesting Framework, Backtesting Execution Realism, Backtesting Data Quality Checklist, Quote-Aware Options Backtests, and Backtest to Paper Trading Parity Checklist.
How the terminology applies
For Backtest Artifacts, Manifests, and Launch Contracts, the backtesting workflow should treat Point-in-time contracts, Quote-aware fills, Reject reasons, Replay artifact, Cache key, and Signal timestamp as operational state rather than glossary decoration. That framing keeps the research claim causal: the strategy can only select instruments, prices, and labels that existed at the decision time.
A developer implementing this Data Engineering idea should persist Look-ahead leakage, Walk-forward test, Slippage model, Same-bar fill, Promotion gate, and Options data API beside the result, instead of leaving those words in a term card. It also turns attractive performance into an auditable record where fills, skips, thresholds, and replay inputs can be challenged independently.
The review artifact for Backtest Artifacts, Manifests, and Launch Contracts becomes more useful when OPRA-originating data, OCC option symbol, Bid/ask spread, Midpoint, Quote/trade condition, and Quote vs trade semantics appear in the same body of evidence as the selected rows. When a result is promoted, these fields should appear in the run manifest, rather than a prose summary or final equity curve.
In production notes for this backtesting workflow, REST snapshot, WebSocket stream, Entitlement gate, Quote freshness, Timestamp semantics, and Pagination cursor define the checks that decide whether the workflow is reproducible. The result is a backtest that can be rerun, compared across threshold families, and rejected when the evidence is not strong enough.
For Backtest Artifacts, Manifests, and Launch Contracts, the practical acceptance test is simple: another developer should be able to read the body, identify the exact inputs, reproduce the request sequence, and explain the accepted and rejected rows without relying on the bottom terminology grid. If a phrase appears in the page vocabulary, it should correspond to a stored field, a validation check, a replay step, or an implementation decision in the backtesting workflow.
This is also the reason the article should not measure success only by the final chart, table, or headline metric. The better standard is whether the data path, timing model, entitlement state, and evidence trail survive review. When those pieces are written directly into the body, the terminology becomes part of the workflow readers can implement.
Launch contracts should name the market data
A launch contract should define the market-data schema that paper trading will inherit. Include symbol universe, contract symbology, selected OCC option symbol, DTE bucket, quote-aware fill policy, slippage model, reject taxonomy, and entitlement assumptions. If the backtest used NBBO quotes, the launch contract should say which quote fields matter: bid, ask, sizes, quote condition, SIP timestamp, and freshness.
The manifest should also capture infrastructure state. Store endpoint family, dataset, response envelope, pagination cursor, cache key, backfill window, rate-limit budget, and schema version. Those fields make parity review possible when paper behavior drifts from the promoted run. Without them, a launch contract becomes a promise rather than a reproducible handoff.
Terminology
Market-data terms used in this article
These terms keep the article connected to the CuteMarkets knowledge base and to the exact API workflow behind the research.
Point-in-time contracts
Contract discovery anchored to the research date so a backtest does not use future listings.
Quote-aware fills
Entry and exit assumptions based on bid/ask quotes, quote age, spread width, and side-specific fill rules.
Reject reasons
Logged explanations for skipped contracts or fills, including stale quote, wide spread, no bid, or missing data.
Replay artifact
The saved request, selection, fill, reject, and metric record that lets another developer audit the backtest.
Cache key
The structured identifier that keeps provider, endpoint, ticker, timestamp, plan, and schema state from being mixed.
Signal timestamp
The exact time a strategy made a decision, used to reconstruct the visible universe and quote window causally.
Look-ahead leakage
A research error where a fill, contract, indicator, or label uses information unavailable at decision time.
Walk-forward test
A validation method that repeatedly trains and evaluates across separated time windows instead of trusting one optimized sample.
Slippage model
A fill-cost assumption based on bid/ask side, midpoint, spread percent, quote age, and liquidity policy.
Same-bar fill
An intraday backtest assumption that can become invalid when signal, entry, stop, and target ordering is ambiguous.
Promotion gate
The written threshold that decides whether a research candidate can move into paper trading or production monitoring.
Options data API
The product surface for chains, contracts, quotes, trades, aggregates, Greeks, IV, open interest, and expirations.
OPRA-originating data
The U.S. listed-options source context behind quotes, trades, exchange participation, and consolidated option-market records.
OCC option symbol
The exact option contract identifier that preserves root, expiration, call or put side, and strike.
Bid/ask spread
The execution interval between bid and ask that determines whether a contract is realistically tradable.
Midpoint
The computed center between bid and ask, useful as a reference price but not proof that an order would fill.
Quote/trade condition
The condition-code, exchange, correction, sequence, and timestamp context that explains how a quote or trade row can be used.
Quote vs trade semantics
The distinction between executable bid/ask markets, printed transactions, and bar-level summaries.
REST snapshot
A reproducible request for current or historical market state, used for initialization, backfills, and audit logs.
WebSocket stream
A persistent live connection that needs subscription topics, reconnect tracking, freshness labels, and REST repair paths.
Entitlement gate
The product, plan, quote, live, delayed, historical, or commercial-use boundary checked before data is shown.
Quote freshness
The age, timestamp, and live or delayed state of a bid/ask record before it is used in a scanner, backtest, or UI.
Timestamp semantics
The exchange, provider, ingestion, session, and application time context attached to a market-data record.
Pagination cursor
The continuation token or next URL that keeps large chains, trades, quotes, and historical windows complete.
FAQ
Related questions
What belongs in a launch contract?
A launch contract should freeze the selected profile, symbols, risk settings, DTE rules, execution controls, and any required data inputs.

Written by
Daniel Ratke
Research & Engineering
Daniel covers the deeper research notes: options backtesting, execution realism, robustness testing, data engineering, and strategy validation.
Product links
Build the workflow with CuteMarkets
This article is part of the broader CuteMarkets product and research stack. Use the landing pages below to move from the blog into the specific API workflow you want to evaluate.
Backtesting Test Plan
Turn artifact expectations into causality, selection, execution, and portfolio tests.
Backtesting Framework
Use the framework spine for manifests, trade logs, diagnostics, and launch contracts.
Paper Trading Bot Operations
Carry artifacts into paper-trading checks, kill switches, and daily reviews.
Options Backtesting API
Connect research artifacts to historical contracts, quotes, trades, and aggregates.