{% from "_macros.html" import pnl_cls %}

Edge Finder {% for y in years %}{% endfor %} {%- for name, opts, cur, label, names in [("sport", sports, sport, "Sport", sport_names), ("venue", venues, venue, "Venue", venue_names)] if opts|length > 1 or (cur and cur != "f1") %} {% if name == "venue" %}{% endif %}{% for o in opts %}{% endfor %} {%- endfor %}

{% if year == 2026 %}Every 2026 weekend raced so far ({{ ef.n_weekends }}){% else %}The 2025 season ({{ ef.n_weekends }} weekends), as if we had been live from its first race: every price uses only data from before that moment{% endif %}, re-priced at the sport's saved stages, traded on {{ venue_names.get(venue, venue) if venue else "each venue" }}'s recorded prices and trades, and settled on the result. This view only reads saved sweeps. {% if sweep_job %}To generate another setup, run a strategy sweep;{% else %}No strategy-sweep form is wired for this sport yet;{% endif %} add its results here or compare them with F1 model variants, model backtests and job status.

{% if not ef.cards and not ef.missing and not ef.benchmark %}

No full-season sweep saved for {{ year }}{% if sweep_job %}: run a strategy sweep{% else %} for this sport yet{% endif %}.

{% endif %}
{% set b = ef.benchmark %}{% if b %}
Benchmark · {{ b.label }}
{{ b.pnl|money(true) }}
on {{ b.volume|money(false, false) }} filled · {{ b.up }}/{{ b.weekends }} weekends up · pinned
{% endif %}{% for c in ef.cards %}
{% if sport == "f1" %}{% endif %}
{{ c.label }}{{ " *" if c.in_sample }}
{{ c.pnl|money(true) }}
on {{ c.volume|money(false, false) }} {{ c.volume_label }} · {{ c.up }}/{{ c.weekends }} weekends up{% if c.clv and c.clv.decided and c.clv.mean_clv_pct is not none %} · CLV {{ '%+.1f%%'|format(c.clv.mean_clv_pct * 100) }}{% endif %}{% if c.vs_base is not none %} · {{ c.vs_base|money(true) }} vs baseline{% if not c.same_data %} †{% endif %}{% endif %}{% if c.vs_bench is not none %} · {{ c.vs_bench|money(true) }} vs benchmark{% endif %}
{% endfor %}
{% if ef.missing %}

No full-season {{ year }} run yet for: {% for m in ef.missing %}{{ m.name }} · {{ m.label }}{{ ", " if not loop.last }}{% endfor %}. {% if sweep_job %}Run a strategy sweep →{% endif %}

{% endif %} {% if ef.cards|selectattr("in_sample")|list %}

* In-sample: the stage-aware rule was drawn from the 2026 sweep.{% if ef.cards|rejectattr("same_data")|selectattr("vs_base")|list %} † baseline priced from different data (e.g. before a data backfill).{% endif %}

{% endif %} {% if ef.recaps %}

Full-season recap

{% for r in ef.recaps %}{% endfor %}
StrategyConfigurationP&LVolumeReturn on volumeWeekends upAvg weekendWeekend s.d.BestWorstMax drawdownConsistencyFillsMarkout 60mvs baseline
{{ r.label }}{{ " *" if r.in_sample }}{{ " (benchmark)" if r.is_bench }}{{ r.name|truncate(40) }} {{ r.pnl|money(true) }}{{ r.volume|money(false, false) }} {{ "%+.1f%%"|format(r.roi * 100) if r.roi is not none }}{{ r.up }}/{{ r.weekends }} {{ r.avg|money(true) if r.avg is not none }}{{ r.sd|money if r.sd == r.sd and r.sd is not none }} {{ r.best|money(true) if r.best is not none }}{{ r.worst|money(true) if r.worst is not none }}{{ r.drawdown|money(true) }} {{ "%.2f"|format(r.consistency) if r.consistency is not none }} {{ r.fills if r.fills is not none }}{{ "%+.3f"|format(r.markout) if r.markout is not none }} {% if r.vs_base is not none %}{{ r.vs_base|money(true) }}{% endif %}

Sorted by P&L. Drawdown: the worst fall from a running peak across the season, weekend by weekend. Consistency: how many standard errors the average weekend is above zero ({{ ef.n_weekends }} weekends is a small sample; 2+ is a good sign, not proof).

{% endif %} {% if candidates %}
Candidates ({{ candidates|length }}) named setups: load one into the sweep form, tweak it, re-run
{% for cd in candidates %}{% endfor %}
NameStrategyConfigurationSeasonWhyFrom
{{ cd.name }}{{ cd.strategy_label }}{{ cd.label|truncate(50) }}{{ cd.year }} {{ cd.why }}{{ cd.source }}{% if cd.run_id %} · run #{{ cd.run_id }}{% endif %} Load in Lab
{% endif %} {% if ef.columns %}

By weekend

