Sports Modelling Research

Dr. Alun Owen discusses the agenda for the Mathsport International Conference, to be held in June 2015, and highlights some of the most interesting aspects of the schedule.

As you may know from my previous postings, I lecture in statistics in Higher Education and have a research interest in the development of predictive models in sport, including football and horse racing. Well, this time of year is conference season in my line of work, and so this month I thought I’d highlight a conference I’m co-organising at Loughborough University which has a few talks which may of interest to some who subscribe to Sports Trading Network.

I’m also presenting at this conference on some work I’ve been engaged with looking at predicting the probability of scoring each penalty in penalty shoot-out competitions in major international football competitions. This conference is MathSport International 2015 which will be hosted at Loughborough University (UK), from the 29th June – 1st July 2015. This is the 5th conference in Europe in the biennial series that brings together Mathematics and Sport and the website for the conference is here.

There are a range of talks planned and includes four invited keynote speakers. The first of our invited speakers is Dr Ian McHale (Reader in Statistics at the University of Manchester), who has research interests which include statistics in sports and the analysis of various issues related to gambling and gambling markets. Dr McHale has also published papers on a wide variety of topics in these fields, including Kelly betting, player ratings in football, a modified Duckworth-Lewis method in cricket, time-varying ratings models and forecasting. His talk will describe a model for predicting the results of international football matches which allows for team strengths to vary over time, and reveals which team might claim to be the “all-time greatest”! He will also report on factors which his research suggests affects medal share in the Olympic Games.

Secondly, Mr David Kendix (Actuary and statistician for the International Cricket Council) will consider the potential but also the practical limitations of building models to predict sporting outcomes. In particular he will consider the extent to which techniques used previously in financial modelling can now be applied to sport. His talk will compare financial models with sports models, looking at the use of past data (results, times, distances) and the relative roles played by expert judgement, as well as factors such as motivation, confidence and team spirit.

Thirdly, we have Professor Tony Purnell (Head of Technology for British Cycling and founder of Pi Research developing race car analysis tools), who will argue that sports in general lend themselves well to mathematical modelling, whether using statistical methods or physics modelling approaches. His talk will consider how human beings are not so easily modelled and so the output of a mathematician’s or engineer’s work is more likely to be used to improve a coach’s or an athlete’s intuition rather than being of direct value.

Finally, Professor Sigrid Knust (Professor of Computer Science at the University of Osnabrück) will discuss different methods to construct a schedule for a sports league which are based on an area of mathematics called Graph Theory. Professor Knust will consider the basic problem of finding a schedule for a single or double round robin tournament, in which every team plays against each other team exactly once (or twice), and every team plays one game per round. Additionally, side constraints will also be highlighted e.g. the avoidance of breaks (consecutive home or away games of a team) and fairness issues (like opponent strengths, carry-over effects).

Further details of these four keynote talks can be found here.

In addition to the above keynotes, we also have over 70 further contributed talks, many of which include papers in the conference proceedings, for those attending the conference to take away with them. A full (draft) list of talks can be found here  whilst a detailed (draft) schedule of when these talks are planned can be found here.

I’ve picked out a few of these talks that I thought might be of interest to you in what follows below, but please note some of the scheduled timings are subject to change so for the latest information please do refer to the above web links.

The morning of Monday 29th June (Day 1 of the conference) starts with a session on prediction models. This includes two talks which look at predictive modelling in t20 Big Bash cricket, basketball, and two further talks on predictive modelling in football.

Tuesday 30th June (Day 2) sees a further session on prediction models in tennis that I’m looking forward to as much as the Monday session. This includes a talk comparing the performance of a range of different predictive models that have been published, another looking at the use of tennis rankings to predict performance and a third on regression models in tennis and volleyball with applications to gambling strategies.

That first Tuesday session is followed after coffee by another which includes three further talks, all on models in football. These include modelling the time to the first goal in football, the use of COM-Poisson models, with the final talk by Dimitris Karlis (who developed the R package called bivpos which fits a bivariate Poisson model to football and other applications) on robust modelling in football. Again I hope to be at this session.

The afternoon of the Tuesday sees the first of several sessions by Simon Gleave, Head of Analysis at Infostrada Sports. In this session Simon will give an introduction to the Infostrada Sports database, which will be followed up the following day with a longer one-hour interactive session on what the Infostrada Podium data tool can offer.

