Scroll
// For desks trading EPEX SPOT intraday

The protocol
is our problem.
Start trading.

The missing layer between your stack and EPEX SPOT.
One membership, many isolated desks. Trade your own book, run subsidiaries, or white-label desks for clients.

EPEX SPOT Intraday M7 v6 + v7 on-prem Rust
01 · WHAT IT DOES

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, orderbook 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. You connect over REST, WebSocket or gRPC; behind the API sits a live, consistent orderbook, 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.

It is built in Rust from the connection layer up, low-latency and fault-tolerant before any feature sits on top, not a wrapper around someone else's Java client. That is what lets a solo trader ship an algo this afternoon, and an enterprise desk rely on it for years.

Your Trading Terminal
WS
Your Algo Trader
gRPC
Your Risk Service
REST
EPEX SPOT Intraday
WSTerminal
gRPCAlgo
RESTRisk
Voltnir
EPEX SPOT

For a complete picture of how every part works, see the features page →

The protocol is our problem, not yours.

02 · SPEED

Bad infrastructure is your competitor's revenue stream.

EPEX SPOT intraday runs continuously, right up to delivery. The Netherlands alone produces nearly 10 millionMeasured over 3 days orderbook updates a day, Voltnir processes those deltas in ~15μ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%Share of EPEX SPOT intraday trades executed via API rather than the manual front end (EPEX SPOT, 2023) 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.

Battery economics · EPEX SPOT intraday
Wrong-tempo penalty
−~14% / MW
Slow infra · 10 MW · per year
−~€207,000
Peak month · 2025
~€19,100 / MW
Market volume · 2025
241 TWh▲ 12%

Sources: enervis Battery Storage Index, Germany 2025 · EPEX SPOT · peer-reviewed research, 2025

How this figure is derived

Illustrative: ~14% capture uplift on a 10 MW battery against the 2025 German intraday spread, per the enervis Battery Storage Index and peer-reviewed 2025 capture studies. Your figure depends on your assets, strategy, and markets.

The only latency between your algo and EPEX SPOT is the wire.

03 · DEPLOYMENT

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 license server.

Voltnir is on-premise by default. If you need a hosted option, we can arrange it. Talk to us →

You own the data. You own the off-switch.

04 · RESILIENCE

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 you never trade against a book you can't trust. 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 a restart loses nothing committed. A sequence gap is treated as corruption: drop, resync, never serve a torn book.

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
session live
all greennew order / modify
any one red503
cancel always allowed
  • exchange active
  • AMQP publisher + consumers
  • order-book connected
  • order-book synchronised
  • order-book sequence-healthy
session live
all greennew order / modify
any one red503
cancelalways allowed
A cancel is never gated, so you can always reduce exposure while the feed is degraded.

For the full health and resilience model, see the features page →

Degrade loudly. Never silently.

05 · MULTI-TENANT

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 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.

Virtual members · 3
↔ many-to-many ↔
Users · 4
NL-BATTERY10YNL----------L
position limit:± 25.0 MW
cash limit:€ 150,000
DE-RENEWABLES10Y1001A1001A82H
position limit:± 18.0 MW
cash limit:€ 100,000
INTERNAL-DESK10YFR-RTE------C
position limit:± 12.0 MW
cash limit:€ 60,000
s.weber1 member
submitmodifycanceltrade-global
j.koenig2 members
submitmodifycancelread-audit
l.martin2 members
submitmodifycancel
m.bauer3 members
read-auditexport
  • NL-BATTERY±25.0 MW · €150,000
  • DE-RENEWABLES±18.0 MW · €100,000
  • INTERNAL-DESK±12.0 MW · €60,000
assignments
NL
DE
INT
s.weber submitmodifycanceltrade-global
j.koenig submitmodifycancelread-audit
l.martin submitmodifycancel
m.bauer read-auditexport

Virtual members and per-user permissions are part of the Desk tier only. See pricing →

Their orders. Your margin.

06 · AUDIT

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 a durable, 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 failed order leaves as clear a trail as a filled one: exchange 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 from the API or 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 orderbook (every M7 snapshot and delta) to PostgreSQL or Parquet, for backtesting and market reconstruction.

Nothing happens off the record.

07 · SECURITY

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, against a key compiled in. There is no licence server, online check, or external dependency in the trust path.

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.

your infrastructure
Voltnir
EPEX SPOT M7
your infrastructure no inbound · no telemetry
Voltnir
EPEX SPOT M7
One outbound connection to EPEX SPOT. No inbound listeners toward the exchange, no telemetry, no phone-home.

Nothing reaches in. One thing reaches out.

08 · API

Three protocols. One contract.

Voltnir's full surface is 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 algo systems. The operation is identical on all three.

