Predicting Fights Mathematically

After the anticipated McGregor vs Aldo match last night, I thought it would be fitting to kick things off with a little talk of MMA. This article will cover a quick mathematical model for fight outcomes I whipped together in a hurry, hoping to steak my predictions before the fight last night! (My apologies about sloppy looking math; couldn’t get equation editor to copy and paste properly).

The UFC website offers a comparison of some basic stats between two fighters who will fight soon. I took a few of these statistics and quickly sketched out a very rough model to predict the winner. The intuition for this model is to estimate how much fighter 1 will damage fighter 2 and vice versa, and to subsequently factor in estimations of the power and strength of chin of each fighter. The following are statistics supplied on the website, so we’ll define:

Fn = Strikes Landed/Minute for fighter n

Deltan = Strikes Absorbed/Minute for fighter n

Sigman = % Strikes Avoided for fighter n

We’ll then get our basic damage quantity S1 = F1Sigma2/Delta2

And S2is the same, but with the 1 and 2 subscripts swapped. The idea here is to multiply strikes landed per minute by fighter 1 by the percentage of strikes avoided by fighter two, to estimate how many strikes fighter 1 lands specifically on fighter 2. We then divide by strikes absorbed per minute by fighter 2, to get a ratio of how many strikes fighter 1 lands on them in a minute, compared to how many strikes that fighter normally absorbs per minute.

However, this model doesn’t include how hard those strikes are, or how well each fighter can take damage. We estimate the power of each fighter simply by the percentage of wins by TKO (technical knockout). We estimate their chin strength by taking strikes absorbed per minute, and dividing by the percentage of their losses in their professional record. Mathematically, that looks like:

Pn = Estimated Power for fighter 1 = % wins by TKO


Wn = Estimated chin strength for fighter n = Deltan/% Losses in professional record

Finally, we just multiply our Sn by Pn and divide by Wn. The idea is to factor in the strength of fighter 1 in damaging fighter 2, and also the ability of fighter 2 to take damage, and vice versa. At long last, we have:

H1 = P1F1Sigma2/Delta2W2, H2 = P2F2Sigma1/Delta1W1, and Beta = H1-H2

So, we subtract H values (fighter 2 from 1). A positive value here indicates fighter 1 has the advantage, and a negative value indicates that fighter 2 has the advantage. To test this model, I wrote some python code and examined the Beta values produced over 100 simulations changing just the estimated power of fighter 1 (50 steps above, and 50 steps below, the estimate). Then repeated this process for chin strength of fighter 1, power of fighter 2, and chin strength of fighter 2.

I didn’t have time to do anything in depth, and was hurrying to finish my code before the fight last night. Nevertheless, my results did in fact suggest Connor McGregor would beat Jose Aldo, and so for the single fight I had time to simulate, my model worked. Obviously it’s a quick and dirty model, and more work could be done to refine it and test its validity.

In fact, there’s a whole wealth of interesting stuff you could do here. Maybe based on these basic stats, one could write a classifier that groups fighters into submission specialists, strikers, and wrestlers. With more in depth information and statistics, a beautiful and accurate prediction model could be created. However, a company here in D.C. called fightmetric controls all the data, and has probably already had the privilege and honor of using all sorts of cool techniques to describe MMA.





Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s