Battery Arbitrage Calculator
Work out whether charging a home battery off-peak and discharging on-peak actually earns anything — priced against the battery's own wear, which is the test most arbitrage calculators skip.
Results
The spread covers both the round-trip loss and the battery's wear, so arbitrage earns money here.
Simple payback: 10.4 years
Years the cycle rating allows at this rate: 13.2 years
Daily bill saving: $3.15
Annual bill saving: $1,149.75
Cost to store one usable kWh: $0.1667
Gross margin per kWh discharged: $0.2333
Battery wear per kWh discharged: $0.1852
Net margin per kWh discharged: $0.0481
Energy the battery will move over its rated life: 64,800 kWh
Net over the full cycle rating, after the battery: $3,120.00
The off-peak price is divided by efficiency, not multiplied: to deliver one kilowatt-hour you had to buy rather more than one. Charging the loss to the purchase is what makes this figure honest.
The payback-versus-life comparison and the net margin are the same test seen twice — the cycling rate cancels out of the ratio. Both are shown because one answers "how long?" and the other answers "is the spread even big enough?".
How it works
Revenue is the on-peak price of the energy you discharge. Cost is the off-peak price of the energy you had to buy to store it, which is more than you discharge. The difference is then set against what each kilowatt-hour of throughput costs in battery wear — the step that decides whether the whole exercise is worth doing.
charge_cost = offpeak_rate / rte
gross_margin = peak_rate − charge_cost
daily_profit = usable_kwh × cycles_per_day × gross_margin
payback_years = battery_cost / (daily_profit × 365)
battery_life = cycle_life / (cycles_per_day × 365)
throughput_cost = battery_cost / (usable_kwh × cycle_life)
net_margin = gross_margin − throughput_cost
usable_kwh- Energy discharged per cycle, kWh.
battery_cost- Installed cost the arbitrage has to earn back.
peak_rate- On-peak retail price avoided, $/kWh.
offpeak_rate- Off-peak retail price paid to charge, $/kWh.
rte- Round-trip efficiency, AC in to AC out.
cycles_per_day- Full equivalent cycles per day.
cycle_life- Cycles before end of life, at the full depth of usable_kwh. Convert a datasheet rating quoted at 80% depth of discharge by multiplying it by 0.8.
charge_cost- offpeak ÷ rte — off-peak cost of one delivered kWh.
gross_margin- peak − charge_cost — earnings per kWh discharged.
throughput_cost- battery_cost ÷ (usable_kwh × cycle_life) — wear per kWh discharged.
net_margin- gross_margin − throughput_cost. Negative means arbitrage loses money.
Assumptions
- The round-trip loss is charged to the energy you buy, not taken off the price spread. Writing it as `capacity × efficiency × (peak − offpeak)` discounts the charging cost by the same factor as the revenue, which prices the loss at nothing. The correct statement is that a delivered kilowatt-hour cost `offpeak ÷ efficiency` to store.
- The 0.90 default is Tesla's Powerwall 2 datasheet figure, and its footnote is why it belongs here: "AC to battery to AC, at beginning of life", at 25 °C and 3.3 kW. Grid arbitrage is precisely that path — alternating current in from the meter, alternating current back out to the house.
- Powerwall 3 publishes 89%, but for "Solar to Battery to Home/Grid" — a DC-coupled solar path that skips a conversion stage a grid-charged cycle has to pay for. Do not read it as a grid-charging figure. If your battery only publishes a DC or solar-path efficiency, the AC round trip will be lower.
- The 4,800 default is EG4's LiFePower4 LFP spec sheet — over 6,000 cycles at 0.5C — restated at full depth, and the restatement matters. That rating is measured at 80% depth of discharge, so each rated cycle moves 80% of the pack, which is how EG4 arrives at its own lifetime throughput figure. Lifetime throughput here is capacity × cycles, so a count measured at partial depth cannot be multiplied by a full-depth capacity: 6,000 × 0.8 = 4,800. Using 6,000 against the full usable capacity would claim a quarter more throughput than the cells are rated for, cut the wear per kilowatt-hour by a fifth, and can flip a losing case into a winning one. If your own datasheet quotes a depth of discharge, apply the same conversion before entering the number. Either way it is a test result, not a promise: the same product's warranty runs ten years, prorated at a tenth per year, and covers defects rather than capacity retention — at one cycle a day 4,800 cycles is 13.2 years, so the cycle rating still outlives the warranty by about three years.
- Capacity fade is not modelled. Cells are typically rated to 70–80% of original capacity at end of cycle life, so late cycles move less energy than early ones and the lifetime throughput above is the optimistic end. Deeper cycling also shortens cycle life, which a single rated figure cannot express.
- Today's on-peak and off-peak prices held flat for the battery's whole life. Tariffs get restructured — a wider spread improves the case, and a utility flattening its time-of-use rates can remove the business case outright while you still own the battery.
- This assumes you are allowed to charge from the grid off-peak and that doing so is worth full retail on discharge. Neither is universal: some net-metering and solar-incentive tariffs restrict or penalise grid charging, and exports are frequently paid well below retail. Check your tariff before counting on the figure.
- Demand charges, monthly fixed charges, tariff-switching fees, and any standby draw of the battery's own electronics are not included. Nor is degradation of the inverter, or maintenance.
- Time-of-use period structures vary widely — number of peak windows, seasonal changes, weekday-only peaks. The tool takes one peak and one off-peak price and a cycles-per-day figure; if your tariff has two daily peaks you can express that as two cycles a day, which correctly halves the battery's calendar life.
- Arbitrage is only one reason to own a battery. A negative verdict here does not mean the battery is a bad purchase — backup power during outages has real value that no price spread captures. It means the arbitrage alone will not pay for it.
FAQ
Is battery arbitrage actually worth it?
It depends on one comparison: the price spread against the battery's wear per kilowatt-hour. A $12,000 battery good for 4,800 full cycles at 13.5 kWh will move 64,800 kWh in its life, so each kilowatt-hour through it carries about 18.5¢ of wear. On a 40¢ peak and 15¢ off-peak tariff at 90% efficiency the gross margin is 23.3¢ — above the wear, netting roughly $3,120 over the battery's life and paying back in about 10.4 years against a 13.2-year cycle life. That is a thinner win than it first looks, and it turns on the cycle figure: take a 6,000-cycle datasheet number at face value instead of converting it to full-depth equivalents and the same battery appears to earn $6,900. Narrow the peak to 20¢ and the margin falls to 3.3¢, far under the wear, and the battery never pays for itself. That is the calculation to run before buying, and most online tools stop at the daily saving.
Why divide the off-peak rate by efficiency instead of multiplying the spread?
Because the loss happens when you buy the energy, not when you sell it. At 90% efficiency, delivering one kilowatt-hour on-peak means buying about 1.11 kWh off-peak, so a delivered kilowatt-hour costs the off-peak rate divided by 0.90 — 16.7¢ rather than 15¢. The common shortcut, multiplying the spread by efficiency, applies the same discount to the revenue and the cost, which means it never actually charges you for the loss.
Does cycling the battery twice a day double my savings?
It doubles the annual saving and halves how many years the cycle rating lasts, so the payback-versus-life verdict does not change at all. That is the point of looking at cost per kilowatt-hour of throughput: it is indifferent to how fast you use the cycles up. Cycling harder gets you to the same destination sooner, in both directions.
How do I find my on-peak and off-peak rates?
From your utility's time-of-use rate schedule, not from your bill's average cost per kilowatt-hour — an average blends the two and understates the spread. Look for the tariff sheet for your specific rate plan, note the summer and winter peak windows separately, and use the summer peak if you want the best case. If you are not on a time-of-use plan yet, the spread you would get is the one on the plan you would switch to.
Sources
- Tesla Powerwall 2 datasheet — Round Trip Efficiency 90%, footnoted "AC to battery to AC, at beginning of life" at 25 °C and 3.3 kW: the grid-charging path this tool models
- Tesla Powerwall 3 datasheet — 89% "Solar to Battery to Home/Grid", a DC-coupled solar path, shown here so the two figures are not confused
- EG4 LiFePower4 LFP spec sheet — >6,000 cycles at 0.5C and 80% depth of discharge, design life >15 years (restated as the 4,800 full-cycle default)
- EG4 LiFePower4 limited warranty — ten years prorated at one tenth per year, covering defects: why the cycle rating is not a warranty promise
- U.S. EIA — Today in Energy: time-of-use rate availability and structure among U.S. utilities
Related calculators
Some product links on this site are affiliate links; we may earn a commission at no extra cost to you. Read the Affiliate Disclosure.