Wednesday 1st July (Day 3) kicks off with a session devoted to betting. This includes talks on applications to roulette, optimizing market margins in football, betting in PGA golf, and finally a talk which has the interesting title of “A Safe bet – or is it?” by Dominic Cortis. Dominic has proposed a potentially fascinating talk which looks at the key requirements for odds set by bookmakers.

The final set of talks which I will highlight includes that in the afternoon on the Wednesday. This comprises three talks on prediction in sport, including two which look at predicting athletic performance and a third which looks at prediction in hockey. Again, as I said earlier please note some of the above scheduled timings are subject to change so for the latest information please do refer to the above web links. The conference starts on the Sunday evening with an informal gathering for drinks, networking and catching up with old friends, in the bar at Burleigh Court on the Loughborough University campus.

The Monday evening then sees the Sports Quiz, which this year is being sponsored by Sports Trading Network who are providing drinks for all those coming along and also some quite significant prizes for the winning teams. The Tuesday evening includes a tour of the very extensive sports training facilities across the Loughborough University campus, followed by the conference dinner which is being held at Trent Bridge cricket ground in Nottingham (transport is provided).

I would be delighted if you were able to join us at the conference and details of how to register can be found here, but please note that the deadline to register is 12th June! We can offer a one-day rate but this is not too much cheaper than the full conference rate as we need to cover our fixed costs, but if you wish to discuss options such as this can you email e.management@lboro.ac.uk in the first instance? If you are able to register and join us then do please introduce yourself to me! I hope you found this information useful? Do please get in touch if you wish to discuss anything with me, especially if it relates to modelling football or horse racing, or trading and I hope to meet you at the conference?

The Psychology of Manual Trading Sports

Mercedes Van Essen discusses the psychology of the trader; how the mind can be trained to ensure maximum chance of successful, and profitable trading.

Let’s be perfectly honest about it: Trading is often viewed as the domain of gamblers where winning is viewed as pure luck. This is even truer for the area of sports trading, where many an ignorant bystander may completely fail to understand the intricate nature of the game.

For starters, any form of trading whether you bet on currencies, stocks, commodities or sports, is a high performance activity if you intend to be consistently successful at it.

It requires mental acuity, nimbleness and a high degree of calm focus and detachment from the outcome.

In other words: Psychology is over 90% of the game as any seasoned, successful trader will tell you.

Self knowledge opens the door to (trading) mastery. Self mastery is attained through acquiring in depth self knowledge and is the only portal to the holy grail of lasting trading success.

Your trading results are the mirror of your thoughts, feelings and emotions, and those are inevitably a reflection of the past, and not of the present. While you cannot alter the past, you can certainly alter your thoughts feelings and emotions in the present, yet most people are not doing this, repeating instead most of what they did yesterday and the days and weeks before that.

There is a good reason for this: Your innermost emotions are hidden from your conscious awareness.

The mind is a fickle operator, unless it has fixed reference points, clear goals and strict parameters within which to operate. It does not handle uncertainty well, since there cannot be any fixed reference points whenever you are betting on a future outcome where you have no clue as to how exactly it is going to unfold.

To circumvent this problem the mind accumulated many techniques to fool you into a safe heaven. Typical illusions are beliefs that one is lucky, that this next time has to be a winner, or that a new system will improve one’s odds of success.  These, so called distracter implants of course are obfuscations of the truth.

The conscious mind will feed the unaware the illusion that what you are looking at is real and the complete picture. Yet, nothing could be further from the truth:

The mind’s ability to take in information is extremely limited.

It takes in around 25 to 40 bits of information per second, while the entire body matrix, which is the intuitive, non linear side of your mind is capable of taking in millions of pieces of information at the same time.

Since the conditioned part of your brain is obviously unable to compute larger levels of information, the majority of what your mind takes in at any given moment is hidden from your conscious view.

Put differently: 90 % of what you do, think and feel happens without your knowledge.

Your conditioned mind operates very similar to a computer: All is well if all the programs are in the correct order, however, if there is a glitch in the filing system, the computer won’t work too well.

Successful trading of any kind requires from you to make consistently correct decisions with incomplete information about a future outcome. Obviously you need an edge:

The majority of people have no idea that they are effectively operating in a hypnotic sleep state, believing that they are in control of their day to day decisions.

