You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
1.4 KiB

# Prediction Market Arbitrage
Supports Kalshi prediction markets, Nadex binary options, and CME event contracts (through tradovate client).
Draws basis future pricing from yahoo finance.
Currently has code for nasdaq and s&p pairs, but can easily support any contract traded on these platforms.
## Setup
Provide auth data in `*.auth` files in json format.
Relies on python venv with `requirements.txt`.
If you're going to use nadex, install node and `package.json` for lightstreamer.
The pair you're considering and the minimum spread to execute a trade is controlled in the runner files
e.g. `nasdaqdaily.py` or `spdaily.py`.
## Running
Just run `python nasdaqdaily.py` or `python spdaily.py` etc. You can provide "demo" as a sys arg to run in the sandbox environment (for
the trading platforms that support this).
Log data, of good spreads found and trades executed, are outputted to stdout, so you should run this on
tee (into `systemd-cat` if you're on the hetzner server so we can export from journalctl).
Login sessions are outputted into `*.session` files, which can be cleaned up using `./clean`.
## Testing
Run `pytest -rA`.
## Todo
- Add fidelity, and equities vs futures (this requires non-piecewise math solveer)
- Reverse engineer and reimplement lightstreamer in python
- Rigorously model execution risk better than just a minimum spread (look into Almgren-Chriss mean-variance and LVaR models)
- Refactor source code layout