> ## Documentation Index
> Fetch the complete documentation index at: https://offthepace.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# mart_corner_skill_driver

> Driver corner skill vs a LORO (leave-one-race-out) same-car baseline.

<Note>Part of the [Marts](/transform/families/marts) family.</Note>

Driver corner skill vs a LORO (leave-one-race-out) same-car baseline. Grain: (race\_year, driver\_id). For each push-lap corner cell, subtracts the mean residual of the driver's OTHER same-car teammates that race, so a driver's edge over a teammate isn't split in half by including themselves in their own car average. Each (driver, race, corner) cell is winsorized to +/-1.0s before the season mean so one thin/outlier cell can't dominate a season. Each phase is z-scored within season so all three contribute equally to corner\_skill\_index. SC / VSC / pit / inaccurate / non-push (corrected or rain-affected) laps are excluded before car averages are formed. Negative values = faster. corner\_skill\_index = sum of three z-scores; lower = faster.
SIGN FIX (00d, 2026-09-20). Until this date the braking phase entered the index inverted: int\_corner\_skill\_residuals built braking\_loss\_s as (own - field median), so positive meant braking LATER = faster, while the mid and exit phases were positive = worse, and this model summed all three z-scores and ordered ASC. The fix was made at the SOURCE (braking\_loss\_s is now (field - own)), not by negating the braking z here, so that every column in this model shares one convention and corner\_skill\_index stays the plain sum of the three published z-scores - the identity the app prints beside them. braking\_skill\_s, braking\_skill\_se\_s and braking\_skill\_z are therefore an exact sign flip of their pre-00d values (every step from the residual to the z is linear or odd; the STDDEV divisor and the cell counts are invariant), and corner\_skill\_index moved by exactly -2 \* the old braking\_skill\_z. Both the direction and the sum identity are now pinned by transform/tests/assert\_corner\_skill\_sign\_convention.sql.

## Lineage

```mermaid theme={null}
flowchart LR
  int_corner_skill_residuals --> mart_corner_skill_driver
  int_event_corrections --> mart_corner_skill_driver
  int_track_evolution --> mart_corner_skill_driver
  stg_laps --> mart_corner_skill_driver
  style mart_corner_skill_driver fill:#e40404,stroke:#e40404,color:#fff
```

## Overview

| Property          | Value                                                                                                                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Layer             | `marts`                                                                                                                                                                                                        |
| Family            | [Marts](/transform/families/marts)                                                                                                                                                                             |
| Contract enforced | No                                                                                                                                                                                                             |
| Tags              | `mart`                                                                                                                                                                                                         |
| Upstream          | [`stg_laps`](../stg/stg_laps), [`int_event_corrections`](../int/int_event_corrections), [`int_track_evolution`](../int/int_track_evolution), [`int_corner_skill_residuals`](../int/int_corner_skill_residuals) |
| Model-level tests | `unique_combination_of_columns`                                                                                                                                                                                |

**25 tests** [guard](/transform/ci/overview) this model  -  22 generic, 3 singular.

## Columns

| Column                  | Type | Nullable | Tests                                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------------- | ---- | -------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `race_year`             |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Season year                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `driver_id`             |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | FastF1 three-letter driver code (e.g. VER, HAM)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `constructor_id`        |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Driver's team for the season (ANY\_VALUE may vary for mid-season changes)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `braking_skill_s`       |      | Yes      | [`not_null`](/transform/ci/structural), [`expect_column_values_to_be_between`](/transform/ci/range-and-domain) | Mean winsorized LORO-adjusted braking-phase residual (seconds). Negative = faster than the equal-car benchmark, i.e. braking LATER than the same-car reference. Bounded to \[-1, 1] by the cell winsorization (convexity of the mean). 00d flipped this column's sign at the source; a pre-2026-09-20 value of +0.0745 for VER 2024 is now -0.0745.                                                                                                                                                                                                                                                                                                          |
| `mid_corner_skill_s`    |      | Yes      | [`not_null`](/transform/ci/structural), [`expect_column_values_to_be_between`](/transform/ci/range-and-domain) | Mean winsorized LORO-adjusted mid-corner residual (seconds). Negative = faster.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `exit_skill_s`          |      | Yes      | [`not_null`](/transform/ci/structural), [`expect_column_values_to_be_between`](/transform/ci/range-and-domain) | Mean winsorized LORO-adjusted exit-phase residual (seconds). Negative = faster.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `braking_skill_se_s`    |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Standard error of braking\_skill\_s (STDDEV of winsorized cells / SQRT(braking\_cells\_n)).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `mid_corner_skill_se_s` |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Standard error of mid\_corner\_skill\_s.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `exit_skill_se_s`       |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Standard error of exit\_skill\_s.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `braking_skill_z`       |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | braking\_skill\_s standardised within season (zero mean, unit variance). Negative = faster on entry than the equal-car benchmark, the same direction as mid\_corner\_skill\_z and exit\_skill\_z -- that agreement is what 00d fixed, and it is enforced upstream at braking\_loss\_s rather than by a negation here. NULL below PHASE\_MIN\_CELLS=30 braking\_cells\_n -- the mean is still published, only the standardized score is withheld as unreliable.                                                                                                                                                                                               |
| `mid_corner_skill_z`    |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | mid\_corner\_skill\_s standardised within season. NULL below 30 mid\_cells\_n.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `exit_skill_z`          |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | exit\_skill\_s standardised within season. NULL below 30 exit\_cells\_n.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `corner_skill_index`    |      | Yes      | [`not_null`](/transform/ci/structural), [`expect_column_values_to_be_between`](/transform/ci/range-and-domain) | Plain sum of the three published z-scores, all three signed the same way (negative = faster than the equal-car benchmark for that phase), so LOWER = faster driver in corner skill. No phase is negated or reweighted at summation -- 00d ruled the braking sign be fixed at the source instead, precisely so this stays the sum the app prints beside the three columns; assert\_corner\_skill\_sign\_convention.sql pins it. NULL if any one phase is withheld by its cell floor (see braking\_skill\_z). Mid-season replacements with few races can reach ±9 because the car baseline is dominated by the full-season driver; this is expected behaviour. |
| `braking_cells_n`       |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Count of (race, corner) cells behind braking\_skill\_s this season.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `mid_cells_n`           |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Count of (race, corner) cells behind mid\_corner\_skill\_s this season. Equal to mapped\_corners: every mapped corner has a mid-apex, the most complete of the three phases.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `exit_cells_n`          |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Count of (race, corner) cells behind exit\_skill\_s this season. Can be much lower than mapped\_corners -- not every corner has a clean exit-measurement point before the next braking zone.                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `mapped_corners`        |      | Yes      | [`not_null`](/transform/ci/structural)                                                                         | Number of corner observations used in the season aggregate (≥ 100).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