Your best trading edge is to increase your conscious awareness: Expanding your conscious awareness beyond the purely linear functioning of your mind enables you to process more information. Your ability to handle information with calm equanimity, staying out of the emotional roller coaster of the crowd consciousness is your biggest trading edge by far. I am sure you can see why this is so.

When you see beyond the emotions that arise from the conditioned part of your brain your inner chatter slows down. This allows you to see more of the big picture, because you are accessing the mind modalities where creativity and intuition come into play. Creativity and intuitive senses function in a non-linear way not needing fixed reference points. When you operate without the need for fixed reference points you enter into the realm of imagination and infinite possibilities. Here you have access to the zero point field, as it is referred to in the language of quantum physics. The zero point field is also the point from which all manifestation originates, including your trading success, or the lack thereof.

I was always fascinated how we create reality, and studied it since my early twenties. The findings in quantum physics of the past 20 years are ground-breaking and will alter the way we think and operate in years to come, because quantum physics is proving the essence of the teachings from the wisdom traditions:  We are the creators of our reality.

Integrating this understanding and finding effective ways to utilise it to our advantage in trading and in life in general led me to write The Buddhist Trader and several other books on trading psychology and crowd behaviour, viewed through the lens of the quantum and the wisdom traditions.

What I learnt transformed my trading performance.

I stopped working on refining my trading system every time there was a drawdown and worked on improving my knowledge of myself and of universal law instead.  My trading system evolved as a result of what I had learned and experienced. As my knowledge deepened and I began to apply certain universal laws in my own trading my confidence in myself grew, simply because I began for the first time to understand why I had had challenges and what I needed to do to address them.

It is a certain fact that most traders, even those with experience, have reality back to front, believing that tweaking their trading systems will bring them better results, when the answer actually lies within themselves. When you get this and start unlocking your inner potential trading success will come your way.

An easy guide to closing out trades

Andrew Colin breaks down the mathematics of hedging your pre-game position, in-play.

Closing out a trade to lock in your profit is one of those basic techniques that everyone should understand, but is surprisingly hard to find explained. So here is a simple account.

Closing out a back trade

Suppose that you’ve backed a soccer team to win at odds of 10. They do well during the match and the odds drop to 5. The value of your bet has increased in value, but you’re worried that the match could go against you. How do you close, or hedge, the bet before the game ends to lock in your profit?

You can do this by putting on a lay bet against the same team that gives equal but opposite exposure to your first bet. How much should you lay to lock in the profit?

The trick here is to look at how much each of the two bets will make at the end of the match. Suppose that

–          the odds at which you made your initial back bet were ODDS1;

–          the odds at which you  made your subsequent bet were ODDS2, where ODDS2 < ODDS1;

–          you bet $1 on the initial back bet;

–          you bet $S on the subsequent lay bet, where we don’t know S yet.

If the team wins, profit from the back bet will be -1 + ODDS1, and the loss from the lay bet will be (1-ODDS2) * S. The total amount won will be (-1+ODDS) + (1-ODDS2) * S.

If the team draws or loses, profit from the back bet will be -1, and the profit from the lay bet will be 1 * S. Therefore the total amount won will be -1 + S.

To lock in a guaranteed profit, irrespective of the outcome of the match, set the two expressions for winning amounts whether you win or lose to be the same: in other words

(-1 + ODDS1) + (1-ODDS2) * S = -1 + S

The only unknown in this expression is S. A little algebra shows that

S = ODDS1 / ODDS2

and the profit is S-1 for each dollar staked.

Example: In the above case, the value of S is 10/5  = 2.  To lock in a profit of S-1 – 2-1 = $1, you should hedge by placing a $2 lay bet at odds of 5.

Closing out a lay trade

Consider the opposite case, where we have placed a lay bet at ODDS1, seen the odds decrease, and now want to place a back bet at ODDS2 to take profits. As before, set the amount you back to be S.

If the team loses, profit from the lay bet will be 1, and the loss from the back bet will be -1 * S. The total amount won will be 1-S.

If the team wins, loss from the lay bet will be 1-ODDS1, and the profit from the back bet will be (-1 + ODDS2) * S. The total amount won will be (1-ODDS1) + (-1 + ODDS2)*S.

Setting the two expressions to give the same outcome implies

(1-ODDS1) + (-1 + ODDS2) * S = 1 – S

which gives

S = ODSS1/ODDS2

and a profit of 1-S.

