{"uid":"cap_rbKsO2kKCcj3NCJJZfvrN","slug":"bess-arbitrage-calculator-cfc373f8","name":"BESS Arbitrage Calculator","description":"Battery storage (BESS) day-ahead arbitrage revenue for a European bidding zone: perfect-foresight LP per day on historical prices, annualised revenue per MW, cycles, payback. Use when sizing or screening a battery project, comparing zones, or answering how much a battery would have earned in a given year.","url":"https://bess-x402.onrender.com/v1/bess/arbitrage?utm_source=zero.xyz","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"type":"object","required":["zone","start","end"],"properties":{"end":{"type":"string","format":"date","description":"Last day, YYYY-MM-DD, at most 366 days after start"},"zone":{"enum":["AT","BE","CH","CZ","DE-LU","DK1","DK2","FR","HU","IT-North","NL","NO2","PL","SE4","SI"],"type":"string","description":"European bidding zone"},"daily":{"type":"boolean","description":"Include the per-day breakdown, default false"},"start":{"type":"string","format":"date","description":"First day, YYYY-MM-DD"},"power_mw":{"type":"number","description":"Battery power rating in MW"},"energy_mwh":{"type":"number","description":"Battery energy capacity in MWh"},"capex_per_kwh":{"type":"number","description":"Optional capex per kWh for a simple payback estimate"},"max_cycles_per_day":{"type":"number","description":"Default 1"},"round_trip_efficiency":{"type":"number","description":"0-1, default 0.88"},"degradation_cost_per_mwh":{"type":"number","description":"Cost per MWh discharged, default 0"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.5","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.5/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.5","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.5","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_inAsiuUGjrudBNl9P21nO","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.5","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Computes day-ahead energy arbitrage revenue for a battery storage (BESS) asset in a European bidding zone using a perfect-foresight LP on historical prices, returning annualised revenue per MW, cycle counts, and optional payback period.","exampleAgentPrompt":"How much would a 10 MW, 20 MWh battery have earned doing day-ahead arbitrage in Germany (DE-LU) from 2023-01-01 to 2023-12-31, assuming 88% round-trip efficiency and a capex of $250 per kWh — and what's the estimated payback period?","exampleUseCases":[{"title":"Screening battery markets across Europe","prompt":"I'm evaluating BESS projects in France, the Netherlands, and Belgium for 2023 — can you calculate the annualised day-ahead arbitrage revenue per MW for a 1 MW / 2 MWh battery in each zone so I can see which market is most attractive?"},{"title":"Sizing a battery for a specific project","prompt":"We're sizing a 20 MW, 40 MWh battery project in Austria. Can you run the day-ahead arbitrage model for the AT zone over 2022 with a round-trip efficiency of 0.90 and tell me the total revenue, cycle count, and daily breakdown?"},{"title":"Estimating investor payback period","prompt":"An investor is asking about payback on a 5 MW, 10 MWh BESS in the IT-North zone. Can you run the arbitrage calculation for 2022-01-01 to 2022-12-31 with a capex of $300 per kWh and tell me the expected payback period?"}],"resultDescription":"Returns annualised revenue per MW, total arbitrage revenue over the requested period, number of charge/discharge cycles, and (if capex is supplied) a simple payback estimate. When the daily flag is set, a per-day breakdown of revenue and cycles is also included.","failureModes":["Zone not in supported enum (AT, BE, CH, CZ, DE-LU, DK1, DK2, FR, HU, IT-North, NL, NO2, PL, SE4, SI) — 400 validation error","Date range exceeds 366 days — 400 error","Start date is after end date — 400 validation error","Historical price data unavailable for the requested period — may return partial results or 404","round_trip_efficiency outside 0–1 range — 400 validation error","Payment not provided or rejected — 402 Payment Required","Service cold-start latency on first request (hosted on Render free tier)"],"whenToPreferThis":"Use this endpoint when you need to quickly screen or size a battery storage project against real historical European day-ahead prices without building your own LP optimiser. It is ideal for comparing bidding zones, estimating revenue in a specific year, or generating payback estimates for investor materials. Prefer it over generic financial modelling tools when the specific input is European wholesale electricity prices and the output must reflect BESS cycling constraints.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-29T13:08:14.658Z","isFirstParty":false,"canonicalSlug":"bess-arbitrage-calculator-cfc373f8"}