The Octagon's New Cornerman: AI-Powered Fight Analysis for Sports Betting
TL;DR:
To get the most out of these models you have to help them help you.
What is a Large Language Model
Before getting into how to use them; a Large Language Model(LLM) is like a very advanced text prediction system. It’s trained on vast amounts of text from the internet, books, and articles(keep in mind this means theres a cutoff for what it could know when you start using it).
When you type a message in a chat interface, the model:
Reads your input
Analyzes the context and meaning
Predicts the most likely and relevant response based on its training
It then generates text word by word, constantly checking that the response remains coherent and relevant. The chat interface sends your message to the model and displays its generated response.
This process happens quickly, creating the illusion of a chat. However, the model doesn’t truly understand or think like a human — it’s making a sophisticated guess based on the patterns in its training data.
Note: for examples below I’ll be using GPT 4o unless otherwise specified.
How not to use an LLM for sports betting
The most powerful models today can often do things like search the web for relevant data automatically before returning a response and that helps them get over hurdles like gaps in their training data, however this does not effectively teach these models the domain expertise that you need to place insightful bets.
Said another way, if these models already had your insights or could quickly get them from the web, many more people would probably already know this information and it would be already priced into the current odds. Sort of a riff on the efficient market hypothesis.
The worst possible option then would be to have a conversation like this with an LLM:
This content reads like it is from the blandest possible source on the internet for understanding the UFC. We have the basics of Leon being good at striking and Belal being a great wrestler, but what else? If we look at the odds currently we have Leon at -265 and Belal at +210.
Would adding this to the prompt improve things?
This does not seem helpful at all unless you do not understand how betting odds work in the American system.
How to improve LLM performance
Improving a LLM for your use case usually involves leveraging at least one of these approaches:
Better Prompting - Just making more structured, and direct requests, limiting what is expected into chunks.
Retrieval Augmented Generation(RAG) - Finding relevant content through a search that can be added to the context with your prompt to improve the responses.
Fine-Tuning - Creating sample datasets that show how you would like the model to respond to various inputs and situations, and then retrain with this data to create a new model.
Said more clearly:
Provide better instructions.
Search for relevant supporting data and add it.
Rebuild a new model having very specific examples to change its overall behavior.
Fine-Tuning requires the most effort but can deliver great results, further work on this topic may include it but will be skipped here.
Do better, step by step
LLMs are not magic, although they can do some very impressive things. A gap currently is doing very complex tasks via a single prompt. Breaking things down could improve the output we receive, for example, after the last prompt, I continued with:
This SEEMS better but we now have encountered our first problem, the data presented is not entirely accurate. The records for both fighters are off, missing recent wins by both fighters.
Be responsible for the knowledge
LLMs are not entirely deterministic, meaning you will get slightly different answers each time you prompt them in the exact same way, and you cannot KNOW that they are going to only use information you provide them.
They are however incredibly biased to information in their context or the information YOU have provided them.
When adding extra information make sure that:
It is structured to make it easy to process and parse.
It is relevant to the problem you are looking to solve.
It is accurate.
Before adding any specific information, you need to start adding structure to your requests. To prevent any of GPT 4o’s searching capabilities from impacting the following examples I’ll be using Claude’s Sonnet 3.5 but the approach should work just the same.
To get over all of the behavior guidelines of any model and to establish tone, I start with this:
After establishing that, it is important to provide your domain knowledge that can be used as well, for example with the UFC you might add something like this in your <user_prompt> section:
The more insightful information you can put into that list, the better the LLM will be at presenting you with a helpful response. If you’re worried about your secret-sauce being used in the next version of these models, check their EULA and perhaps adopt an enterprise or commercial agreement with them that ensures your data isn’t being used in the future.
Domain knowledge on the sport is only a portion of the information to add, you also have to add supporting evidence as well. Something like this:
Honestly going beyond this would be even better, take notes on each specific fight and embed them into the data as well, the better you can catalog the previous items in the performance, the better you will be able to leverage this data for your predictions.
Beyond this, it is always a great idea to include a template of how you want the model to respond as well, the template I use is:
If the template alone is not enough to get the structure you are after, you can consider single-shot or multi-shot prompting to help as well.
Outcome
In addition to all of the metadata on the fights, I still leverage my traditional machine learning models to power the initial prediction and scoring, then embed all the metadata I can to help explain the prediction.
This week’s match of Leon Edwards vs Belal Muhammad yields this:
Conclusion
To query all of this information, structure it, and work with an LLM to help you think through your approaches and insights is certainly not an easy task, it will take time, iterative testing, and a lot of automation to query and support your prompts.
My approach is:
Break your task down into specific chunks that can be prompted.
Structure your prompts with clear labels to help structure the processing of the LLM.
Own the data that goes into your prompts(context) and also deliver it in a structured way.
Provide sample output templates and if needed, fully worked examples for the model to leverage.
If you’d like to see the full write ups for all the upcoming fights this week or on future UFC cards signup for WolfTickets.AI for just $5/month.