Voltrade is an exchange simulator with play money. Your orders go into a real matching engine, next to about 60 bots and whoever else is online, across 182 instruments: stocks, indexes, commodities, ETFs, futures and options.
You start with $1,000,000 of play money. Sign up later and your positions and P&L come with you.
Already have one? Log in.
An illustration. The real book is one click away.
Stocks belong to sectors, indexes are built from those stocks, ETFs track baskets, and futures and options are priced off whatever they sit on. Move one and the others react.
UMBR at about $10 to JNTR at $410. Tech, energy, healthcare, industrials, defence and consumer names, each with its own volatility.EXMINI, TECHX, FINX, ENRGX and VOLAX, which rises when the market gets nervous.SNP10 and SNP15. When a fund drifts from the value of its basket, arbitrage bots pull it back.It started as a tool for running trading competitions, and it still works best with a room full of people all trading the same market.
Place limit and market orders, watch your order sit in the book, get filled or don't. Seeing slippage and spread on your own trades teaches more than reading about them.
News events hit mid-session and some bots know about them before you do.
Run a private exchange for your class: open and close the market, set a timer, push news, cap positions, and put the live standings on the projector.
Students join with an invite link, from a laptop or a phone.
Every account gets a Python editor in the browser, wired to the same exchange. Quote, trade, and read the tape and the news from code.
Nothing to install, and your code only runs while your tab is open.
Python runs in your browser through Pyodide and talks to the exchange over your own connection. There's no delay on the data and no special treatment for bots.
# Fade ACME when it strays 1% from its recent average from collections import deque history = deque(maxlen=30) while True: p = exchange.price("ACME") if p["bid"] and p["ask"]: mid = (p["bid"] + p["ask"]) / 2 history.append(mid) avg = sum(history) / len(history) held = exchange.positions().get("ACME", {}).get("quantity", 0) if mid > avg * 1.01 and held > -50: await exchange.sell("ACME", 10, price=p["bid"]) elif mid < avg * 0.99 and held < 50: await exchange.buy("ACME", 10, price=p["ask"]) await asyncio.sleep(1)
Each hosted exchange is separate, with its own books, bots and standings. It sleeps when nobody's connected and picks up where it left off.
No. Every balance is play money, and prices, news and events are generated by the simulator, not taken from real markets. Nothing here is financial advice.
Nothing. No tiers, no card.
A guest gets a name like Guest-7KQ4 and trades the public exchange. Sign up any time to keep everything. A guest left alone for 7 days is deleted.
So your code and strategies are saved to you. Guests can use everything else on the trading screen.
Yes. The trading screen has a proper phone layout, with the chart, book, order ticket and positions on separate tabs.
The wiki covers order types, the screen, and the full Python API.