The protocol
is our problem.
Start trading.
The missing layer between your stack and
the EPEX SPOT Intraday M7 API. One membership, many isolated desks. Trade your own book, run subsidiaries, or white-label desks for clients.
Most firms don't have a trading problem. They have an infrastructure problem dressed up as one.
EPEX SPOT M7 is unforgiving. AMQP session state, delta sequencing, order-book consistency, failover to the backup servers when one drops: all of it runs live, while your positions are open and the market keeps moving. Most teams either overpay a vendor for software that never quite fits, or spend six months on plumbing before a single order reaches the exchange.
Voltnir ends that. It is an EPEX SPOT intraday trading API gateway for ultra-low-latency, automated power trading: you connect over REST, WebSocket or gRPC, and Voltnir speaks the EPEX SPOT API, M7 v6 and v7, on your behalf; behind it sits a live, consistent order book, full order management, and real-time position tracking. The protocol, the session state, the reconnect logic: none of it is yours to manage anymore. What you build against is the market itself.
Easy to install and configure.
Market and desk information on demand.
Realtime market and desk information.
Ultra-low-latency read and execution.
A complete solution for EPEX SPOT intraday trading.
For a complete picture of how every part works, see the full feature list → or read what the EPEX SPOT API is →
The protocol is our problem, not yours.
Bad infrastructure is your competitor's revenue stream.
EPEX SPOT intraday runs continuously, right up to delivery. EPEX SPOT reports that its M7 trading system handles more than 10 million orders a day. Voltnir's ultra-low latency order path applies an order-book delta in 12 μs and hands an order to M7 in 118 μs on a dedicated 8-core server, both means. On a shared 2 vCPU VM the same figures are 30 μs and 480 μs. For a battery running rolling intrinsic strategies, that tempo is revenue, and trading it on a stale book is measurable lost capture.
The market is automating around you: ~84% of EPEX SPOT intraday trades are executed via API rather than by hand, and since October 2025 each day splits into 9615-minute products across all coupled markets, since October 2025 quarter-hour contracts. Stale infrastructure doesn't cost you latency. It costs you fills.
- Every update vs once an hour
- +58% profit
- Every update vs once a minute
- +14% profit
- Once a minute · 10 MW · per year · 2021
- −~€43,000
- Peak month · 2025 · intraday + reserves
- €19,100 / MW
- Market volume · 2025
- 241 TWh▲ 12%
Sources: Schaurecker et al., Applied Energy, 2026 · enervis Battery Storage Index, May 2025 · EPEX SPOT annual results, 2025
How these figures are derived
The first three rows come from a peer-reviewed study of a 10 MW / 10 MWh battery on the German continuous intraday market, over one year of order-book data (2021, hourly contracts). Re-optimizing on every order-book update earned €349,000 in the year. Once an hour earned €221,000. Every update earned 14% more than once a minute, which puts once a minute at about €306,000: the €43,000 gap above. The peak month is the enervis index for a 1 MW / 2 MWh battery, across intraday, FCR and aFRR. Your figure depends on your assets, strategy and markets.
A 200 ms delay missed about 7% of orders. The study behind the figures above added a 200 ms technical delay to its fastest strategy. About 7% of its orders missed, and profit fell by roughly 6 to 7%. On a dedicated server, Voltnir's share of the path to EPEX SPOT is 118 μs on average. Your network, your algorithm and the exchange add the rest.
Predictable speed matters as much as raw speed. An algorithm is tuned for the delay it expects. When the delay jumps, the late orders are the ones that miss. That is why the table below shows the slowest 1 in 100 orders (p99) as well as the average. On a dedicated server, 99 of 100 orders clear admission within 98.1 μs.
| 8-corededicated server | 2 vCPUshared VM | |
|---|---|---|
| Order in to M7 wire, mean | 118 μs | 480 μs |
| Admission | ||
| p50 | 59.2 μs | 212.8 μs |
| mean | 62 μs | 223 μs |
| p99 | 98.1 μs | 708.3 μs |
| Queue wait | ||
| p50 | 49.7 μs | 227.2 μs |
| mean | 56 μs | 257 μs |
| p99 | 131 μs | 1.4 ms |
About 12 hours on the EPEX SPOT simulation environment, about 4,000 orders on each host. Dedicated 8-core server. Shared 2 vCPU VM.
What the stages cover
Admission is Voltnir's own work on an order. It validates the order and checks that the contract is open. It waits for the position lock, so two orders never spend the same headroom. It runs the position, cash and self-trade checks and records the order. Queue wait starts when the order is handed to the publisher. It covers any wait for the publisher, building the M7 message and writing it to the open AMQP connection to M7. Order in to M7 wire adds the two means. Percentiles do not add, so there is no total p50 or p99. Network transit and exchange processing are outside the measurement, and the order-book delta is a separate path. A vCPU on a shared VM competes for CPU cycles with other processes and other virtual machines on the same physical server. That contention can stretch the tail: the VM's queue-wait p99 is 1.4 ms. Your install reports the same stages over OpenMetrics. Details on the features page
For why the speed of your infrastructure belongs in the strategy, read your infrastructure is part of your strategy →
The only latency between your algo and EPEX SPOT is the wire.
Voltnir runs in your environment.
Not ours.
Voltnir is a single, statically linked Linux binary. Deploy it on any Linux server. No installer, no third-party software running alongside it.
Everything is configurable through a single file. REST, WebSocket, and gRPC can be enabled independently. Choose your database: SQLite out of the box, or Postgres. TLS on a reverse proxy of your choice.
The only outbound connection is to EPEX SPOT M7, over TLS, authenticated with your own client certificate. Nothing else. No telemetry. No phone-home. No licence server.
For the reasoning behind this design, read why Voltnir runs on your infrastructure →
You own the data. You own the off-switch.
What happens when the connection drops.
Voltnir holds one EPEX SPOT M7 session and gates trading on its health: a new order is refused the moment the order book is stale, torn, or disconnected, so new orders are not sent against a book Voltnir knows is bad. A cancel is always allowed, so you can always reduce exposure.
Both exchange links reconnect on their own, using exponential backoff, pong-age liveness, and automatic failover to EPEX SPOT's alternate host. They rebuild live state from the exchange on reconnect, so state is rebuilt from the exchange and the database after a restart. A sequence gap is treated as corruption: drop, resync, and refuse new orders until the book is whole again.
Redundancy beyond the single session is a deployment choice you control, the way you already run the rest of your estate. Voltnir is deliberately one binary, not a black-box cluster you have to trust.
- exchange active
- AMQP publisher + consumers
- order-book connected
- order-book synchronised
- order-book sequence-healthy
- exchange active
- AMQP publisher + consumers
- order-book connected
- order-book synchronised
- order-book sequence-healthy
For the full health and resilience model, see the resilience section →
Degrade loudly.
One membership fee,
multiple revenue streams.
One EPEX SPOT membership costs the same whether you trade for one entity or ten. Voltnir lets you trade for ten.
Each virtual member is a fully isolated trading entity: its own position limit, its own fixed share of the cash limit in EUR or GBP, enforced before a single order leaves the gateway. One member cannot consume another's margin. One client's bad day stays their bad day.
Every user operates under exactly the permissions you grant them, scoped to exactly the members you assign them to. A junior trader on the NL desk cannot touch the DE book. A read-only auditor sees everything and changes nothing.
If a regulator asks what happened, you have an answer. Every order, every trade, every permission change: attributed to the member, the user, and the moment it happened.
- NL-BATTERY±25.0 MW · €150,000
- DE-RENEWABLES±18.0 MW · €100,000
- INTERNAL-DESK±12.0 MW · €60,000
Virtual members and per-user permissions are part of the Desk tier only. See pricing →
Their orders. Your margin.
An audit trail that matches your remit.
If a regulator asks what happened, you have the answer on your own infrastructure, never ours. Voltnir keeps an append-only record of every order, trade, and operator action, each attributed to the user, the member, and the millisecond behind it.
Every order and trade is attributed to the EPEX SPOT trader code, the Voltnir user, and the virtual member behind it, with millisecond timestamps and the original raw M7 message preserved alongside. A refused order leaves as clear a trail as a filled one, whether the exchange or the pre-trade gate refused it: the reason or error code, raw payload, and the user who triggered it, all on the same record.
Operator actions sit on the same log. Every permission change, limit adjustment, kill-switch toggle, and user creation carries the actor, their source IP, the outcome, and a before-and-after snapshot of what changed. The platform's own lifecycle events log under a system actor. Nothing is exempt.
Query any of it by time, action, user, or outcome (over REST, WebSocket, or gRPC), with JSON or CSV export over REST, from the API, or for orders and trades directly from the terminal. Who can read the audit log, who can export it, and who can read exchange errors are each a permission of their own.
Optionally, archive the full public trade tape and raw order-book (every M7 snapshot and delta) to PostgreSQL or Parquet, for backtesting and market reconstruction.
Voltnir gives you a complete, attributable audit trail to feed your obligations, but it is not a reporting tool: it does not file your REMIT or MiFID transaction reports for you. That boundary is deliberate. You keep the record and the control; we don't sit in the middle of your compliance.
Nothing happens off the record.
The architecture is the credential.
Most vendor software is a liability the moment it touches your network: it phones home, it needs inbound ports, it ships telemetry you can't see. Voltnir is built to be the opposite. It makes exactly one connection, outbound to EPEX SPOT M7 over mutual TLS, and nothing else. No telemetry, no phone-home, no licence server to call. It can run on a host with no route to the internet but that single exchange dial, air-gapped from everything else you run.
Reaching the exchange takes three independent factors, none replayable on its own: a mutual-TLS client certificate, your M7 credential, and a fresh time-based code generated at every connect. The licence that authorises the binary is verified offline. There is no licence server, online check, or external dependency in the trust path.
Voltnir is a certified Independent Software Vendor (ISV) of EPEX SPOT for the M7 intraday continuous market: the software has passed the exchange's conformance tests and is listed on epexspot.com.
For what the certification means for getting a desk online, read what an EPEX SPOT ISV is →
Nothing reaches in. One thing reaches out.
Three protocols. One contract.
Trading, market data and account operations are available over REST, WebSocket, and gRPC. Pick the transport that fits the job: REST for simplicity, WebSocket for browsers and dashboards, gRPC for low-latency algorithmic power trading systems. The operation is identical on all three. Report exports and terminal sign-in sessions are REST only. Your code never touches the EPEX SPOT API itself. Voltnir is the M7 API middleware in between.
- HTTP + JSON, request and response
- Every request/response operation, minus the live streams
- No codegen, no SDK; any HTTP client works
- Single persistent connection
- ~100 ms coalesced tick
- zstd compression
- Browsers and latency-tolerant clients
- Typed Protobuf over HTTP/2
- Every delta, fill, and state change pushed immediately
- Server-streaming: no polling, no webhooks
- Python SDK today, .proto file for everything else
One contract, three ways. Every trading, market data and account operation exists on all three transports with the same fields, the same integer units, the same permissions, and the same error codes. Report exports and terminal sign-in sessions are REST only. One shared implementation, not three, and parity is verified on every release.
Streaming is native to each. REST is request and response. gRPC watch streams push each order-book delta, fill, and state change as it happens; the WebSocket feed coalesces the same events onto a ~100 ms tick (PnL and status once a second), zstd-compressed so a burst collapses to one frame. No polling, no webhooks.
No floats. No surprises. Prices and quantities move as fixed-point integers, never floats. API keys are hashed at rest and shown once. Lose one and you rotate, you do not recover.
POST /api/v1/order Authorization: Bearer ${TOKEN} { "side": "BUY", "price": 5000, "quantity": 1000, "delivery_area_id": "10YNL----------L", "contract_id": 12345678, "v_member_short_id": "NL-BATTERY" } // → 201 Created
// after the {action:"auth", token} frame { "action": "new_order", "req_id": "r1", "side": "BUY", "price": 5000, "quantity": 1000, "delivery_area_id": "10YNL----------L", "contract_id": 12345678, "v_member_short_id": "NL-BATTERY" } // ← {"op":"new_order","ok":true}
from voltnir_sdk import VoltnirClient, Side client = VoltnirClient( host="voltnir.local", api_key=os.environ["VOLTNIR_TOKEN"], ) client.submit_order( side=Side.BUY, price=5000, quantity=1000, delivery_area_id="10YNL----------L", contract_id=12345678, v_member_short_id="NL-BATTERY", )
Pick your transport. The contract doesn’t change.
A terminal you can trade on today.
Voltnir ships with a full trading terminal, embedded in the same binary, nothing extra to install. Open a browser tab, log in, and you're looking at live depth-of-book, the contract ladder, real-time P&L, and the audit log. On any host. In minutes.
Before an order leaves the ticket you already know its projected position, the cash it consumes, and how far it walks the book. Your own resting orders sit in the ladder with their queue position. Limits and the kill-switch stay visible the whole session.
Every user logs in with their own credentials, trades under their own account, and leaves their own audit trail.Multiple user logins are a Desk-tier feature. A Trader licence runs the same terminal with one operator login.
The terminal runs on the same WebSocket API your code would use, so anything it does, your stack can do too.
| DELIVERY ↑ | QTY ↕ | BID ↕ | MID · SPREAD | ASK ↕ | QTY ↕ | TREND ↕ | LAST ↕ | QTY ↕ | REF ↕ |
|---|---|---|---|---|---|---|---|---|---|
| Q00:45-01:00_XBLIVE | - | - | — | - | - | ▲+2,40 | 41,20 | 1,5 | 30,81O |
| Q01:00-01:15_XB11M | 4,9 | 40,50 | 42,35Δ3,70 | 44,20 | 1,7 | ▲+1,15 | 42,99 | 0,1 | 35,67O |
| Q01:15-01:30_XB26M | 2,3 | 27,20 | 28,50Δ2,60 | 29,80 | 2,7 | ▼−0,85 | 28,50 | 0,3 | 31,74O |
| Q01:30-01:45_XB41M | 1,2 | 23,10 | 24,25Δ2,30 | 25,40 | 1,7 | ▼−1,30 | 24,30 | 0,5 | 31,57O |
| Q01:45-02:00_XB56M | 4,1 | 39,60 | 41,25Δ3,30 | 42,90 | 3,4 | ▲+3,05 | 41,40 | 0,1 | 30,59O |
| Q02:00-02:15_XB1H11M | 1,1 | 34,10 | 35,00Δ1,80 | 35,90 | 1,4 | ▲+0,95 | 35,03 | 0,1 | 29,69O |
| Q02:15-02:30_XB1H26M | 0,8 | 31,00 | 32,20Δ2,40 | 33,40 | 4,8 | ▼−0,40 | 32,28 | 0,1 | 28,93O |
| Q02:30-02:45_XB1H41M | 2,3 | 33,20 | 34,65Δ2,90 | 36,10 | 1,2 | ▲+0,60 | 35,00 | 0,1 | 28,48O |
| Q02:45-03:00_XB1H56M | 4,2 | 21,40 | 22,65Δ2,50 | 23,90 | 0,5 | ▼−0,75 | 22,50 | 0,3 | 27,96O |
| Q03:00-03:15_XB2H11M | 2,4 | 20,20 | 21,50Δ2,60 | 22,80 | 4,0 | ▼−0,35 | 21,60 | 0,1 | 28,65O |
| Q03:15-03:30_XB2H26M | 2,0 | 22,70 | 24,00Δ2,60 | 25,30 | 1,3 | ▲+0,20 | 24,10 | 0,4 | 30,14O |
| Q03:30-03:45_XB2H41M | 0,7 | 32,90 | 34,35Δ2,90 | 35,80 | 0,7 | ▼−1,10 | 34,60 | 1,4 | 30,75O |
Your desk, in a browser tab.
Per EPEX SPOT membership. Flat.
One price per EPEX SPOT membership. Flat and predictable, the same whether you run one virtual member or fifty.
Everything, for one trader.
- The Voltnir trading terminal: depth-of-book, order entry with pre-trade risk checks, real-time P&L, charts with VWAP, the XBID opportunity map, and the public trade tape.
- Runs on-premise as a single binary. No telemetry, nothing phones home. You own the data, and the off-switch.
- One user, trading your EPEX SPOT membership directly.
- Trading, market data and account operations on three transports at parity (REST, WebSocket, and gRPC), report exports and terminal sign-in sessions over REST, and a first-party Python SDK.
- Capture the live trade tape and raw order book to your own database for history and analysis.
- Append-only audit trail, every order and trade attributed to the user behind it, queryable and exportable.
The whole platform. One user.
If you're running a book.
- Unlimited users, each with their own login and granular per-action permissions
- Unlimited virtual members: subsidiaries, asset-operator clients, or white-label desks on one node
- Per-member position and cash limits, built to ECC Risk Management Services: separate EUR/GBP pools, an isolated pre-trade limit for every virtual member.
- Real-time P&L and exposure, isolated per virtual member, so each client or asset stands on its own book.
- Per-user member assignment
- Per-user audit trail and export permissions
- Trading terminal with user login
The whole platform. Your whole desk.
You shouldn't need a discovery call to know what software costs.
Talk to us about your desk.
Voltnir is a considered purchase for a trading desk, not a checkout. Tell us what you trade and who you trade it for, and we'll walk you through the software and get you licensed, usually within a working day. Or try it first: run it free on SIM below, no sales call.
Because Voltnir is a certified ISV application, EPEX SPOT does not ask your desk to pass the M7 conformance test: Voltnir already has. In the exchange's own application process you go from interest straight to simulation access and then production access, with no API implementation, testing or conformance test of your own, on software the exchange has already tested.
Create a free account in the customer portal, download a simulator licence, and have Voltnir trading against EPEX SPOT SIM in minutes. You'll need an EPEX SPOT ASIM account for the SIM credentials; if you don't have one yet, tell us and we'll help you get set up.