{% extends "base.html" %}{% from "_macros.html" import empty, pnl_cls, chart, demo_context, kpi, pnl, page_head, flash %} {% block title %}Strategy{% endblock %} {% block content %}{% set simple = alpha_layout is defined and alpha_layout() %}{# the alpha's plain view: no venue tabs, sport select or How it chooses (web/layout.py) #} {% include "_lab_nav.html" %} {% call page_head("Strategy" ~ (" · " ~ viewer.username if viewer.id != user.id else ""), "The strategy this account runs: its calls on each race weekend, stage by stage, how it has done, and how it got here. Paper only: nothing is sent to an exchange.") %} {% if can_pick %}{{ "Change strategy" if profile else "Pick a strategy" }} · {% endif %}What it holds: Positions → {%- if venue_tabs and not simple %}{% endif %} {% if users %}
{% endif %} {% if sport_options and not simple %}{% endif %}{% endcall %} {{ flash(msg) }} {% if not profile and not record %}{% if can_pick %}This account doesn't paper-trade anything until you pick a strategy. Start with the shortlist's first, or choose and tune your own.
No strategy profile is assigned to this account. An admin can assign one on the user's admin page.
{% endif %}{% else %} {% set k = acct.kpis %}{{ profile.settings.variant }}{% endif %}{% if profile and profile.follow_rate %} · takes about {{ "%.0f"|format(profile.follow_rate * 100) }}% of signals{% endif %}{{ profile_why }}
{% endif %} {% if record|selectattr('demo')|list %}{% call demo_context() %}demo replay, in-sample {{ 'NASCAR and MotoGP races are' if sport_shown('motogp', user) else 'NASCAR races are' }} the taker replay on the exchange's recorded prices (after its taker fee), each market kind traded with the setting that did best on these same seasons: a demo of the strategy, not evidence of an edge.{% endcall %}{% endif %} {% if show_fair and mix and (mix|length > 1 or mix[0].family == 'taker') %}This account's paper record by sport and kind of strategy. Maker: quotes both sides and earns the spread. Taker: takes the model's edge at the market's price.
| Sport | Strategy | Races / weekends | Up | Fantasy P&L | |
|---|---|---|---|---|---|
| {{ sport_names.get(m.sport, m.sport) if m.sport else "–" }} | {{ m.family }} | {{ m.weekends }} | {{ m.up }} | {{ m.pnl|money(true) }} | {% if m.demo %}demo replay, in-sample{% endif %} |
Click a weekend for its calls, stage by stage.
| Weekend | Strategy | {{ "Fills" if is_maker else "Trades taken" }} | Held to the race | Most in use | P&L | Running total | |
|---|---|---|---|---|---|---|---|
| {{ r.event_name or r.event_key }} {{ r.start_date|fmt if r.start_date }} | {{ r.profile }} | {{ r.fills if r.strategy.startswith('maker') else r.taken }} | {{ r.positions }} | {{ r.deployed|money(false, false) }} | {{ r.pnl|money(true) }}{% if not r.settled %} open{% endif %} | {{ r.cum|money(true) }} | {% if r.demo %}demo replay, in-sample{% elif r.backfill %}backtest replay{% else %}live paper{% endif %} |
| {{ y.year }} | {{ y.pnl|money(true) }} | {{ y.up }}/{{ y.weekends }} weekends up |
This weekend's positions: {{ positions|length }} markets, P&L {{ held|sum(attribute='value')|money(true) }} · see them on Positions →
{% endif %} {% if not maker and stages %}Heat: how much the model expects an entry to earn, warm hot very hot (the middle and top quarter of this profile's backtest entries). It grades the model's conviction, not a promise: in the 2026 backtest hotter entries did earn more, in 2025 they didn't, and the model expects more than it has realised.{% if not show_fair %} Rating: one to three stars, how far a pick clears the bar of the strategy that made it.{% endif %}
{% if stages|map(attribute='signals')|sum(start=[])|selectattr('followed', 'false')|list %}{% call demo_context() %}Taken / passed: this demo account follows some recommendations, not all (hotter ones more often), and sticks with a market once it's in.{% endcall %}{% endif %}{% endif %} {% for st in stages %}| Market | Action | Shares | Limit | Cost | {% if not maker %}Heat | {% endif %}{% if not maker and not show_fair %}Rating | {% endif %} {% if show_fair %}Market | Our fair | Edge | {% endif %}Status | When (UTC) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ s.subject }} {{ s.kind|kind }} | {% if s.action in ('buy', 'sell') %}{{ s.action|upper }} {{ s.side }}{% elif s.action == 'fill' %}paper fill · {{ 'bought' if s.side == 'YES' else 'sold' }} YES{% else %}{{ 'quoting' if s.action == 'quote' else 'stopped quoting' }}{% if s.detail and s.detail.reason %} ({{ s.detail.reason }}){% endif %}{% endif %} | {{ "%.0f"|format(s.shares) if s.shares is not none else "" }} | {{ "%.2f"|format(s.limit_price) if s.limit_price is not none else "" }} | {{ ((s.shares * s.limit_price)|money) if s.shares is not none and s.limit_price is not none else "" }} | {% if not maker %}{% if s.heat %}{{ s.heat_label }}{% elif s.action == 'sell' %}exit / trim{% endif %} | {% endif %} {% if not maker and not show_fair %}{% if s.stars %}{{ "★" * s.stars }}{{ "☆" * (3 - s.stars) }}{% endif %} | {% endif %} {% if show_fair %}{{ "%.3f"|format(s.price) if s.price is not none else "" }} | {{ "%.3f"|format(s.fair) if s.fair is not none else "" }} | {{ "%+.1f pts"|format(s.edge * 100) if s.edge is not none else "" }} | {% endif %}{% if s.followed == true %}taken{% elif s.followed == false %}passed{% elif s.action in ('quote', 'pull') and s.detail and s.detail.backfill %}{% else %}{{ s.status|replace('_', ' ') }}{% endif %} | {{ s.signal_ts|fmt }} |
{{ d.weekends }} weekends of evidence{% if d.kind == 'season' %}; the band within the noise floor of the leader is highlighted{% endif %}. Chosen: {{ d.chosen }}.
| Setup (strategy · model and settings) | P&L so far | Weekends up | Worst weekend | Max drawdown | Consistency | |
|---|---|---|---|---|---|---|
| {{ r.setup }} | {{ r.pnl|money(true) }} | {{ r.up }}/{{ r.weekends }} | {{ r.worst|money(true) }} | {{ r.max_dd|money(true) }} | {{ "%.2f"|format(r.consistency) if r.consistency is not none else "" }} | {% if r.chosen %}chosen{% elif r.current %}running{% endif %} |
Top 5 of {{ d.candidates }} setups tested{% if d.shown|length > 5 %}, plus the one chosen or running{% endif %}.
{% endif %} {% if ph %}Then ran {{ ph.profile }} for {{ ph.weekends }} weekends ({{ ph.first.event_name }} to {{ ph.last.event_name }} {{ ph.last.event_key[:4] }}): {{ ph.pnl|money(true) }}, {{ ph.up }}/{{ ph.weekends }} weekends up.
{% endif %} {% endfor %}Evidence: each setup's saved season sweep in the Edge Finder (every weekend priced from its own sessions, traded on Polymarket's real prices and trades). Open the Lab's F1 demo strategy history and pools to see every candidate setup, all saved pool results, and {% if is_maker %}the M1–M3/C phase definitions{% else %}the TW1/TW2 phase definitions and the separate T1/A reference profile{% endif %}.
This account follows {% if profile.basic %}its picks, drawn from three of our taker strategies{% else %}the {{ profile.name }} signals{% endif %}: after every practice and qualifying session it gets a list of trades, each with a heat rating. A taker never sees the model's numbers, only what to trade, the size, the most to pay, and the heat.
{% call demo_context("This demo taker's habit.") %}It doesn't take every signal: about a third, favouring hotter ones, and once it's in a market it follows that market's later signals to the exit. Being choosy keeps its stakes small and gives up part of the upside.{% endcall %}| Heat | Markets recommended | Taken | Share taken | P&L of those taken |
|---|---|---|---|---|
| {{ heat_label[h.heat] }} | {{ h.offered }} | {{ h.taken }} | {{ "%.0f"|format(h.taken / h.offered * 100) if h.offered }}% | {{ h.pnl|money(true) }} |
| All | {{ t.by_heat|sum(attribute='offered') }} | {{ t.by_heat|sum(attribute='taken') }} | {{ t.by_heat|sum(attribute='pnl')|money(true) }} |
Taking every recommendation over the same weekends would have made {{ t.all_total|money(true) }} (the second line on the chart), with more capital in play at once. The table shows how each heat tier has actually done: heat is a guide, not a guarantee.
{% endif %}The Lab's F1 demo strategy history and pools shows the saved results for the TW1/TW2 decision pool and the separate T1/A recommended profile.