Skip to content

betting_combat.rounds.features.matchup

Group 2: the matchup, from both fighters’ Group 1 profiles (A = fighter_a, B = fighter_b).

Port of the research ufc/dataset/matchup.py; the numbers must stay identical.

diffs d_ = A - B for every Group 1 feature: who has more of it. sums s_ = A + B for every Group 1 feature (except physical size and layoff): what the pair brings together, e.g. a finish needs one to finish and one to be finished. style how one fighter’s weapon meets the other’s weakness, each way: ko_vs_chin A ko_win_rate x B got_ko_rate (and B on A) sub_vs_def A sub_win_rate x B got_sub_rate wrestle_vs_td A td_per15 x (1 - B td_def) volume_vs_def A sig_pm x (1 - B sig_def) stored as the A-on-B minus B-on-A difference and the sum.

Every fighter-history feature enters as A - B (who is better at it) and A + B (what the pair brings together). Raw _a / _b columns stay in the data but are not model candidates: A and B are assigned at random, so a side-specific pick can only be noise.

Classes

Matchup

build

build(d: pd.DataFrame) -> pd.DataFrame

d holds the Group 1 columns as _a and _b.