Objects

History row

One past occurrence of a pattern on a ticker and what happened next, from the stored backtest: entry, stop, target, exit and result.

One past occurrence of a pattern on a ticker and what happened next, from the stored backtest: entry, stop, target, exit and result.

Fields

FieldTypeDescription
setup_idstring · nullableIdentifier of the occurrence in the stored history. Null when the row carries none. It is not necessarily a setup_id the patterns route still serves.
lineage_idstring · nullableIdentifier of the setup lineage: the connected set of breakout attempts of one pattern. attempt says where this row sits in it. Null when absent.
familystringThe display family the row is filed under, derived from pattern_type: wedges keep their name, every triangle type is triangle, squeeze consolidations are bullish_pennant or bearish_pennant by direction, and anything else is other.
family_labelstringHuman-readable family name.
pattern_typestring · nullableThe detector's pattern type for the row. Null when absent.
directionstring · nullablebullish or bearish. Null when the row carries neither a direction nor a bias.
outcomestring (enum)How the trade ended: win (target reached), loss (stop hit, or target and stop in the same bar) or open (still running as of the last session). One of win, loss, open.
entry_datedate · nullableSession date of the entry bar, as an ISO date. Null when absent.
entry_pricenumber · nullableEntry price in dollars: the close of the breakout bar.
stop_pricenumber · nullableThe stop in dollars, frozen at entry.
target_pricenumber · nullableThe measured-move target in dollars.
exit_datedate · nullableSession date of the exit bar, as an ISO date. Null for open trades.
exit_pricenumber · nullableExit price in dollars. Null for open trades.
realized_move_pctnumber · nullableSigned price move from entry to exit as a percent of the entry price, positive when in the trade's favour. Null when no exit is recorded.
target_move_pctnumber · nullableThe pattern's measured move as a percent of price: the size of the move the target was projected from. Null when the row carries none.
r_multiplenumber · nullableRealized result in R: exit minus entry, divided by the entry-to-stop distance, signed by direction. Null for open trades.
unrealized_rnumber · nullableFor open trades only, the R at the last close walked. Null on resolved rows.
hold_barsinteger · nullableDaily bars (sessions) from entry to exit. Null for open trades.
attemptobjectWhere this row sits among the breakout attempts of its lineage.
attempt.numberinteger · nullableThe 1-based attempt number within the lineage. The history lists each lineage's first attempt, so this is 1 on served rows. Null when the row has no lineage data.
attempt.countinteger · nullableHow many breakout attempts the lineage made in total. Null when the row has no lineage data.

Example

History row
{
  "setup_id": "NVDA:D:falling_wedge:500",
  "lineage_id": "l500",
  "family": "falling_wedge",
  "family_label": "Falling wedge",
  "pattern_type": "falling_wedge",
  "direction": "bullish",
  "outcome": "win",
  "entry_date": "2026-05-04",
  "entry_price": 100,
  "stop_price": 95,
  "target_price": 108,
  "exit_date": "2026-05-20",
  "exit_price": 108,
  "realized_move_pct": 8,
  "target_move_pct": 8,
  "r_multiple": 1.6,
  "unrealized_r": null,
  "hold_bars": 12,
  "attempt": {
    "number": 1,
    "count": 1
  }
}

Where it appears