Coming from SDQL
Kelly reads SDQL systems from pasted text. Of the 44 SDQL terms, 33 map exactly, 11 can't map yet, each with the reason. Import is free: you confirm every line, then Kelly tests the rule on its own data from June 2020.
Updated · the importer’s own table
Get it out of SDQL. Copy the query, or the whole link from your address bar on the results page. Several queries? One per line.
Example · paste your own system to replace it
(6) of (6) conditions carry over
Every condition maps exactly. Import it and Kelly tests it on its own data.
- ExactAD
=AND(NOT(home), NOT(neutral)) - ExactAD
=spread_close > 0 - Exactp:L
=LAG(result = "L") - Exactrest>=7
=rest_days >= 7 - Exactline>=3
=spread_close >= 3 - ExacttA(points)>=20
=SEASON_AVG(points_for) >= 20
=AND(AND(NOT(home), NOT(neutral)), spread_close > 0, LAG(result = "L"), rest_days >= 7, spread_close >= 3, SEASON_AVG(points_for) >= 20)Free to import, and nothing is saved until you confirm. You’ll sign in on the next step if you aren’t already, and your system comes with you.
SDQL is a one-line query language: conditions joined by and and or, each a parameter, an operator and a value, with prefixes for earlier games (p:, pp:) and the opponent (o:).
Grammar from the KillerSports Getting Started, Advanced and NFL query manuals, read Nov 7, 2026. Statuses against the rule tester; the same table the importer reads.
What does a SDQL system look like in Kelly?
AD and p:L and rest>=7 and line>=3 and tA(points)>=20
=AND(NOT(home), NOT(neutral), spread_close > 0, LAG(result) = "L", rest_days >= 7, spread_close >= 3, SEASON_AVG(points_for) >= 20)
Every term exact. SDQL's season averages leave out the current game, as Kelly's do. SDQL's history goes back decades and Kelly's lines start June 2020, so the two records cover different seasons.
Which SDQL terms carry over? (44)
One line of text, such as AD and p:L and rest>=7. A query link carries the same text after sdql= (Kelly reads it from the link and never opens the page).
Showing (44) of (44) · Terms
| Their term | Kelly formula | Status | Note |
|---|---|---|---|
| Grammar | |||
| and, or, ( ) | =AND(…), =OR(…) | Exact | |
| =, !=, <, <=, >, >= | The same comparisons | Exact | |
| None (empty) | =ISBLANK(…) | Exact | SDQL's None is Kelly's blank. |
| Site and line | |||
| site=home, H | =AND(home, NOT(neutral)) | Exact | |
| site=away, A | =AND(NOT(home), NOT(neutral)) | Exact | |
| team | =team_id = … | Exact | Team names resolve to Kelly's team ids. |
| site=neutral | =neutral | Exact | |
| F, D (favourite, dog) | F: =spread_close < 0 · D: =spread_close > 0 | Exact | |
| HF, HD, AF, AD | e.g. AD: =AND(NOT(home), NOT(neutral), spread_close > 0) | Exact | |
| line | =spread_close | Exact | The team's line; negative is the favourite, as in SDQL. |
| total | =total_close | Exact | |
| Rest and schedule | |||
| rest | =rest_days | Exact | |
| o:rest | =opponent.rest_days | Exact | |
| season | =season | Exact | Kelly's lines start June 2020. |
| playoffs, REG | playoffs: =season_type = "postseason" · REG: =season_type = "regular" | Exact | |
| week | =week | Can't map | Week is an attribute; the rule tester's read doesn't select it yet. |
| day, month, date | Can't map | Kick-off dates and times are held; the rule tester doesn't read them yet. | |
| DIV, NDIV, C (division, conference) | =divisional | Can't map | Divisional is an attribute; the rule tester's read doesn't select it yet. |
| This game | |||
| W, L (this game's result) | Can't map | The game's own result is known only after the bet. On earlier games use p:W. | |
| Earlier games | |||
| p:W, p:L | =LAG(result) = "W" | Exact | |
| pp:, ppp: (two, three games back) | =LAG(x, 2), =LAG(x, 3) | Exact | |
| p:margin | =LAG(margin) | Exact | |
| p:ats margin | =LAG(margin + spread_close) | Exact | |
| p:ou margin | =LAG(points_for + points_against - total_close) | Exact | |
| p:line | =LAG(spread_close) | Exact | |
| po: (previous opponent) | =LAG(opponent.x) | Exact | |
| op: (opponent's previous game) | Can't map | The opponent's own earlier games aren't in Kelly's rules yet. | |
| P:, PP: (previous meeting) | =PREV_MEETING(x), =PREV_MEETING(x, 2) | Exact | Reads the last meeting within the seasons tested. |
| Streaks | |||
| streak | =STREAK(result = "W") or =STREAK(result = "L") | Exact | SDQL's streak is signed (wins positive, losses negative); Kelly writes the matching direction. On the game itself only, not with a prefix. |
| ats streak | =STREAK(ats_result = "cover") | Exact | As streak. |
| ou streak | =STREAK(ou_result = "over") | Exact | As streak. |
| Aggregates | |||
| tA(x) season average | =SEASON_AVG(x) | Exact | Both leave out the current game. |
| tS(x) season sum | =SEASON_SUM(x) | Exact | Both leave out the current game. |
| tS(condition, N=4) | =ROLLING_SUM(IF(condition, 1, 0), 4) | Exact | |
| tA(x, N=3) | =ROLLING_AVG(x, 3) | Exact | |
| oA(x) opponent season average | Can't map | The opponent's own games aren't in Kelly's rules yet. | |
| tpA, tppA (earlier seasons) | Can't map | Prior-season totals aren't an attribute yet. | |
| Box score | |||
| points | =points_for | Exact | On earlier games or in an aggregate. |
| first downs, passing yards, rushing yards, turnovers, sacks, penalties | Can't map | Kelly holds team box scores; the rule tester's read doesn't carry them yet. | |
| Site ratings | |||
| dpa, dps and other site ratings | Can't map | Site-specific ratings with no published definition. | |
| Next games | |||
| n:, nn: on what's known before (n:H, n:line) | =NEXT_GAME(x), =NEXT_GAME(x, 2) | Exact | Only what the schedule shows before the bet. |
| n:W, n:points (a later game's result) | Can't map | A later game's result, which a bet couldn't see. | |
| Players | |||
| Player prefixes (LeBron James:p:points) | Can't map | Player conditions wait for the player rule grain. | |
| Output | |||
| @ (columns to show) | Not a condition: Kelly shows its own columns | Exact | Left out of the rule; nothing is lost. |
Source: Grammar from the KillerSports Getting Started, Advanced and NFL query manuals, read Nov 7, 2026. Statuses are the importer’s own, against the rule tester.
How do you move your SDQL systems to Kelly? (3)
- Copy the query, or the whole link from your address bar on the results page. Several queries? One per line.
- Paste or drop it in the box above, on Import in the rule tester, or in chat: "import this SDQL system". Kelly lists every condition with its status.
- Answer any question, choose keep or leave out for each line that can't map, and confirm. Kelly saves the rule labelled "tuned elsewhere" and tests it on its own data from June 2020; the record SDQL showed you is kept as reported beside it.
What other ways can you bring systems in? (5)
What do people ask about moving from SDQL? (6)
Can I import my SDQL systems into Kelly?
Yes. Of the 44 SDQL terms in Kelly's table, 33 map exactly, 11 can't map yet, each listed with the reason.
Can I bring every system at once?
Yes. Drop every export, screenshot, workbook or zip in the box at once, or send the reply to your data request. Kelly reads every file when you import, maps each system it finds and lists them on one screen for you to confirm.
Will Kelly show the same record as SDQL?
Not always. Kelly grades on its own consensus closing lines, which start in June 2020, so a record covers the seasons Kelly holds. The record SDQL showed you is kept as reported beside Kelly's.
Do SDQL season averages include the current game?
No, and neither do Kelly's. tA(points) is the average of the team's earlier games this season, so the two match.
Does Kelly log in to SDQL or open my links?
No. Kelly reads only what you paste or upload. A link is kept as where the system came from and is never opened.
What happens to the conditions Kelly can't map?
They stay on the list with the reason. For each one you choose: keep it for new games once Kelly holds the data, or leave it out. The saved rule says which.