REST
/api/v1
  • HTTP + JSON, request and response
  • The full unary surface, minus the live streams
  • No codegen, no SDK; any HTTP client works
WebSocket
/ws/v1
  • Single persistent connection
  • ~100 ms coalesced tick
  • zstd compression
  • Browsers and latency-tolerant clients
gRPC
voltnir.api.v1
  • 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 unary operation exists on all three transports with the same fields, the same integer units, the same permissions, and the same error codes. 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.

REST  ·  curl
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
WebSocket  ·  /ws/v1
// 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}
gRPC  ·  Python SDK
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.

09 · DESK

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.Available on the Desk tier only.

The terminal runs on the same WebSocket API your code would use, so anything it does, your stack can do too.

voltnir.local
SHORTL1: 1000  L2: 6000  OMT: 0 LONGL1: 20000  L2: 34000  OMT: 12515 POS25.000 MW EUR LIMIT€14,563.12 P&L+€4,820 uP&L+€312
Operational Live
10YNL----------L ▾ XBID_HOUR_POWER ▾
BlotterTapeEvents PnLAuditXBID
PH-2026-05-11-15 1h 10m
·13.5 MW82.90
·14.0 MW82.70
·25.0 MW82.55
·14.0 MW82.50
82.4082.50
0.10
EUR / MWh
·16.0 MW82.40
·13.5 MW82.30
·15.0 MW82.10
·12.0 MW81.90
Last 82.45 2.0 MW 18-06 14:00
Bid ↓Qty
82.406.0
82.303.5
82.105.0
81.902.0
81.754.0
81.601.5
81.406.0
Ask ↑Qty
82.504.0
82.555.0
82.704.0
82.903.5
83.102.0
83.304.5
83.504.0
Position+12.0 MW
DEPTHCHARTNEW ORDER
DeliveryQtyBid Mid · SpreadAskQty TrendLastQty
PH-1413:00 3.080.10 80.20Δ0.20 80.302.5 +0.00%80.151.0
PH-1514:00 6.082.40 82.45Δ0.10 82.504.0 +0.00%82.452.0
PH-1615:00 4.079.80 79.95Δ0.30 80.103.0 -0.00%79.852.0
PH-1716:00 2.077.20 77.40Δ0.40 77.605.0 -0.00%77.301.5
PH-1817:00 5.081.00 81.15Δ0.30 81.304.0 +0.00%81.103.0
Orders & Trades Positions ▾ Contract PH-2026-05-11-15
Orders BUY +10.0 SELL -3.0 NET +7.0
ProductStart (UTC)SidePriceQuantityStatusType
PH-1514:00BUY81.406.0ACTIVEO
PH-1514:00SELL83.504.0ACTIVEO
PH-1413:00BUY80.104.0HIBERNATEDO
NET -1.5 SELL -5.0 BUY +3.5 Trades
ProductStart (UTC)SidePriceQuantityActionType
PH-1514:00BUY82.302.0FILLO
PH-1312:00SELL79.505.0FILLO
PH-1514:00BUY82.351.5FILLO
voltnir.local
POS+25.0 MW P&L+€4,820 EUR LIMIT€14,563.12
PH-2026-05-11-15 1h 10m
·13.5 MW82.90
·14.0 MW82.70
·25.0 MW82.55
·14.0 MW82.50
82.4082.50
0.10
EUR / MWh
·16.0 MW82.40
·13.5 MW82.30
·15.0 MW82.10
·12.0 MW81.90
Last 82.45 2.0 MW 18-06 14:00

Your desk, in a browser tab.

Voltnir opens to the market soon. Final pricing lands at launch. Want early terms? Talk to us.

10 · PRICING

Per EPEX SPOT user. Flat.

One price per EPEX SPOT user you connect to the platform. Flat and predictable, the same whether you run one virtual member or fifty.

// TRADER

Everything, for one trader.

TBA
per EPEX SPOT user
Included
  • 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.
  • The full API on three transports at parity: REST, WebSocket, and gRPC, plus a first-party Python SDK.
  • Every EPEX SPOT M7 order type, with fill-or-kill, immediate-or-cancel, and timed validity.
  • Self-trade prevention and an operator kill-switch that flattens the book on the exchange.
  • 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.

// DESK

If you're running a book.

TBA
per EPEX SPOT user
Everything in Trader, plus
  • 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.

Volume discount

Every licence after your first costs less.

2nd licence TBA 3rd licence TBA 4th and beyond TBA
Not included EPEX SPOT membership fees · custom feature development, quoted separately

You shouldn't need a discovery call to know what software costs.

11 · GET ACCESS

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.

Run it yourself, free on SIM

Create a free account in the customer portal, download a simulator license, 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.

Running live on a trading desk at FTM Commodity Services