For example, suppose you initially placed a lay bet on the team at odds of 5, and the odds move to 10. In this case S is 5/10 = 0.5. To lock in a profit of 1 – 0.5 = $0.5, hedge by placing a back bet of $0.5 at odds of 10.

Conclusion

The one result to take away from this is that the amount to hedge is always ‘first odds divided by second odds’, whatever your initial bet.

Happy hedging!

Liquidity and ‘Getting On’

With bookmakers increasingly restricting bets for those players they perceive as being ‘smart’, Sean Hurley discusses the option of using brokers and other outlets to get your trade away.

Whether you are a large well-funded syndicate supported by hundreds of highly skilled Quantitative Analysts and Data Modelers or if you are just a punter with an eye for a ‘value’ bet it seems that everyone shares the same struggle: ‘getting on’.

People looking in from outside the industry often find it hard to believe the notion of the bookmakers restricting you to a tiny bet, never mind full blown refusing to even look at the action you would love to send them. The sad fact is that getting real bets away with the vast majority of the UK books is a near-impossible task. Any hint of a chunky bet or a selection that moves a couple of points renders your account next to useless.

Sadly I can only see the liquidity in the UK getting tighter over the years to come. Bookmakers are investing more and more resources in trying to get ahead of the sophisticated proprietary modelers betting to the value they find from formulating their own more detailed pricing models. In the cross fire will be a lot of unsuspecting losing regular punters who have been auto restricted by an arbitrary computer system, with qualitative human decision making disappearing from the industry all together.

Thankfully we all know that there are options outside of betting with the household names to be able to get our bets on. Far away from the FTSE listed companies desperate to keep their shareholders happy with smooth FOBTs backed profits, lie a selection of other outfits that can fill the liquidity gap. I am talking about brokers, private layers, betting exchanges and a very small amount of online bookmakers with a higher appetite to take risk.

The best place for your action really does depend on the sort of business you are trying to get away. For instance if you are arbitrage trading then the vast majority of the online bookmakers wouldn’t be interested in just accepting your top price business, but there are other options available. If you are an API driven high execution trader then there are also numerous options to make sure you are maximizing your volume; same applies if you are looking to seed markets.

On the flip side if you are just a punter who likes to have a big bet but has been knocked back by the ‘traders decision’, then there are options where you will get treated with respect and also looked after to a level that the rest of the industry just cannot match up to.

Getting £500k+ on an NFL / MLB game and £1m+ on a top tier Soccer Asian Handicap are all very possible, you just need to look in the right places for those reliable robust firms who are willing and able to take the action.

If you need help finding new outs or are looking for introductions into specific bookmakers just get in touch and I will be happy to help you where I can.

Scraping Online Price Data

Sportsrisq’s Justin Worrall discusses the concept of ‘scraping’ prices from online bookmakers to easily and freely obtain data to use within trading strategies within any sport.

One of the great things about the web is the fact that openness was built in from the outset. Many a developer or designer has built their career upon the ‘View Source’ button; the ability to look under the hood and see precisely what’s going on underneath.

It didn’t have to be that way, either; it is simply historical accident that the web was invented by an academic researcher rather than a corporate giant, and you can bet your boots that if Microsoft had had their way, ‘View Source’ would have never seen the light of day.

And whilst the web is now a much more complicated place than 20 years ago – web sites are no longer simple static HTML pages, but rather a dynamic and unholy mix of HTML, Javascript, CSS, images, JSON and XML feeds etc – it’s still generally possible to look inside a website and see how a particular effect has been achieved or where a piece of data is coming from.

How the bookmakers must curse this. Their sites are possibly some of the most complex on the web, requiring real time price updates and bet placement facilities, but there’s no way for them to keep the underlying mechanics a secret. If they want to pipe prices to one customer’s browser, there’s very little they can do to stop another customer feeding those same prices into a machine for analysis.

With this in mind, it doesn’t take much to discover public, undocumented price resources lying around the web. Try this one for size here.

It’s the root of the Stan James price/event tree.

How did I find it ? Simple – I installed the HTTPFox extension for Firefox, and monitored the web traffic as the Stan James site loaded.

And now we know the source URL, it’s easy to kick up a script to extract the key event information.

[Footnote: these examples are in Python, a wonderful language for exploring data. Go to the Python website and follow the installation instructions; they are pretty simple. You will also need the lxml package for parsing XML]

from lxml import etree

import urllib

