Overview : A bot, which runs on the Betfair exchange to run on horse-races being run in England or Ireland. At race suspension, the closing back-price for all horses is captured. Based on a reduction factor, lay bets, are submitted for all horses, for a pre-set liability. Unmatched bets are cancelled, via a timeout field. The shortest horse-race is run, in about 57 secs, the longest up to 12 mins. The timeout would probably be set, at 30secs. If a bet is matched, 2 options are required : Either, the bet is left alone or, if a green-up feature is required, a Back bet is submitted, which if matched, will equalise the liability of the initially matched Lay. e.g. Pre-race, a horse is 3.0. The global reduction factor is 50%. The liability is set at 200. Once the race goes in play, a Lay of 200 at 2.0 is sent to the exchange, to be cancelled after 30 secs, if not matched. If the bet is matched, the liability is 200. A back, should be sent, at the pre-race price (3.0) to recover the 200 - so, in this case - a back for 100 at 3.0 would be sent. If the bet was part-matched, the back bet, should just recover the amount of the liability that was matched. e.g. Say, 90 at 2.0 was matched. A back of 45 at 3.0 should be sent. The back bets, will never be cancelled. The back bet, should only be sent, after the timeout has cancelled the existing lay orders. (In the case of a fully matched lay and back bet) If its matched, if the horse wins, my liability will be 0. If it loses, i will win 100. The bot, doesnt have to use the API. It can screen-scrape the data. Additonal Details : I want a self-contained Bot, with low manual maintenance. It needs to run on Windows XP. It will have a facility to log-into a Betfair user account, and automatically, load all the English and Irish horse races, on a rolling basis. (so, initially, it may load 20 races for July24, as the number of races left open, gets below 10, it looks for new races to be added) - these are normally added by Betfair, in the evening, after racing for the day has finished. The races are stored sequentially, based on 'Off-time'. As a race is suspended, and is turned 'in-play', various settings are fetched : Global settings : Interval, after which Betfair un-suspend the race to submit bets. Liability per horse Reduction factor, from closing price, as the mkt was suspended. Cancel timeout - the amount of time to elapse, before the unmatched bets are cancelled. The maximum number of runners the lay bets should be submitted for. So, in detail : if there are 20 races day. The first race is at 2.00. It contains 12 runners. The Betfair lay price, in column 3 (the most active column), is continually captured, till the race is off. Once the race goes in play, lay bets are submitted, for the global liability, at the closing Betfair price, minus the reduction factor. They are auto-cancelled, by a timeout setting. Once unmatched, or part matched bets have been cancelled, any matched bets look to see if a back bet is required. If it is, the recovery back is sent, to equalise the liability. The bot then moves onto the next race. If 2 races are put in-play at the same time, the bot must be able to handle this.