{% extends "base.html" %}{% from "_macros.html" import page_head, empty, source_note %} {% block title %}Recorded tapes{% endblock %} {% block content %}

Markets › Recorded tapes

{% call page_head("Recorded tapes", "The sports we record but don't price (" ~ sports|join(", ") ~ "): every exchange market linked for them and what has been recorded on it. Market data only: no model, no positions, no P&L.") %}{% endcall %}

Recorded = rows stored for the event's markets: trades (the tape), price points (minute / hourly history) and order-book snapshots, with when each was last recorded.{% if user.role == 'admin' %} Sync and record from the command line: racinglines markets --exchange kalshi --sport nascar sync|trades|history|books (docs/todo.md, U9).{% endif %}

{% if not blocks %}{{ empty("No tape-only markets linked yet." ~ (" Sync a sport first (racinglines markets --exchange kalshi --sport nascar sync)." if user.role == 'admin' else "")) }}{% endif %} {% for b in blocks %}

{{ b.sport_name }} · {{ b.exchange_name }}

{{ b.markets }} markets · {{ b.open }} open · {{ "{:,}".format(b.trades) }} trades · {{ "{:,}".format(b.prices) }} price points · {{ "{:,}".format(b.books) }} books · synced {{ b.synced|fmt }}
{% for e in b.events %}{% endfor %}
EventMarketsOpenVolumeFavouriteLastTradesLast tradePrice pointsLast priceBooksLast bookEnds
{{ e.title }} {{ e.slug }} {{ e.markets }}{{ e.open }}{{ "{:,.0f}".format(e.volume) }} {{ e.favourite or "" }}{{ "%.2f"|format(e.last_price) if e.last_price is not none else "–" }} {{ "{:,}".format(e.trades) }}{{ e.trades_last|fmt if e.trades_last else "–" }} {{ "{:,}".format(e.prices) }}{{ e.prices_last|fmt if e.prices_last else "–" }} {{ "{:,}".format(e.books) }}{{ e.books_last|fmt if e.books_last else "–" }} {{ e.end_date|fmt }}
{{ source_note(b.competition, [b.exchange]) }}
{% endfor %} {% endblock %}