UrlPatterns={
    "root": "http://www.stanjames.com/cache/boNavigationList/541/UK/%s.xml"
    }

def get_categories_for_sport(sport):    
    url=UrlPatterns["root"] % sport["id"]
    doc=etree.fromstring(urllib.urlopen(url).read())
    return [{"name": el.xpath("name")[0].text,
             "id": el.xpath("idfwbonavigation")[0].text}
            for el in doc.xpath("//bonavigationnode")]

print pd.DataFrame(get_categories_for_sport({"name": "Football", "id": "58974.2"})[:30])
          id                                     name
0    58974.2                                 Football
1    79765.2     Sunday's UK and Elite League Matches
2    79764.2          Sunday's Rest Of Europe Matches
3    79821.2       Sunday's Rest of The World Matches
4    78201.2                         Monday's Matches
5   121040.2                      Wednesday's Matches
6    94819.2                       Thursday's Matches
7   134890.2                         Friday's Matches
8   121134.2   Saturday's UK and Elite League Matches
9    79760.2        Saturday's Rest of Europe Matches
10   85102.2     Saturday's Rest Of The World Matches
11  125668.2                         *** Promotion***
12  113017.2          ----^----Daily Coupons----^----
13  123582.2                    International Matches
14  114405.2                International U21 Matches
15   94920.2                International U20 Matches
16  112919.2                International U19 Matches
17   94921.2                International U18 Matches
18  126035.2                            *** Promotion
19  113015.2         ----^----Internationals----^----
20  116071.2                         English Football
21  119561.2                   English Premier League
22  119562.2                     English Championship
23  119563.2                         English League 1
24  119564.2                         English League 2
25  139223.2                           English FA Cup
26  113023.2                       English League Cup
27  116070.2                        Scottish Football
28  116742.2                     Scottish Premiership
29  113019.2  ----^----Main Football Coupons----^----

But of course there’s more than root information here; there’s an entire event tree to be parsed. So once you have the root level categories, you can get the groups associated with a category:

def get_groups_for_category(category):
    url=UrlPatterns["root"] % category["id"]
    doc=etree.fromstring(urllib.urlopen(url).read())
    return [{"name": el.xpath("name")[0].text,
             "id": el.xpath("idfwmarketgroup")[0].text}
            for el in doc.xpath("//marketgroup")]

print pd.DataFrame(get_groups_for_category({"name": "English Premier League", "id": "119561.2"})[:20])
           id                                               name
0   1034393.2                                     Premier League
1    807989.2        English Premier League 2013/2014 - Outright
2    870661.2  English Premier League 2013/2014 - Top Goalscorer
3    857628.2       English Premier League 2013/2014 - W/O Big 3
4    847698.2       English Premier League 2013/2014 - W/O Big 6
5    830853.2    English Premier League 2013/2014 - Top 4 Finish
6    834549.2    English Premier League 2013/2014 - Top 6 Finish
7    857626.2    English Premier League 2013/2014 - Top 8 Finish
8    828455.2     English Premier League 2013/2014 -  Relegation
9    838823.2   English Premier League 2013/2014 - Top 10 Finish
10   831047.2      English Premier League 2013/2014 - To Stay Up
11   857671.2   English Premier League 2013/2014 - Top 15 Finish
12   834582.2  English Premier League 2013/2014 - To Finish B...
13   857627.2   English Premier League 2013/2014 - Top 12 Finish
14   858227.2        English Premier League 2013/2014 - Handicap
15   845037.2  English Premier League 2013/2014 - Straight Fo...
16   845038.2   English Premier League 2013/2014 - Dual Forecast

And once you have the groups, you can get selections associated with that group.

[Footnote: the event tree has different depths at different levels. For outright markets, there are three levels only – Category, Group/Market and Selection. For match events, there are more levels – Category, Group, Event, Market and Selection; but the principles for extracting the data remain the same; it’s just a question of identifying the important XML attributes]

UrlPatterns["group"]="http://www.stanjames.com/cache/marketgroup/UK/%s.xml"

def get_selections_for_group(group):
    url=UrlPatterns["group"] % group["id"]
    doc=etree.fromstring(urllib.urlopen(url).read())
    return [{"name": el.xpath("name")[0].text,
             "id": el.xpath("idfoselection")[0].text,
             "price": "%s/%s" % (el.xpath("currentpriceup")[0].text,
                                 el.xpath("currentpricedown")[0].text)}
            for el in doc.xpath("//selection")]