{% for c in ef.columns %}{% endfor %} {% for w in ef.weekends %} {% for x in w.cells %}{% endfor %} {% endfor %} {% for t in ef.totals %}{% endfor %}
WeekendFormat{{ c.label }}
{{ c.name|truncate(30) }}
{{ w.event }} {{ w.event_key }}{{ (w.format or "")|replace('_', ' ') }}{{ x|money(true) if x is not none }}{% if w.last_run_id %}weekend →{% endif %}
Season{{ t|money(true) }}
{% endif %} {% set sweep = ef.detail %}{% if sweep %}{% set m = sweep.metrics %}{% set vn = venue_names.get((sweep.params.settings or {}).get('venue') or 'polymarket', 'Polymarket') %}
Where the edge comes from ({{ ef.detail_name }}, run #{{ sweep.id }}: update & rebuy by stage and market, and model vs {{ vn }})

Act when |fair − {{ vn }}| ≥ {{ "%.0f"|format((sweep.params.min_edge or 0) * 100) }} pts, stake ${{ sweep.params.stake_per_edge|int }} × edge (max ${{ sweep.params.max_stake|int }}/market), {{ "%.0f"|format((sweep.params.cost or 0) * 100) }}¢/share trading cost; prices at each stage are {{ vn }}'s at that moment; markets need ≥ ${{ (sweep.params.min_volume_24h or 0)|int }} traded in the prior 24 h and a coherent book.

P&L of the decisions made at each stage

{% for r in m.by_stage or [] %}{% endfor %}
StageTradesP&L to result
{{ r.stage }}{{ r.trades }}{{ r.pnl|money(true) }}

By market

{% for r in m.by_kind or [] %}{% endfor %}
MarketTradesP&L
{{ r.kind }}{{ r.trades }}{{ r.pnl|money(true) }}

Model vs {{ vn }} at each stage

{% for r in m.scores or [] %}{% endfor %}
MarketStageOutcomesBrier modelBrier {{ vn }}
{{ r.kind }}{{ r.stage }}{{ r.n }}{{ "%.4f"|format(r.brier_model) }}{{ "%.4f"|format(r.brier_market) }}

Averaged over weekends, on tradeable markets only. {{ vn }} at the same moment is the benchmark to beat.

{% endif %} {% if demo_pools %}
F1 demo strategy history and pools what the demo accounts ran, and why

These read-only tables show the fixed Polymarket pools behind the demo's historical choices. Phase descriptions explain what the demo ran and why; pool scores come only from saved full-season sweeps. They are backtests, not live trades or a promise of future performance.

{% for pool in demo_pools %}
{{ pool.name }} · {{ pool.pool_size }} pool combinations 2025 and 2026 saved sweeps

{{ pool.description }}

{% if pool.phases %}

Demo phases

{% for ph in pool.phases %}

{{ ph.code }} · {{ ph.period }} — {{ ph.name }} ({{ ph.strategy }}, {{ ph.settings }}). {{ ph.why }}

{% endfor %} {% endif %}

Check against current saved evidence

{% for d in pool.decision_checks %}

{{ d.label }}: {% if not d.known %}no weekends had been raced, so the default-start phase is expected. {% elif d.table %}the current saved sweeps{% if not d.pool_complete %} are incomplete ({{ d.candidates }} of {{ pool.pool_size }} pool combinations have decision evidence){% endif %} choose {{ d.chosen }}. {% else %}there is not enough saved data to make this decision.{% endif %} Recorded phase: {{ d.expected_phase.code if d.expected_phase else "–" }} ({{ d.expected_phase.name if d.expected_phase else "no phase recorded" }}). {% if d.history_matches is sameas true %}Matches the recorded phase. {% elif d.history_matches is sameas false %}Does not reproduce the recorded phase; inspect the saved results below. {% elif d.known and not d.pool_complete %}Incomplete pool: no conclusive comparison. {% endif %}

{% endfor %} {% if pool.reference %} {% set ref = pool.reference %}

Separate recommended profile

{{ ref.name }} ({{ ref.strategy }}, {{ ref.settings }}). {{ ref.why }} The chart on Positions uses the matching saved T1/A sweep and its sweep sizing; it is not the separate flat-size taker-resweep score.

{% for y in years %}{% endfor %}{% for y in years %}{% set r = ref.results[y] %} {% endfor %}
Profile{{ y }}
{{ ref.name }}{% if r and r.weekends %}{{ r.pnl|money(true) }} · {{ r.up }}/{{ r.weekends }} up · worst {{ r.worst|money(true) }} · DD {{ r.drawdown|money(true) }} · run #{{ r.run_id }} {% elif r %}No strategy P&L values · run #{{ r.run_id }} {% else %}No complete saved sweep{% endif %}
{% endif %}

Every setup and strategy in the fixed pool

{% for y in years %}{% endfor %} {% for row in pool.rows %} {% for y in years %}{% set r = row.results[y] %}{% endfor %} {% endfor %}
Demo phaseSetupStrategy{{ y }} saved backtest
{% if row.phases %}{% for ph in row.phases %}{{ ph.code }}
{{ ph.period }}{% endfor %}{% else %}Pool candidate{% endif %}
{{ row.settings }}{{ row.strategy }}{% if r and r.weekends %} {{ r.pnl|money(true) }} · {{ r.up }}/{{ r.weekends }} up · worst {{ r.worst|money(true) }} · DD {{ r.drawdown|money(true) }} · consistency {{ "%.2f"|format(r.consistency) if r.consistency is not none }} · run #{{ r.run_id }} {% elif r %}No strategy P&L values · run #{{ r.run_id }} {% else %}No complete saved sweep{% endif %}

P&L and risk stats summarize each saved sweep's weekend results. The full run page has its detailed metrics; no result is generated by opening this section.

{% endfor %}
{% endif %}