Battery optimization
Tensor Cloud offers fully-automated, economically optimal dispatch of battery energy storage systems (BESS), and as an end-to-end solution, covers everything from AI-driven market price and solar generation forecasts to physical control of BESS.
We optimize batteries across day-ahead and balancing markets — with intraday market support planned for 2026 — while taking into consideration a large number of economic and technical constraints including FIP premium, cycle cost settings and curtailment signals. That means, each kWh of energy available to the BESS is used where its financial impact for the system owner is the highest.
Supported battery configurations
We support stand-alone and co-located battery systems, including on-site loads and solar PV. Tensor Cloud's automatic dispatch optimizes co-located BESS in both AC-link and DC-link configurations.
On the Japanese balancing markets, Tensor Cloud optimizes stand-alone batteries and aggregated virtual powerplant (VPP) type of resources that can contain thousands of individual batteries.
Supported markets
For each of the 48 daily 30-minute slots, a battery's capacity can be sold as energy on the wholesale markets or offered on the balancing markets. Our multi-market battery optimization currently supports:
- JEPX day-ahead
- EPRX Primary Frequency Control (offline)
We plan to release JEPX intraday as a third market within 2026.
Operational flow
Daily battery and aggregation operations are almost entirely automated. They split into 3 distinct phases: before wholesale auction, before balancing auction, and intraday.
Phase 1: Before wholesale auction
For a given time slot at time n, this stage starts at the beginning of the optimization window, which is n-7 days, and ends at 10:00 of n-1 day.
During this time window, Tensor Cloud updates charge and discharge plans for all connected battery systems at least every 30 minutes. Changes to wholesale and balancing market price forecasts, new FIP premium estimates, updated solar generation forecasts, battery telemetry data, and site outage data (e.g., upcoming planned maintenance, unplanned outages) are taken into consideration by the Tensor Cloud battery optimization engine.
After each plan update, Tensor Cloud also sends 48-hour wholesale dispatch schedules to the EMS. These dispatch plans are saved locally on the EMS, which then controls the battery accordingly. Tensor Cloud uses a layered resilience approach where three times a week (Monday, Wednesday, and Friday), a 1-year schedule is sent, so there is always at least one dispatch plan available on the EMS, even without knowing wholesale and balancing market trading results.
By default, our battery optimization considers all assets in the same balancing group when creating dispatch plans. That means batteries will also optimize the economic outcomes for other assets that only contain solar systems or electrical loads, as long as they share the same BG.
Although the day-ahead balancing market offer window only starts at 11:30 on n-1 day, BESS dispatch plans already take expected balancing market awards into consideration when generating wholesale bids.
At 9:00 on n-1 day, Tensor Cloud places bids and asks for all 48 next-day slots on the JEPX day-ahead market based on the latest available BESS dispatch plan and generation plans for non-battery assets in the same grid area. The 10:00 day-ahead auction deadline concludes phase 1.
Phase 2: Before balancing auction
With the conclusion of the day-ahead wholesale auction and the publication of both next-day wholesale prices and auction results at around n-1 day 10:15, Tensor Cloud enters phase 2. The first run of the Tensor Cloud battery optimization engine after JEPX auction results have been published, will rebalance available battery capacity for FCR offers based on wholesale sales volume for each time slot. If less energy than expected was sold, more capacity is available for FCR offers.
At n-1 day 11:30, the FCR balancing market offer window opens. One minute after open, Tensor Cloud will automatically make offers for all EPRX resources based on resource constraints (e.g., resource capacity across each balancing market product) and available capacity as determined in the dispatch plan. During the offer window, which ends at n-1 day 14:00, any run of the battery optimization engine will trigger a cancellation of any existing offer and immediate placement of a new offer, up until 13:58. After 13:58, no further offer changes are made.
Updates to dispatch plans are made with the same logic as during phase 1, except that any deviation from the wholesale day-ahead trading results will now result in imbalance which carries an economic cost that the battery optimization engine takes into consideration. Imbalance behavior can be controlled by adjusting imbalance value in the workspace settings.
Phase 2 concludes with the closing of the EPRX offer window at n-1 day 14:00.
Phase 3: Intraday
EPRX publishes FCR auction results between 14:00 and 15:00 each day. As soon as FCR award information becomes available, Tensor Cloud creates dispatch schedules for all physical batteries associated with a given resource, and sends them to each EMS.
As the OCCTO system re-opens from n-1 day 17:00, Tensor Cloud automatically updates plans for all affected balancing groups at 17:02 via OCCTO, reflecting FCR awards: generation and sales plans for generation BGs, and procurement plans for demand BGs. Depending on the resource type, Tensor Cloud also automatically creates any other plans (e.g., 発電計画電力計画, 基準値計画) and submits them via the EPRX API at 17:02.
During the intraday phase, dispatch plans continue to be updated by the Tensor Cloud battery optimization engine. FCR awards are treated as hard constraints with only baselines and charge/discharge outside of FCR award slots changing dynamically, based on imbalance value and cycle cost settings.
FCR award cancellations
For all slots more than 1-hour in the future, Tensor Cloud continuously monitors available battery SoC, battery alert states and incoming telemetry data to evaluate the risk of a given resource becoming unable to fulfill FCR contract obligations. If obligations likely cannot be met, Tensor Cloud automatically cancels awards according to standard TSO protocols (代替不可申請/様式23):
- Send a resource switch request to the EPRX API for the time slots in question
- Send a notification email to the TSO (様式23 email)
- Place an automated phone call to the operational hotline of the TSO, informing them of the switch
- Update OCCTO generation plans
- Update any baseline plans or other plan types as required by the type of resource
For co-located BESS, Tensor Cloud cancels awards in batches across these time windows:
- from 90 minutes before the last solar-producing slot until midnight
- from midnight until 90 minutes after the first solar-producing slot
Cancellation windows that stretch beyond one day always lead to two separate cancellation batches. That means, the TSO will get notified once for the current day until midnight, once more for the next day from midnight to the morning, then a third time for the next day evening.
For standalone batteries, SoC-related award cancellations are done slot-by-slot in a rolling window. For all other reasons, cancellations are done in one batch that contains all remaining awards outside of the 1-hour gate close window.
Integration with site devices
Tensor Cloud relies on hardware devices (EMS) installed on-site to collect telemetry data from batteries and other site components, like solar systems and electrical loads, and send control signals to the battery storage system. While we have established working relationships with a variety of reliable integration partners, Tensor Cloud is vendor agnostic and can work with any EMS that can provide the necessary data and receive control signals. Contact us to discuss your custom integration needs.
Optimization inputs
The optimization considers all operational assets within each grid area in a workspace. It is based on a mixed-integer linear optimization model that has specific inputs:
- Current state of each battery (e.g., state of charge, error/maintenance state)
- Electricity price forecasts for the grid area
- Solar generation forecasts for each asset in the BG
- FIP subsidy for each asset in the BG
- Any generation or sales plans submitted to the TSO
Contact us for more details on the mathematical and logical foundation of our battery optimization service for due diligence purposes.
Battery optimization FAQ
Q: What other markets than JEPX day-ahead do you support?
A: We support the JEPX day-ahead (spot) market and the balancing market — primary regulation (FCR), offline tender. We plan to introduce intraday market functionality within 2026.
Q: Do you support stand-alone battery systems?
A: Yes, we support stand-alone battery systems.
Q: How much revenue improvement will we get from co-located storage?
A: The revenue impact of co-located battery storage depends on a variety of factors, including the availability of an attractive FIP premium for your asset, your battery CAPEX, and the specifics of your solar generation profile. Based on our analyses of real customer use-cases, you can expect to get up to >40% increase in annual revenue.
We recommend getting started with our FIP calculator to get a rough estimate on the FIP premium you can expect for your case. After that, you can create a workspace on Tensor Cloud to run detailed techno-economic simulations of your project for a more detailed due diligence.
Q: How long does it take from initial conversation to go-live?
A: This depends on the maturity of your battery storage project, but we typically see a 3-6 month timeline from initial conversation to go-live. The bottleneck is usually not the integration with Tensor Cloud but lead times for battery storage systems, permitting, and the grid connection process.