print pd.DataFrame(get_selections_for_group({"name": "Top 4 Finish", "id": "830853.2"})[:10])

           id         name  price
0  95154554.2     Man City    1/6
1  95154553.2      Chelsea    1/5
2  95154556.2      Arsenal    1/5
3  95154555.2   Man United    1/3
4  95154558.2    Liverpool    1/1
5  95154557.2    Tottenham    9/4
6  95154559.2      Everton   12/1
7  95154562.2  Southampton   20/1
8  95154560.2    Newcastle  200/1
9  95154563.2      Swansea  250/1

All very nice so far, but of course there are a very large number of events/markets in the tree, and we don’t want to have to fetch them individually. It would be better to write a search function which accepts a ‘matching’ expression, and which will crawl the tree looking for events that match that expression.

A sample match expression might look as follows:

XPath="Football~English Premier League 2013/2014~(Top \d+)|(Outright)|(Relegation)|(Bottom)"

This expression is designed to match any Premier League outright market where the payoff is a function of a team’s finishing positions.

Don’t worry too much about the funny syntax (it uses a mini- language called ‘regular expressions’) – the odd- looking bits work as follows:

  • ‘(Top d+)’ will match any market such as Top 4, Top 6, Top 10
  • ‘(Outright)|(Relegation)|(Bottom)’ will match either Outright, Relegation or Bottom

Now we need a crawler function. This is a little complicated but works around the idea of a ‘stack’, which contains URLs for investigation by the crawler. The crawler picks one URL from the top of the stack at a time, fetches the data for that URL, adds any matching markets it finds to the stack, and adds any prices it finds to the results. The process continues until there are no more URLs for the crawler to investigate, at which point the results are returned.

import re, time

SportIds={"Football": "58974.2"}

Handlers=[get_categories_for_sport,
          get_groups_for_category,
          get_selections_for_group]

def crawl_events(path, wait=1):
    tokens=path.split("~")
    if tokens[0] not in SportIds:
        raise RuntimeError("Sport not found")
    stack, results = [], []
    stack.append(({"name": tokens[0],
                   "id": SportIds[tokens[0]]}, 
                  [tokens[0]],
                  0))
    while True:
        if stack==[]:
            break
        head, stack = stack[0], stack[1:]
        parent, path, depth = head
        # print "~".join(path)
        handler=Handlers[depth]
        if depth < len(tokens)-1:
            stack+=[(result, 
                     path+[result["name"]],
                     depth+1)
                    for result in handler(parent)
                    if re.search(tokens[depth+1], result["name"])]
        else:
            for result in handler(parent):
                result["path"]=path+[result["name"]]
                results.append(result)
        time.sleep(wait)
    return results

OK, time to run the crawler with our matching expression. When it’s done, we’ll print out prices associated with some randomly- chosen teams.

Selections=crawl_events(XPath)

def dump_selections(teamname):
    rows=[{"name": "%s/%s" % (item["path"][-2].split(" - ")[-1], item["path"][-1]),
           "id": item["id"],
           "price": item["price"]}
            for item in Selections
            if teamname==item["path"][-1]]
    print pd.DataFrame(rows, columns=["id", "name", "price"])

for teamname in ["Arsenal", "Everton", "Southampton", "Sunderland"]:
    print "-- %s --" % teamname
    print
    dump_selections(teamname)
    print
-- Arsenal --

           id                  name price
0  88418751.2      Outright/Arsenal  10/3
1  95154556.2  Top 4 Finish/Arsenal   1/5
2  95480703.2  Top 6 Finish/Arsenal  1/66

-- Everton --

           id                   name  price
0  88418754.2       Outright/Everton  150/1
1  95154559.2   Top 4 Finish/Everton   12/1
2  95480706.2   Top 6 Finish/Everton    9/4
3  96613913.2   Top 8 Finish/Everton    1/7
4  95788006.2  Top 10 Finish/Everton   1/25
5  96614250.2  Top 12 Finish/Everton  1/150

-- Southampton --

           id                          name  price
0  94586817.2          Outright/Southampton  150/1
1  95154562.2      Top 4 Finish/Southampton   20/1
2  95480713.2      Top 6 Finish/Southampton    4/1
3  96613918.2      Top 8 Finish/Southampton   8/15
4  95788011.2     Top 10 Finish/Southampton    1/6
5  96614253.2     Top 12 Finish/Southampton   1/16
6  96615241.2     Top 15 Finish/Southampton  1/250
7  95434367.2  To Finish Bottom/Southampton  150/1

