In a post i did a couple of months ago, i was looking into whether we could use big data to predict the outcome of a soccer match. Before you say that's a waste of time, Google's doing something similar with their competition to predict the outcome of the NCAA basketball championship on Kaggle.
Unfortunately, after month of looking around, i've come to realize that such data doesn't come cheap. The freely available data also lacks a lot of the data points that i'm interested in like player values and suspensions.
I don't have the deep pockets of Google to pay for such data so i've had to improvise. If i can't do a proper prediction model and run it through a test set, i will create a model manually, assigning weights to data points that affect the outcome of a match in order to come up with a score for each team. The team with the higher score wins and if they're close, this indicates a high probability of a draw.
I won't give the exact weights for the fields but here is what i've found that's able to predict the result fairly accurately:
Because squad value is subjective, this prediction model tends to only work on the bigger leagues where there's a fairly accurate estimate of a player's worth. Using it on a small league like the S-League had much poorer performance. With 2 weeks of publishing predictions so far, the results have been 7/10 for both weeks. It really should have been 8/10 on the second week but i got distracted lol.
You can see the predictions - here and here.
Predictions made randomly should average out to 3/10 over the long run. I'll continue to publish the predictions over the coming weeks and hopefully the model holds up. It will get interesting after Game Week 35 because some teams won't have anything to play for. They'll start resting players and it's hard to know who makes the squad. The model assumes the best team from each side plays so i expect the performance to decrease.