OSDtools
QK Studio
OSD / Studio / QK

QK — quality-of-kill scoring

How QK works

QK (quality-of-kill) is a composite score that ranks candidates by signal strength. It blends EV, sharp-consensus quality, line-stability, and other factors into a single number. Candidates with low QK get blocked even if their EV passes; candidates with very high QK can also be blocked (high QK often correlates with stale-line outliers).

The three threshold knobs

Resolution order

  1. Match scoped rules by mode + market + league + book + flow + sharpCount.
  2. Most-specific match wins; ties → more restrictive value.
  3. If no scoped match, fall back to global filters.minQk.

What this Studio page does

Replays settled positions and sweeps QK floor + ceiling across scopes. The floor sweep finds where below-threshold candidates underperform; the ceiling sweep finds where above-threshold candidates flip from edge to noise. Use the per-(book, league, flow) detail tables for scope-specific inflections.

Canonical contract for QK thresholds is in docs/gates.md#qk-thresholds. Negative scoped values are documented there as intentional.

Data

Load remote positions to begin.

Controls

Run Settings

This is the score the optimizer maximizes when ranking candidates.
Requires at least this many bets for a recommendation to be eligible.
Applies a preset bundle for min bets, guardrails, and keep-rate strictness.

Guardrails

Requires recommendations to span at least this many settled days. Set 0 to disable.
Rejects recommendations when worst-day profit drops by more than this amount. Set 0 to disable.
Requires this minimum share of profitable days for recommendations. Set 0 to disable.
Stops ultra-strict global defaults: pre/live defaults must keep at least this share of baseline bets. 0 disables.
Skip unknown/blank league rows
Reject rules with negative ROI/profit
When enabled, winners must be non-negative for the selected objective metric.
Sets a practical default bundle: min bets, day stability, degradation cap, and keep-rate floor.
Guardrail order: (1) pass Minimum Bets, (2) pass enabled guardrails, (3) rank remaining candidates by Objective Metric. If all fail guardrails, the run falls back to score-only with a warning.

Data Quality & Output

Only affects missing gate fields. Other pre-filters (settled rows, known leagues) still apply.
Limits how many rows are rendered in the Distribution table.
Load remote positions to start.

Summary

Rows Loaded
-
Settled Matched
-
Baseline (ROI)
-
Best Delta
-
Baseline snapshot: ROI -, Profit -, Stake -, Win Rate -, Bets -
This is historical replay on bets you already took. It cannot estimate bets that were never placed.
Summary table shows optimized global defaults and selected scoped min-QK rules.
Param Baseline Best Bets Kept (Best / Baseline) Baseline Score Best Score Delta
Default sweep charts are global; selected segments appear here after a run.
Chart source: Global minQk sweep.
Shaded band = top-performing value zone (top 20% by selected objective metric).
Gold dot = selected value.
Line + dots = metric result for each tested value.
X-axis = tested minQk value.
ROI Curve
Run the optimizer to render ROI curve.
Profit Curve
Run the optimizer to render profit curve.
Win Rate Curve
Run the optimizer to render win-rate curve.
Bet Count Curve
Run the optimizer to render bet-count curve.

Distribution

Rows are tested parameter values. Each row shows aggregate results for that value.
Parameter Value Bets Pass Rate Distinct Days Green Day % Worst Day Win Rate ROI Profit Stake Avg EV