-- Sunderland --

           id                         name  price
0  94962059.2        Relegation/Sunderland  11/10
1  95154567.2      Top 4 Finish/Sunderland  500/1
2  95480712.2      Top 6 Finish/Sunderland  500/1
3  96613921.2      Top 8 Finish/Sunderland   33/1
4  95788016.2     Top 10 Finish/Sunderland   16/1
5  96614258.2     Top 12 Finish/Sunderland    4/1
6  96615246.2     Top 15 Finish/Sunderland    7/4
7  95434371.2  To Finish Bottom/Sunderland    8/1

So there you have it, easy price discovery courtesy of an undocumented event feed.

In many ways it’s easier to get prices from a feed like this than use the Betfair API – you don’t have to mess with login tokens, you don’t need a SOAP library, and for certain market segments (such as outright markets), you’ll probably find better liquidity with a bookmaker than on the exchange.

[Footnote: the reason you can do this with Stan James is that their backend uses a product called Finsoft Warp, which caches all their prices in static XML files. BetFred use the same product and can be scraped in the same way; homework is to discover the BetFred URL structure using HTTPFox (the BetFred URL structure is slightly different from Stan James)]

Welcome to Sports Trading Network

The site is launched and we are working very hard to develop an online network for quantitative, algorithmic and professional sports traders and arbers to produce and share unique content to help drive your profitability.

We are delighted to welcome you to the new Sports Trading Network website, thanks for visiting.

We are a dedicated publication for the professional sports trading community and we publish articles to help further the strategies of traders who are currently using, or looking to use, technology and/or statistics to beat the market.

When it comes to sport, we are agnostic; the more the merrier and the more obscure; the better.  Many of the articles will be as relevant to one sport as another, although some will be sport-specific.

The site has been segmented by skill level; Semi-Pro, Pro and Elite, the definitions of which can be found within the relevant section. This is not a site for gamblers or punters or those who rely purely on their ‘knowledge’. Nor do we provide betting tips or a forum for tipsters, even though some of them are very talented at what they do.

We hope to attract a diverse readership for the site and therefore we need to attract a diverse network of contributors. If you are interested in contributing any relevant article, then please do contact us. If you have previously written a relevant academic paper, then we would love to publish it, so please get in touch.

We are not monetizing this site with banner adverts, links or false recommendations of any particular provider or supplier. Sports Trading Network has evolved from BetRecruit and as such, we have an existing network of global sports traders, however we are not acting as a recruitment agency. We want employers looking for talented quantitative, algorithmic and IT-focussed traders and programmers to advertise their vacancies on the site (free, of course).

We have worked hard to try to produce a site that allows the content to speak for itself and for that we are very grateful to Sketch; our brilliant design agency who have worked wonders with a limited brief.

Finally, in the weeks and months following the launch of the site, we will be working hard to build out our social media and general online presence, so if you like and appreciate what you read, please do help us by sharing our site through digital media.

Thanks and happy reading!

An Introduction to Sports Liquidity in Asia

Asia is the gravitational centre of global sports wagering and smart traders and hedge funds are adapting to its unique customs and enormous liquidity pools.

The culture and legality of wagering and trading on sports differs greatly around the world. The terms white, grey and black are the common vernacular to describe the varying degree of acceptability in each territory. In the UK, sports betting and trading has been fully legalised for decades and almost every shopping district in every town and city hosts a range of retail bookmakers.

Europe as a whole is generally considered to be fairly well advanced in legislative matters in sports betting and contains some of the leading licencing authorities globally including the Isle of Man, Malta and Gibraltar. However the largest markets globally; China, India and the US take a very different legal view of sports wagering.

The appetite for betting on any sport, whether it be football, basketball, NFL, cricket or tennis, also differs between cultures, but it is fair to say that every country in the world has some degree of sports trading appetite in its population. In Asia and the US, both generally considered to be grey markets (except for some exceptions like Nevada and on some sports such as horse racing), these markets’ demands are supplied via a pyramid of agents. Local, bottom-tier agents will supply the retail market and provide wagering facilities ‘on the ground’. A system of credit is often used, rather than cash deposit, with settlements between the local agent and the player made on a weekly or monthly basis, depending on level of credit supplied.

