Back to the map

Model coverage and replay accuracy

Power Dispatch Studio is a three-zone economic dispatch model for the Philippine Wholesale Electricity Spot Market (WESM). This page lists the calculations it performs, its replay results against published prices, the available analyst workflows, and its limits.

License and inputs

The code uses the MIT license. Calculated data uses CC BY 4.0. Model inputs come from public records or are labeled assumptions.

Browser and Python calculation

Both interfaces use HiGHS and build the same linear program. A parity test checks the model text and reference results.

Replay results

Recorded days are compared with published prices. Correlation, average error, bias, and high-price-hour agreement are reported below.

Model coverage

CapabilityCoverageImplementation
Economic dispatch, hourlyYesA linear program over three zones and 24 hours, priced from the balance duals
Transfer limits between zonesYesTwo high-voltage direct-current links, with an hourly limit and a wheeling cost
StorageYesState of charge with a round-trip efficiency, and a free terminal state each day
Reserve capacityPartlyThe hourly replay holds the published reserve requirement out of the energy stack. Published reserve prices and a separate offer replay are shown; reserve prices are not co-optimized with energy.
Hydro energy budgetYesA daily MWh limit per zone, taken from the recorded day
Shortfall penaltyYesUnserved load uses the published ₱32/kWh offer cap. This is a numerical penalty, not an estimate of the value of lost load.
Loss of load probabilityYesRandom forced outages, sampled, reported per zone
Capacity expansionNoThe long-term view reports DOE demand paths and project lists. It does not choose a least-cost build.
Multi-period chronologyPartly168 hours as one program in one view. Everything else solves one day at a time
Unit commitmentNoAn experimental fuel-block minimum-output test is documented on the method page. It is not per-unit commitment and is not a Studio capability.
Named unitsPartlyNamed plants supply capacity and outage inputs. Energy dispatch remains aggregated by fuel and grid.
Security-constrained nodal dispatchNoA reduced loss surface over mapped routes, checked per zone. It is not a network model
Contracts and settlementPartlyA contract book marks against modeled spot, per contract and net. No capacity fee, no wheeling charge, no tax, no credit terms
Stochastic multi-stageNoRepeated draws over one stage, never a scenario tree

The model dispatches fuel blocks rather than named units. Unit commitment therefore cannot be applied per plant. The method page documents the separate fuel-block experiment and its limits.

Replay accuracy

Every recorded day replays two ways. The cost model prices a competitive fuel-cost floor. The offer replay clears the market operator's own published bid book. Neither reproduces every price, and the table states the gap that remains. Recorded prices never set the model inputs.

GridTargetCorrelationAverage errorBiasHigh-hour hit
LuzonLWAP0.73P2.93+P1.9159%
VisayasLWAP0.75P4.77-P1.2555%
MindanaoLWAP0.81P4.20-P1.7375%
LuzonMCP0.75P2.94+P2.2467%
VisayasMCP0.77P5.53-P4.3552%
MindanaoMCP0.84P3.74-P2.8861%

LWAP is the load-weighted average price and MCP is the market clearing price, both published by the market operator. High-hour hit is the share of the dearest recorded hours the model also calls dear. The nightly build rewrites this table from the current archive, so it cannot freeze behind the data.

Analysis views by task

Analyst taskStudio view
Short-term schedule, one dayHourly market replay
Supply curve and price-setting fuelLowest-cost-first dispatch
N-1 contingencyPower-shortfall risk
Loss of load probabilityPower-shortfall risk
PASA, adequacy outlookSupply after scheduled outages
Price distribution and durationPrice range across recorded days
Capture price by technologyAverage price earned by each technology
Interface and transfer limitsPower between island grids
Recorded connection-point differencesRecorded connection-point price differences
Reserve prices and capacity holdbackReserve market
Demand path and project listsAnnual demand and supply outlook
Market power and HHISupplier concentration
Contract position, hedge coverContract position
Backcast, model validationReplay accuracy
Input databaseAssumptions and model inputs
Solution file, reportSaved runs, which writes an HTML report and an hourly CSV

Ways to run the project

Use other system data

The engine reads dispatch.json and profiles.json from a supplied directory. Those files can describe a different power system.

pip install power-dispatch-studio
power-dispatch run --data-dir ./mysystem --date 2030-01-01

The data contract lists every key those two files must carry, and carries a 30-line system that runs. A test builds that system, solves it, and fails when the document stops matching the engine.

Model limits

The following calculations are outside this model's scope.

The method page explains these limits and identifies the source records, calculations, and assumptions used elsewhere.

Code uses the MIT license. Calculated data products use CC BY 4.0. Source records stay the property of their publishers.