Demand-Supply Coupling Spec¶
Phase 4, step 4.3 (draft for review). How H1 quantity (swap demand) is determined, and how the shared state variable — utilization — propagates to every BUFM. One source of truth; every unit consumes a derived view.
The demand chain (top-down, from the rider)¶
All quantities monthly unless noted. Time step = 1 month; utilization uses a monthly average plus a peak factor.
daily energy demand = active riders × daily_energy_per_vehicle_kwh [kWh/day]
swaps/day = daily energy demand ÷ kWh/swap
monthly swaps = swaps/day × 30
daily_energy_per_vehicle_kwhandkWh/swapcome from the Assumptions/Operating parameter groups (Kenya profile).- Swaps/day is the ecosystem's demand anchor — everything downstream keys off it.
The supply chain (bottom-up, from the station)¶
station capacity = stations × slots/station × swaps/slot/day [swaps/day]
swaps/slot/day = 24h ÷ slot turnaround time (cabinet-limited)
- Integer constraint: stations and slots are whole numbers. Utilization is continuous; capacity is not.
The shared state variable¶
utilization = swaps/day demand ÷ station capacity [0..1+]
This is the normalized demand / supply ratio — the quantity that shapes profit pooling across the ecosystem.
One variable, computed once in the DS layer, consumed as derived views:
| Consumer | Derived view | Drives |
|---|---|---|
| SNS | revenue = utilization × capacity × price; break-even utilization | margin, payback, integer station expansion |
| BCS | fleet requirement = swaps/day × turnaround hours × overprovisioning ratio | fleet CAPEX, rotation cadence, LCOB |
| EPS | anchor load = charging power × duty cycle (from station throughput); contracted as a PPA (fixed tariff vs anchor load) | contract sizing, off-peak pricing value |
Rule: no BUFM computes its own copy of utilization — they read the DS layer. This kills the drift class of bugs and makes sensitivity analysis single-point.
Demand / supply ratio¶
The demand / supply ratio is the central coupling quantity:
demand / supply ratio = swap demand ÷ station capacity
Its normalized form is utilization (ratio capped at 1 for revenue purposes; excess demand is unmet). Three regimes:
- Ratio < 1 (slack): capacity idle. SNS margin thins; BCS fleet oversized. Model question: does the ratio drag fixed-cost recovery below break-even?
- Ratio ≈ 1 (at capacity — the design point): both sides profit at planned assumptions.
- Ratio > 1 (constrained): riders turned away. Unmet demand = lost revenue + churn risk (modeled as a rider attrition rate, not silently dropped). Expansion pressure: add stations/slots (integer step) or raise price to shed marginal demand.
Because every unit's profit pools against the same ratio, it — not price alone — shapes how value distributes across the ecosystem.
Equilibrium convention (v1, deliberately simple): capacity leads, price clears. Capacity is set exogenously per scenario (expansion plan); price adjusts within the price wedge (4.2) so that demand absorbs into available capacity. Queueing/refusal dynamics are a v2 candidate — noted, not built.
Propagation to BCS: the overprovisioning identity¶
Batteries charge slowly relative to swap speed, so a battery fleet must be larger than the number of simultaneous riders:
fleet size = swaps/day × turnaround hours ÷ 24 × overprovisioning ratio
overprovisioning_ratio(v12: 超配系数) is auto-computed, not assumed: it absorbs charge-time, degradation headroom, and logistics slack.- BCS fleet utilization = required rotations ÷ fleet size — feeds LCOB directly.
Propagation to EPS: anchor load¶
peak charging load = stations × slots × charger kW × peak simultaneity factor
monthly energy = daily energy demand × (1 + charging losses) × 30
- EPS value = predictable anchor load, not commodity margin. Contract sizing off peak load; energy revenue off monthly kWh.
Coupling contract (what 4.4 must respect)¶
When mapping Maxwell v12 onto this catalog: the DS layer is where v12's 按次收费 (per-swap pricing) and 超配系数 (overprovisioning) live. Both map cleanly — pricing into the H1 composite tariff, overprovisioning into the BCS fleet identity.
Next step (4.4): map Maxwell v12 structure onto the BU catalog + transaction map — line-by-line provenance, adopt/contrast/reject table.