The Asian betting industry is entirely different to its European counterpart. The agent system itself, and the Asian handicap betting product, is very much the result of how the industry has developed along cultural and historical lines. Asian bookmakers have been using agents long before the internet came about, as it enables their services to be offered to clients in regions outside their immediate reach and in neighbouring countries. Once an agent has reached a certain level of liability or risk, they will pass this on to other more ‘senior’ agents. At every level of the pyramid, an agent has a rough guideline of their credit risk and once this level is reached, they too will pass on trades or hedge their position along the chain to the next tier. This continues until it reaches the ‘master agent’, who will place the bet with the bookmaker, in effect completing the pyramid structure.

Looking at this structure from the top downwards; once an operator has opened a book, it will usually appoint an individual master agent for a specific country. This Master Agent will be given a certain amount of credit and deposit and will sometimes share in the risk of the book. The master agent will then have his own sub-agents, who will also place some deposit and get a certain amount of credit and may negotiate their own deal where settlement is on turnover rather than on losses. These agents will find their own sub-agents and will set up similar payment and credit structures, all of them earning commission from the losses of their end-user players. Each part of the chain becomes responsible for its reporting own line.

The earnings model for agents is as follows: the bookmaker takes commission on wagers and gives the ability to take up to a certain percent of risk on bets to Master Agents. The Master Agent often makes a risk deposit at the Asian betting office, to guarantee the payment of winnings from bets. The Master Agent can then pass on a specific part of his commissions as well as the ability to assume risk on bets to his Master Agent and the Master Agent can do so for Agents.

The system may sound somewhat complicated, but it ensures that single person is ever responsible for the entire betting accounts of players – rather the entire pyramid of agents supports it. The deposits and bet winnings of customers are therefore guaranteed no matter what happens. Agents with poor reputations quickly find themselves out of a job, with no chance to return.

Sports Trading Network includes many reputable agents operating from licensed jurisdictions globally. These agents ring-fence deposits, settle promptly and can source accounts from a large number of licensed Asian bookmakers. In addition they are able to take on very large volume trades at best-price without closing winning accounts. In some cases, a credit line can also be negotiated to offer traders the possibility to significantly leverage their trading levels. Finally, for those trading individuals or syndicates using auto and high-frequency execution, the Network’s agents can supply online accounts to support such trading activity.

Asian Handicaps – The Basics

An article that briefly outlines the commonly used Asian lines which are becoming more prevalent in today’s global sports trading.

Asian Handicap betting is becoming more and more popular as it providers traders the opportunity to eliminate the ‘draw’ in a football game. For this reason, this form of bet has become popular not only in Asia but also in Europe. While handicap trading applies to several sports like hockey, Asian Handicaps remain very popular in football.

Handicap bets in general work by providing a team with an advantage or a disadvantage of goals. By doing so, the draw outcome of a match is eliminated, leaving only home and away wins as the choices. By awarding an advantage to one of the teams, the probability of either home or away win is balanced, and the odds are usually evens (or plus-minus 10%) for these bets. The advantage awarded in an Asian handicap could range from as little as 0.25 (quarter-ball) to much higher, such as 4.5, for a weak team.

Some examples will now clarify how Asian handicap bets work.

  1. Half-ball (0.5 goals advantage): One of the most popular bet formats. For example £100 is placed on Liverpool with a handicap of -0.5 (Liverpool have a -0.5 goals disadvantage) against Swansea City. Here essentially, Swansea is the underdog, and the bet is only a winner if Liverpool wins the game. Should Swansea get a draw or a win, the handicap tips the bet the other way. This system works for 1.5, 2.5 goal handicaps etc.
  2. Full-ball or an Asian Handicap of 1: This time, let’s say Manchester United have a handicap of -1 against Norwich City. In this case, the bet is won, should United win by 2 goals or more. Should Norwich draw or win, we will lose our bet. However, in case United win by exactly one goal, our bet will be a push or void bet, and our stake will be returned. This system works in a similar manner for handicaps of 1, 2, 3 etc.
  3. Deadball or 0 handicap: In this case neither team has a clear cut advantage. Say a game between Spurs and Arsenal. Let’s assume we back Spurs at a 0 goal handicap. Should Spurs win, we win our bet. We would lose the bet if Arsenal win the match. In the case of a draw, the stake will be refunded (void bet). This is the same as the western draw no bet