arrow_back Back to freelances
F

Python Developer for Horse Racing Backtesting

Freelancer

Share:
placeGB home_workRemote assignmentContract publicAggregated job · GB

eventPublished on Aug 29, 2026 · verifiedWe confirmed on Aug 30, 2026 that it's still live

£ 20 – £ 250 per project

About the job

I am looking for an experienced Python developer to help build a robust research and backtesting system for pre-race horse-racing trading on the exchange. I already have approximately 4 GB of historical Exchange Stream data, including .bz2 market files, together with API documentation and an initial trading hypothesis. The immediate objective is to build a technically accurate system that can: 1. Read and replay historical Exchange Stream data. 2. Reconstruct market and runner states accurately. 3. Generate fixed time-to-off market snapshots. 4. Simulate realistic back and lay orders. 5. Calculate correct gross and net profit after commission. 6. Test trading strategies using chronological out-of-sample data. 7. Produce complete and auditable trade reports. The first version will cover: - Horse racing only. - Great Britain and Ireland initially. - WIN markets only. - Pre-race trading only. - No positions intentionally held in-play. - One strategy position per market. - Current favourite and second favourite analysis. - Historical replay and backtesting before any live API work. Existing data The historical files are Exchange Stream .bz2 files containing data such as: - Market definitions. - Event and market IDs. - Runner IDs and names. - Market status and scheduled start time. - Best available-to-back prices. - Best available-to-lay prices. - Available amounts at the top price levels. - Last traded price. - Traded volume. - Market suspension and in-play status. The files contain incremental Exchange Stream updates, so the developer must understand that they are not ordinary CSV snapshots. A persistent market state must be reconstructed by correctly applying each update in timestamp order. Initial paid technical test The selected developer will first complete a small, fixed-price paid test using one sample historical WIN market file. The test must: 1. Decompress and parse the .bz2 file. 2. Identify: - Market ID. - Event ID. - Venue. - Scheduled market start. - Market type. - Runner names and IDs. 3. Reconstruct the market state by applying Exchange Stream delta messages. 4. Produce snapshots at: - Ten minutes before scheduled start. - Five minutes before scheduled start. - One minute before scheduled start. 5. For each snapshot, output: - Current favourite. - Favourite back price. - Favourite lay price. - Available amounts at the best prices. - Last traded price. - Runner traded volume, where available. - Total market traded volume. - Number of active runners. 6. Identify market suspension and in-play timestamps. 7. Explain how missing fields, zero-size ladder updates and unchanged values have been handled. 8. Include automated tests. 9. Commit the code and documentation to a private GitHub repository owned by me. Successful completion of this paid test may lead to the full project.

Keep reading for free

Create a free account to see the full job and apply.

  • badgePortfolio visible to companies
  • notificationsNew job alert by email
  • favoriteAlways free, no catch