Phase 1 shadow · synthetic · independent  ·  SAWEM Phase 1 Trading Simulator — explainer-grade, not an MMS.  ·  Trading Rules Round 2 (12 April 2026 v01 draft)
Trading day 2026-05-29 virtual hour 00 Auction state: ACCEPTING gate close in 18h:00m DAM clear IDM re-clear Balancing Settlement
SAWEM
Regulator persona · surveillance · synthetic triggers

Market monitor — 2026-05-29

Rules-based streaming projections over the auction record and the append-only event log. Not ML — every flag is explainable to the exact offer, bid, or event that tripped it (the property a regulator needs and an opaque score cannot give). Three detectors fire on synthetic triggers below; eight more are projection-ready.

Synthetic surveillance feed — the triggers are deliberately rigged to demonstrate each detector; figures are illustrative, seed=42.

capacity withholding · h18 wash trade price spike · h18

1 · Capacity-withholding

RSI: RSI = (total_supply − largest_supplier) / load. RSI<1 means the largest supplier is pivotal — load cannot be met without it, so it could raise price unilaterally. Combined with a submitted-vs-rated heatmap (<80% with no outage logged = red). (PJM/CAISO DMM three-pivotal-supplier test · FERC.)

Hour 18 · gate-open RSI
RSI 0.08
PIVOTAL SUPPLIER. Largest supplier Eskom Holdings — coal fleet (Generator) offers 18000 MWh of 20812 MWh total vs 36000 MWh load.
Generator 000102030405060708091011121314151617181920212223
Aggregator — renewables pool
Cross-border — ZESA interconnect
Eskom Holdings — coal fleet (Generator) !
Eskom Holdings — OCGT peaker (Generator)
IPP — solar BW5 (Generator)
IPP — wind plant (Generator)

≥95% offered <80% (outage logged) <80% no outage = withholding suspected

RED RSI=0.08 (pivotal). 1 generator(s) submitting <80% of rated capacity with no outage logged; largest gap: 12000 MWh from gen_eskom_coal_01.
PJM/CAISO DMM three-pivotal-supplier test · FERC market-power screen

2 · Bilateral wash-trade

A→B at price P matched by B→A at ±P, equal volume, within a 30-minute window — no net economic position changes, the signature of trades placed to paint volume or liquidity. (SEC/CFTC surveillance.) Benign one-way trades and reciprocal pairs outside the window are not flagged.

Trade id From → To Price (R/MWh) MWh Minute
t-benign-1 IPP — wind plant (Generator) → Large customer — aluminium smelter R620.00 30 09:05
t-wash-A Aggregator — renewables pool → agg_shadow_02 R900.00 100 11:02
t-wash-B agg_shadow_02 → Aggregator — renewables pool R901.00 100 11:14
t-far-A Large customer — EIUG mine → Distributor — Eskom Distribution R850.00 50 14:00
t-far-B Distributor — Eskom Distribution → Large customer — EIUG mine R850.00 50 14:45
RED Reciprocal trade pair: agg_renewables_01→agg_shadow_02 then agg_shadow_02→agg_renewables_01, 100 MWh, price delta R1.00/MWh, 12 min apart — no net position change (wash-trade signature).
SEC/CFTC wash-trade surveillance

3 · Price-spike vs trailing-30-day band

Today's hourly SMP against the p5–p95 of a trailing-30-day band for the same hour. Outside-band hours auto-flag (above p95 = red, below p5 = amber). (AEMO Average Price Tables.)

Hour p5 p95 Today SMP Band (p5 ▮ p95) · today ◆
00 R791.47 R888.98 R847.93
01 R804.65 R920.67 R864.61
02 R796.05 R911.03 R850.02
03 R793.66 R916.32 R853.69
04 R777.17 R891.33 R831.08
05 R775.73 R882.16 R831.49
06 R792.15 R902.49 R842.14
07 R771.36 R886.32 R832.98
08 R791.16 R899.27 R847.24
09 R798.41 R913.42 R854.47
10 R791.75 R887.84 R837.18
11 R791.89 R908.36 R847.35
12 R786.90 R903.96 R847.99
13 R779.17 R887.21 R841.83
14 R786.22 R905.08 R849.01
15 R779.72 R893.52 R838.92
16 R803.25 R927.55 R865.47
17 R2042.73 R2354.06 R2188.35
18 R2075.52 R2335.90 R3737.44
19 R2056.49 R2385.26 R2219.54
20 R2049.87 R2310.77 R2196.73
21 R794.04 R909.59 R845.94
22 R788.95 R901.80 R853.57
23 R778.42 R898.31 R836.77
RED Hour 18 SMP R3737.44/MWh is above the p95 of the trailing-30-day band (p5 R2075.52 – p95 R2335.90), +60% vs the boundary.
AEMO Average Price Tables — outside-band auto-flag

Projection-ready detectors

The same event-log substrate supports these additional detectors (built if budget allows). Each is a rules-based projection, not ML.

projection-ready Offer-withdrawal pattern

Gate-open→close offer mutations: capacity offered early then pulled before gate-close.

Precedent FERC offer-mitigation screens

projection-ready Coordinated-bidding correlation

Cross-party bid-price correlation above a threshold across rolling windows.

Precedent CFTC/EU REMIT collusion screens

projection-ready Volume-ramp cap breach

Third-party volume vs the Trading Rules R2 §08 ramp cap (20/30/40/50%): amber approaching, hard-block + NERSA-notification event when exceeded. Ties to F6.

Precedent Trading Rules R2 §08

projection-ready Prudential-collateral breach

>80% of posted margin used → margin call; >100% → default-waterfall projection.

Precedent SGX EMC default-waterfall

projection-ready Telemetry-confidence

<95% of expected meter telemetry reporting for the hour → reduced-confidence banner.

Precedent AEMO data-quality flags

projection-ready Replay-divergence canary

Nightly re-run from the event log; any divergence from the published receipt is a P0.

Precedent event-sourcing / deterministic-replay invariant

projection-ready Round-number bidding heuristic

Clustering of offers on round price points (e.g. exact R/MWh hundreds) as a soft signal.

Precedent behavioural-finance round-number bias

projection-ready Bid-clustering scatter

Price×volume scatter to surface suspiciously tight offer clusters across parties.

Precedent visual market-monitor exploratory tool

Regulator market monitor · rules-based projections, not ML · escalations write anomaly_flagged to the append-only SHA-256 chain · simulator build 2026-05-29.