MW Battery Analytics powered by the MW Battery Engine
Understand what your battery data is really telling you.
Battery analytics for BESS operators, battery makers and fleets. We find early ageing signals in the BMS/CAN data you already record, check whether they are physically real, and tell you when to act.
Your BMS gives a health number. Battery analytics shows the mechanism, the certainty and the next step.
Pack view
Reference pack example- Chemistry
- LFP
- Cells
- 16 in series
- Log
- 20.6 h
- Lithium-inventory loss suspect
- Limits discharge
- Next to the T5 hot spot
- No signal (0 V)
- Nominal
Cell 1LLI suspect
dQ/dV peak 13 mV below the pack median (threshold −5 mV).
Earliest sign of lithium-inventory loss. The BMS still reports this cell healthy. Put it on a watch list and verify.
Your BMS reports
1.000
state of health, on the reference pack
A healthy-looking number can hide an ageing cell.
The BMS is the operational baseline and the safety layer, and it should stay that way. But a single state of health cannot tell you:
- What is actually ageing
- Why it is ageing
- Which cell is behaving differently
- How certain the signal is
- Whether the model is extrapolating
- What to do next, and when
Battery data in. Evidence, diagnosis and a decision out.
Every assessment answers three questions, in this order.
What is happening?
Which mechanism is moving, in which cell. On the reference pack: cell 1 shows an early lithium-inventory-loss signal.
Is it real?
Physics checks separate battery behaviour from sensor faults and bad data. On the reference pack: cell 16’s 0 V reading is a wiring question, not a dead cell.
When should I act?
Each finding comes with an action and a time horizon. On the reference pack: inspect the T5 hot spot within days; verify cell 1 within weeks.
Uses the data you already have
Works on the standard BMS/CAN log. No new sensors, no lab test, no downtime.
One day of data is enough to start
The reference analysis used a 20.6-hour log at one sample per minute: 1,313 rows.
Auditable
Every measured number can be recomputed from the raw CSV. Model estimates are kept separate, so they never pass as measurements.
Hard to fool
CAN has no authentication, but physics is hard to forge: a spoofed state of charge must still match the current that flowed, and faked temperatures must still follow load heating.
Questions only MW answers, questions it answers better, and the ones it can’t.
Every answer below comes from the same reference pack: one 16-cell LFP pack and one 20.6-hour BMS log.
A BMS gives one health number per pack. A point-estimate tool gives one life number. Neither can answer these.
How likely is this pack to last the warranty?
MW givesThe probability of reaching end of life before N cycles.
Reference packP(end of life before 1,000 cycles) = 0%; a 1,600-cycle target sits at the 38th percentile.
How sure is the life forecast?
MW givesA 90% credible window around the estimate.
Reference pack1,503–1,700 cycles around a mean of 1,620, about 5 years.
Is this cell really different, or is it noise?
MW givesWhether a difference exceeds measurement uncertainty.
Reference packCell 6’s higher resistance (4.48 mΩ) sits inside every other cell’s interval: no alarm, no truck roll.
Will this operating change actually pay off?
MW givesWhether the change in forecast exceeds model uncertainty: “resolved” or “not resolved”.
Reference packLets you skip spending on levers that are indistinguishable from noise.
Can I trust the forecast for this pack?
MW givesMW distance and a training-range check that flag extrapolation.
Reference packMW distance 1.7σ; the rated-cycle label flagged at +8.5σ outside training.
What is driving the life number?
MW givesCycles added or removed by each driver.
Reference packRated-cycle label +926 cycles; temperature about −100 cycles.
Is this log physically consistent, or faulty or tampered?
MW givesTen integrity laws: Ohm, Arrhenius, coulomb closure, Joule heating and others.
Reference pack1 of 10 fired: the thermal gradient near sensor T5.
Most battery tools are asked these. MW answers them earlier, per cell, or with a cost attached.
Which cell is starting to lose capacity?
Usual answerThe BMS shows nothing until capacity drops.
MW on the reference packCell 1 flagged for lithium-inventory loss (dQ/dV peak 13 mV below the pack) while the BMS still reads 100% health: roughly 1,600 forecast cycles of lead time to verify, budget and plan.
What does running hot cost us?
Usual answerA rule of thumb.
MW on the reference packLearned activation energy 0.50 eV: at 39.5 °C cells age 2.46× faster than at 25 °C; heat costs about 100 cycles.
Where is the heat coming from?
Usual answerThe hottest sensor reading.
MW on the reference packHot spot at T5 (max 56.8 °C) with a weak link to load current points to a local cause: joint, busbar, airflow or the sensor.
Is the BMS health figure right?
Usual answerTake the BMS number.
MW on the reference packIndependent manifold health 0.976 vs BMS 1.000. A large gap would trigger a BMS audit before resale or warranty claims.
Which cell limits usable capacity?
Usual answerNot reported.
MW on the reference packCell 2 is the pack minimum 56% of the time.
Is there a resistance problem?
Usual answerRaw resistance values.
MW on the reference packResistance normalised to 25 °C with confidence intervals: 3.66–4.48 mΩ, all overlapping, so no power-fade problem.
Which cells need a lab test?
Usual answerTest all 16.
MW on the reference packTest cell 1 only.
These need a different tool or a physical test. We say so up front.
Is this pack about to go into thermal runaway, short or vent?
Why MW can’tMW is not a safety system and must never override a BMS warning.
What canBMS safety functions and dedicated safety monitoring.
Can I certify this pack’s health for sale, insurance or regulation?
Why MW can’tCAN logs alone carry no traceable calibration, named standard or beginning-of-life baseline.
What canA certified capacity test by an accredited lab.
What is cell 1’s actual capacity today?
Why MW can’tThe flag shows the ageing mechanism, not a measured capacity loss.
What canA capacity test on that cell.
How does chemistry change the result?
Why MW can’tThe current model does not use chemistry as an input. Reference work to date is on LFP.
What canChemistry-specific models or lab characterisation.
What is the full error bar on remaining life?
Why MW can’tThe window covers model uncertainty only, not sensor, label or duty-cycle uncertainty.
What canField validation across many packs to actual end of life.
How will the pack age under deep cycling?
Why MW can’tThe training data had little depth-of-discharge variation.
What canRetraining on wider data, or cycling tests.
What is happening in a cell the BMS cannot see?
Why MW can’tMW needs a working voltage channel; cell 16 read 0 V for the whole log.
What canFix the sense wire, then re-run.
When the BMS still says healthy.
On the reference pack the BMS reported 1.000 for every cell. Cell 1’s dQ/dV peak sat 13 mV below the pack median, well past the −5 mV threshold. That is the earliest sign of lithium-inventory loss, and it appeared roughly 1,600 forecast cycles before the end-of-life line.
dQ/dV curves: the pack median peak sits at 3.376 V; cell 1's peak sits 13 mV lower at 3.363 V. Peak width (FWHM) is 30 mV.
Why it shows up here first
LFP has a very flat voltage plateau, so the voltage a BMS sees barely changes as the cell ages. The dQ/dV peak is one of the few signals that moves early, and the engine extracts it from ordinary CAN data.
- BMS state of health
- 1.000
- Pack manifold health
- 0.976
- Cell 1 peak shift
- −13 mV
- Flag threshold
- −5 mV
- 1.000BMS says
- 0.976MW manifold: LLI flag on cell 1
- 0.917+500 cycles
- 0.853+1,000 cycles
- 0.80End of life ≈ 1,620 cycles
What the signal supports
- Verify it on the next log
- One targeted capacity test on cell 1 instead of testing all 16
- Track the trend: −13 growing towards −20 mV confirms active loss
- Budget a spare and plan replacement in a maintenance window
- Disclose or swap cell 1 before resale or second-life grading
What it does not prove yet
- That cell 1 needs replacing today: manifold health is 0.976, the same as every other cell
- A cell-1-specific life number: the pack forecast follows the weakest cell
- Certainty from one log: confirm it on a second log
The MW Battery Engine, in six steps
Physics does the heavy lifting; Bayesian inference says how sure we are. Every number on the way carries its origin, so you always know how far to trust it.
BMS / CAN data
The log you already record: cell voltages, pack current, temperatures, BMS state of charge and health.
Your data16S LFP, 1,313 rows at 1 sample/min
Measured signals
Resistance, relaxation and dQ/dV peaks fitted from the raw log. Anyone with the CSV can recompute them.
MeasuredCell 1 dQ/dV peak −13 mV
Physics checks
Ten integrity laws test whether the log is physically consistent: Ohm, Joule heating, charge counting and more.
Physics-checked1 of 10 laws fired: thermal (MP8)
Bayesian model
Places each cell on a learned map of physically consistent states, with its own uncertainty.
Bayesian posteriorManifold health 0.976, MW distance 1.7σ
Forecast + uncertainty
Many simulated futures through the map give a range for remaining life, not a single guess.
Bayesian posterior1,620 cycles, 90% window 1,503–1,700
Decision
Each signal becomes an action and a time horizon your team can plan against.
Your actionCell 1: verify and budget a spare, in weeks
Measured
Fitted directly from your log: resistance, relaxation, dQ/dV peak shift and width. No model needed.
Anyone with the CSV can recompute them.
Physics-checked
Ten integrity laws test the log against physics: Ohm, Joule heating, charge counting, voltage windows, relaxation.
An engineer can read the law and the value behind it.
Bayesian posterior
Model outputs with their uncertainty: manifold health, MW distance, remaining-life distribution.
Quoted with the window and caveats, never alone.
Eight findings from one 20-hour log
A 16-cell LFP pack, a 20.6-hour BMS log at 1 sample/min, 1,313 rows. Each finding comes with its evidence and the action it supports.
- Act
T5 hot spot
- Signal
- T5 mean 41.5 °C, max 56.8 °C, hottest sensor 62% of the time. Gradient up to 15.8 °C against a 10 °C fire line; integrity law MP8 fires. Physics-checked
- What to do
- Inspect near T5: torque check, thermal imaging, cooling path, and the sensor itself.
- When
- Days
- Act
Cell 16 reads 0 V
- Signal
- Voltage reads 0 V for the whole log. Measured
- What to do
- Check the sense lead and connector before condemning the cell.
- When
- Immediate
- Watch
Cell 1 lithium-inventory loss suspect
- Signal
- dQ/dV peak 13 mV below the pack median (threshold −5 mV). The only clear outlier in the pack. Measured
- What to do
- Watch list, confirm on the next log, one targeted capacity test, add a spare to the plan.
- When
- Weeks
- Watch
Cell 2 limits discharge
- Signal
- Pack minimum in ~56% of samples (cells 1 and 5 about 20% each). Measured
- What to do
- Watch alongside cell 1, check balancing, include it in any capacity test.
- When
- Weeks
- Lever
Pack lives near full
- Signal
- ~80% of the time above SoC 0.9; shallow swings (typical DoD 0.1, deepest 0.3). Measured
- What to do
- The cheapest lever available: model a lower resting-SoC cap before changing the setpoint.
- When
- Next config change
- No action
Resistance is uniform
- Signal
- DCIR at 25 °C between 3.66 and 4.48 mΩ (median 4.03). Every difference sits inside each cell’s 95% interval. Measured
- What to do
- No action, and that is useful too: it avoids a false alarm on cell 6.
- When
- None
- No action
Balance is acceptable
- Signal
- Resting spread median 22 mV, p95 30 mV. Physics-checked
- What to do
- None now. Re-check if cell 1 or cell 2 drifts.
- When
- None
- Plan
Life ≈ 1,620 cycles
- Signal
- Posterior mean 1,620 cycles; 90% window 1,503–1,700; about 5 years at 0.88 cycles/day. Bayesian posterior
- What to do
- Use the distribution, not the mean. Treat the window as a lower bound on uncertainty and re-run as more logs arrive.
- When
- Quarterly
Remaining life is a range, not a promise.
A single number hides how sure the model is. The distribution is more useful than the mean.
Remaining useful life distribution for the reference pack: mean 1,620 cycles, 90% credible window 1,503 to 1,700 cycles, probability of end of life before 1,000 cycles is 0%, OEM rating 2,000 cycles.
- Estimate
- 1,620 cycles mean, about 5 years at 0.88 cycles a day. Bayesian posterior
- Uncertainty
- 90% of simulated futures end between 1,503 and 1,700 cycles. P(end of life before 1,000 cycles) = 0%.
- Assumptions
- Duty as logged: DoD 0.1, resting near full, 0.2 C. The forecast leans on the 2,000-cycle OEM label (+926 cycles of attribution), which is outside the training range.
- Decision
- Planning grade. Use it for replacement budgets and warranty probabilities; re-run as more logs arrive. Never quote it as guaranteed life.
Every signal ends in an action and a time horizon
Analytics that support decisions, not a dashboard full of charts. These are the engine’s own decision rules.
- SignalCell channel reads 0 V for the whole logWhat it may meanSense-wire or BMS-channel fault more likely than a dead cellWhat to doCheck the sense wire and channel before condemning the cellWhen to actImmediate
- SignalThermal physics law firesWhat it may meanPossible local connection, busbar, airflow or sensor issueWhat to doPhysical inspection, thermal imaging, torque checkWhen to actDays
- SignaldQ/dV peak shifts below −5 mVWhat it may meanPossible lithium-inventory lossWhat to doWatch, verify on the next log, targeted capacity test, budget a spareWhen to actWeeks
- SignalPersistent pack minimumWhat it may meanPossible weak cell, balance or capacity issueWhat to doCapacity test, balancing review, replacement assessmentWhen to actWeeks
- SignalShift grows, e.g. −13 → −20 mVWhat it may meanActive lithium-inventory loss confirmedWhat to doSchedule replacement in a planned windowWhen to actNext maintenance
- SignalRelaxation τ rising across logsWhat it may meanRate capability falling before capacity doesWhat to doConsider charge-current derating, plan replacementWhen to actMonths
- SignalMW distance above 3σWhat it may meanThe model is outside what it has learnedWhat to doDo not rely on the forecast; gather more data or retrainWhen to actBefore quoting RUL
- SignalRUL window approaches the warranty termWhat it may meanPlanning riskWhat to doWarranty reserve, pricing and maintenance reviewWhen to actQuarterly
Knowing when not to trust a forecast is part of the analytics.
MW distance: is the model on familiar ground?
1.7σ this pack: inside the learned map, so the forecast can be used with its stated caveats.
> 3σ outside what the model has learned: do not quote a remaining-life number. Gather more data or retrain.
What we say openly
- One reference pack and one 20.6-hour log so far; no lab capacity test yet. Validation across 20–30 packs is next.
- The life forecast leans on the 2,000-cycle OEM label, partly outside the model’s training range.
- The credible window is a lower bound on uncertainty: it excludes label, sensor and duty uncertainty.
- Reference work to date is on LFP.
- Not a safety system and not a certified test. It never overrides a BMS warning.
Who is behind it
Built by a team combining decades of applied Bayesian statistics with clean-energy and battery leadership. We are working with battery startups founded by globally leading battery researchers.
About the team- Rahul ModakCo-founder & CEO, Technical Lead
Dr. Rahul WalawalkarCo-founder & Executive ChairmanPhD, Carnegie Mellon University- Rajas JoshiCo-founder & COO
Physics is hard to forge.
CAN has no authentication: any node can send a valid frame. But a spoofed state of charge must still match the current that flowed, and a faked temperature must still follow Joule heating. The same integrity laws that catch a dead sense wire also expose inconsistent or manipulated data.
- Battery cybersecurityA nine-attack red-team range against BESS, from CAN injection to ransomware.
- Cyber-physical securityCommands that are protocol-valid but physically impossible, caught by MW distance.
- RF cybersecurityPhysics-based electronic-warfare detection on sovereign sensor grids.
- Steganographic LLM red teamResearch on attack tooling hidden inside model weights, and how to detect it.
Before you send us a log
Does MW Battery Analytics replace our BMS?
No. The BMS stays the operational baseline and the safety layer. MW reads the same data afterwards and adds the context behind the health number: which mechanism, which cell, how sure, and what to do.
What data do you need?
An ordinary BMS/CAN log. The reference assessment used a 20.6-hour log at one sample per minute with cell voltages, pack current and voltage, temperature sensors and the BMS state of charge and health. No lab capacity test is required to start.
Is the remaining-life number guaranteed?
No. It is a planning estimate given as a distribution, with a credible window and the assumptions behind it. On the reference pack it leans on the OEM cycle rating, which we state alongside the number. Re-running on more logs narrows it.
Is it a safety system?
No. It cannot detect thermal runaway, internal shorts, venting or fire, and it must never override a BMS warning. It is decision support for maintenance, planning and asset teams.
Which chemistries does it support?
Reference work to date is on LFP. Tell us your chemistry when you request an assessment and we will say plainly what the engine can and cannot support for it.
What does the free assessment include?
We analyse one log you share and send an MW Battery Assessment Report: the findings with their evidence, the confidence behind each, an action and time horizon for each, and the limits of what one log can show. A detailed metrics guide is available on request.
Get a free MW Battery Assessment.
Send one BMS/CAN log. Get back what is ageing, how sure we are, and what to do next.
- Share a logAny BMS/CAN export with cell voltages, current and temperatures. We agree how to transfer it.
- We run the MW Battery EngineMeasured signals, ten physics checks, the Bayesian model and a life forecast.
- You get the MW Battery Assessment ReportFindings with evidence, confidence, actions and time horizons, plus its limits.
Prefer email? rahul.modak@bayesiananalytics.in