# China Product Design: Forecasting & Optimization Models for Renewable Power Trading **Working design document — v0.1 (July 2026)** **Companion to:** `../us/pjm/design_models_en.md` (PJM design, Models A–C) and `market_vendor_dd_en.md` (market & vendor context, esp. §1.4–1.6). Scope: the China product line. Models A–C are imported by reference with their Chinese adaptations summarized in §1; Model D — the MLT position optimizer, which has no PJM equivalent — receives its full first-class specification here, including the mathematical formulation of the contract-position problem. --- ## 0. Architecture: four models, six decision timescales ``` ┌──────────────────────────┐ │ Model B: Production │── daily quantiles ──────────┐ │ (adds MONTHLY-horizon │── monthly distributions ─┐ │ │ distributions for D) │ │ │ └──────────────────────────┘ ▼ ▼ ┌──────────────────────┐ regimes ┌──────────────┐ ┌──────────────┐ │ Model A: Spot price │───────────────────────────▶│ Model D: │ │ DA Declaration│ │ level/regime (per │── monthly seg. forecasts ─▶│ MLT Position│ │ Optimizer │ │ province, DA & RT) │ │ Optimizer │ │ (newsvendor + │ └──────────────────────┘ │ (annual/ │ │ covariance + │ ┌──────────────────────────┐ │ monthly/ │ │ 两个细则 terms)│ │ Model C: DA–RT deviation │ │ rolling) │ └──────────────┘ │ spread (per province) │─▶└──────────────┘ ▲ └──────────────────────────┘ │ residual spot │ │ exposure Q_open │ └────────────────────┘ ``` Decision timescales: (1) mechanism-price annual auction → (2) annual MLT window → (3) monthly adjustments → (4) intra-month/multi-day rolling → (5) DA declaration (报量报价) → (6) RT. Model D owns (1)–(4); the DA optimizer owns (5)–(6) with Models B/C exactly as in the PJM design. --- ## 1. Models A–C: Chinese adaptations (imported by reference) | Model | PJM spec | Chinese delta | |---|---|---| | A — price level/regime | `../us/pjm/design_models_en.md` §1 | Per-province spot forecasting (DA & RT); negative-price/floor-hit and cap-hit classifiers; supply-demand regime. **New job: monthly-horizon time-weighted spot forecasts per contract segment (D's key input).** Structural-lite features adapt: provincial supply stack, coal price, inter-provincial flows, mechanism/MLT disclosure data | | B — production quantiles | §2 | Same two-stage pipeline and calibration discipline. **New requirement: monthly production distributions** (sum of hourly, with intra-month correlation preserved — ensemble/scenario route preferred over pure quantile regression). Dual monetization: 两个细则 assessment avoidance + bidding | | C — DA–RT spread | §3 | Same regime × conditional-distribution × covariance architecture on the DA-vs-RT deviation settlement. Congestion layer largely replaced by provincial supply-demand and renewable-surplus regimes (zonal pricing); 两个细则 assessment terms enter the optimizer alongside the spread (the "BORD-style" analog — see design doc §4.1 contrast) | Point-in-time discipline (§5.1 of the PJM doc) applies unchanged, with the declaration deadline per province replacing the 10:30 AM ET close, and — harder than PJM — the as-of archive must include **MLT window disclosures** (listed prices, cleared volumes) which provincial exchanges publish irregularly and revise. --- ## 2. Model D — MLT Position Optimizer (full specification) ### 2.1 Decision problem For a plant (or portfolio) in province p, at each contracting window w (annual, monthly, rolling), choose: - **x_s** — contract volume to hold in each time segment s (peak/flat/valley or finer, as the province defines), across each delivery month m; - **limit prices** for each window's bilateral/listing/auction participation; - **timing** — which windows to transact in, within mandate constraints; given: Model B's monthly production distributions, Model A's segment-level spot forecasts, the current contract book, mechanism-price volume, and the province's rulebook (coverage mandates, curve granularity, adjustment rights, position limits). ### 2.2 Objective function: the settlement identity Per delivery hour t (suppressing the plant index), with contract book giving hourly contracted volume Q_c(t) = Σ_s x_s·1[t ∈ s] at volume-weighted price P_c(t), mechanism volume Q_m(t) at mechanism price P_m: ``` R(t) = Q_da(t)·P_da(t) + [Q_rt(t) − Q_da(t)]·P_rt(t) (spot layers) + [P_c(t) − P_ref(t)]·Q_c(t) (MLT CfD; P_ref usually = P_da) + [P_m − P_ref_m(t)]·Q_m(t) (mechanism CfD) − A(t) (两个细则 assessments) ``` Model D optimizes the **contract terms** {x_s, P_c} against the distribution of the spot-dependent quantities; the DA optimizer later optimizes Q_da given the book. Note the separability: for fixed Q_c, the DA/RT problem is exactly the PJM newsvendor (plus assessment terms). Model D's problem is the outer portfolio problem. Monthly aggregation: let month m have segment hours H_s(m). Define per segment: - **W_s** = Σ_{t∈H_s} P_ref(t) / |H_s| — realized time-weighted spot for the segment ("segment index"), a random variable at contracting time; - **G_s** = Σ_{t∈H_s} Q_rt(t) — plant production in the segment, random, correlated with W_s (negatively for solar in midday segments: high fleet output depresses the index exactly when own output is high). Then the MLT layer's monthly P&L is Σ_s x_s·(P_c,s − W_s)·|H_s| (per-MWh convention), and the plant's unhedged market revenue is Σ_s G_s·(segment average capture price). The contract position's economics reduce to a **portfolio of segment-level basis positions**: long basis (P_c,s − W_s) in size x_s. ### 2.3 The core optimization Risk-adjusted formulation (per month, extendable across months): ``` max_{x} Σ_s x_s·( P_c,s − E[W_s] )·|H_s| (expected basis P&L) − λ · Risk( Σ_s [ G_s·Ŵ_s + x_s·(P_c,s − W_s)·|H_s| ] ) s.t. L_p ≤ Σ_s x_s·|H_s| / E[Σ_s G_s] ≤ U_p (coverage mandate band) x_s ≥ 0 segment-wise or as province allows (position/short limits) x_s ≤ κ_s·(physical basis) (physical-scale rules) ``` where Risk(·) is variance or CVaR of total revenue, λ the client's risk aversion, and Ŵ_s shorthand for the plant's capture price in segment s. Two classical results emerge in the mean–variance case with a single segment: **Optimal hedge ratio.** With production G (mean μ_G), segment index W (variance σ_W²), production-index covariance σ_GW, and contract price P_c: ``` x* = [ β·μ_G ] + [ (P_c − E[W]) / (2λ·σ_W²·|H|) ] minimum- speculative tilt variance (the basis view) hedge where β = −Cov(G·W-revenue, W)/Var(W)·(1/|H|) ≈ μ_G + Cov(G,W)/σ_W² ``` Interpretation, and the three China-specific corrections that make this more than textbook hedging: 1. **The minimum-variance hedge is NOT 100% of expected production.** The correction term Cov(G,W)/σ_W² is *negative* for solar in midday segments (own output high ⇔ index low), pushing the pure-hedge position *below* expected production — the plant is already "short the index" through its revenue exposure less than naively assumed, because its volumes concentrate in low-index realizations. This is the contract-market mirror of Model C's covariance correction, and skipping it systematically over-hedges solar. 2. **The speculative tilt is where Model A's basis forecast enters.** In PJM we set this term to ~0 (forwards ≈ efficient). In China, per DD report §1.5, (P_c − E[W]) is persistently non-zero and forecastable — the tilt is a legitimate, bounded position, capped in practice by the mandate band [L_p, U_p] and position rules rather than by the optimizer. 3. **Segments the plant cannot produce in are pure basis bets.** For s where G_s ≈ 0 (solar in evening peak), x_s has no hedging role at all — the minimum-variance term vanishes and x* is purely the tilt term. Default posture: x_s ≈ 0 unless the basis view is strong; accepting such segments to "complete the curve" in a negotiation should be priced explicitly as a short-index position with the full W_s tail risk (evening spike exposure). **Multi-month, multi-window extension.** Stack months into a book; at each window w, re-solve with (a) updated E[W_s], distributions from Models A/B, (b) the existing book as the starting position, (c) transaction costs and liquidity limits per window. The rolling problem is then a standard stochastic-programming / model-predictive-control loop: solve, transact the first stage, roll forward. Window timing (which window to transact in) is handled by comparing the current window's achievable price against the model's forecast of later windows' prices minus a liquidity/execution discount — the calendar-flow patterns of DD report §1.5 (annual-window pressure, month-end effects) enter as features of that forecast. ### 2.4 Stage structure - **D1 — Segment basis forecaster.** Target: E[W_s] and quantiles per province, delivery month, segment, at each window horizon (12m to D-2). Features: Model A regime forecasts; provincial supply stack evolution (capacity additions/retirements pipeline); coal price and band policy; fleet renewable growth vs. demand growth; disclosed MLT window prices and cleared volumes (the "forward curve" such as it is); calendar/window dummies; policy-event flags. Baseline to beat: "W_s = current MLT price level" (market-is-right) and "W_s = last year's realized" (naive). - **D2 — Shape-risk quantifier.** Joint distribution of (G_s, W_s) per segment: correlation estimation within regimes, scenario generation from Model B ensembles pushed through Model A price scenarios. Output: the covariance inputs and revenue distribution for any candidate book. - **D3 — Portfolio optimizer.** The §2.3 program, with province rulebook encoded (mandate bands, segment definitions, adjustment rights, position limits). Output: target book per month/segment, trade list per window, limit prices. - **D4 — Window timing & negotiation support.** Fair-value marks per segment (from D1), walk-away prices, counterparty-offer evaluation ("this curve at this price = implied basis of X vs. our forecast of Y"), and calendar-pressure timing signals. - **D5 — Mechanism auction bidder.** The annual 机制电价 auction: bid low enough to clear, high enough to beat the market alternative. Decision rule: bid ≈ certainty-equivalent of the market revenue distribution (from D1–D3's unhedged + optimally-hedged forecast) plus a margin for the option value of mechanism coverage; clearing-price forecasting from prior rounds, provincial caps, and competitor cost curves. ### 2.5 Evaluation protocol - **D1:** pinball loss per segment/horizon vs. the two baselines above; calibration checks concentrated on the downside tail (the basis moves that hurt sellers). - **D2/D3 economic backtest:** simulate the full rolling loop against realized spot, comparing (i) mandate-minimum flat-curve naive strategy, (ii) 100%-of-expected-production proportional hedge, (iii) the optimizer. Metric: risk-adjusted ¥/MWh uplift and drawdown in the worst realized month — clients in this market are loss-averse; the sales metric is as much "avoided 2021-style blowups" as average uplift. - **Regime-sliced:** separately score buyer's-market vs. tight-market periods; a model tuned on 2024–26 buyer's-market data will misprice the next tight cycle (encode the 2021–23 episode explicitly, however painful the data work). - **Point-in-time:** window-by-window information sets; disclosed MLT data as-of each window, not as-revised. ### 2.6 Interactions and portfolio risk - **B → D spec change:** Model B must ship monthly distributions with intra-month correlation (scenario/ensemble form), not just daily quantiles. - **D → DA optimizer:** the book {Q_c(t), P_c(t)} is an input to the daily declaration problem; conversely, realized DA/RT settlement feeds D's next-window re-solve. - **Cross-client correlation (existential, as in Model C):** clients' optimal tilts point the same direction (all renewable sellers, same provincial basis view). Aggregate tilt exposure per province — total MWh positioned away from minimum-variance across the client book — is a first-class risk metric with stress tests against a policy-reset scenario (band adjustment repricing the curve overnight). - **Compliance:** negotiation-support outputs (fair values, walk-away prices) are advisory and safe; anything resembling coordinated positioning across clients in one province needs counsel review (the algorithmic- collusion concern flagged in the DD report §4.5 applies to contract markets too). ### 2.7 Separability of contract P&L and spread P&L: what transfers from PJM, and four deltas The PJM design doc's §4.2 establishes the three-layer statement — hedge and spread books are **separable in accounting and first-order decisions, correlated in risk, coupled in risk-adjusted decisions**. It transfers to China intact, because the MLT layer is likewise a CfD settling against a reference price the plant's bid doesn't move — the very structure that lets Model D wrap the unchanged inner newsvendor (§2.2's separability note). Four features of the Chinese market sharpen its limits: 1. **Tighter correlation — same settlement price.** A PJM hub hedge and a nodal spread book are linked through related-but-distinct prices with a basis buffer between them. A Chinese MLT CfD typically settles against the *same provincial DA price* the declaration clears against: hedge-leg and spread-leg P&L are driven by literally the same random variable. 2. **Bidirectional decision coupling — both books are alive.** In PJM the hedge predates operations and is revisited ~never, so Layer-3 coupling is a static parameter of the bid optimizer. In China the same team adjusts the contract book monthly/intra-month while declaring daily: the current book conditions the optimal lean, *and* demonstrated spread-model performance (¥/MWh earned on open exposure) rationally feeds back into how much open exposure Model D should leave. 3. **Mandates truncate the co-optimization.** The coverage band [L_p, U_p] frequently makes the joint optimum a corner solution: hold the mandated minimum, and let the interesting optimization live in curve *shape* and window *timing* rather than total hedge quantity. Separability survives; the interior second-order optimum often doesn't. 4. **The "you don't move the index" assumption degrades at portfolio scale.** In PJM it is airtight (one plant vs. Western Hub). In a provincial market, a large renewable book optimized in a correlated way can move the provincial clearing price its own CfDs settle against — especially in midday hours where renewables are marginal. For a service provider this is simultaneously a modeling correction (price-impact term at portfolio scale) and a **compliance red line**: bidding patterns that systematically depress the index the fleet's CfDs benefit from are the market-manipulation scenario regulators are actively watching (the Jiangsu AI episode, mirrored). Cross-reference the §2.6 compliance bullet; this deserves standing review, not a one-time check. One caveat transfers with a twist: PJM's "contract form matters" warning (unit-contingent PPAs) maps in China to the **两个细则 assessment layer** — a third P&L stream outside the price identity that couples to the *declaration* (penalizing forecast error against declared schedule), pulling Q_da toward the best forecast even when the spread view says lean. PJM's BORD plays the same role but is priced and modest; provincial assessment formulas are rule-based and, for smaller plants, occasionally sharp enough to dominate the spread signal. --- ## 3. Data requirements (Model D specific) Per priority province: MLT window results (listed/cleared prices and volumes by segment — exchange disclosures, member portals), segment definitions and their revision history, coverage-mandate notices, coal benchmark and band notices, mechanism auction rules and past results, capacity/demand pipeline (provincial energy bureau plans, project commissioning data), and — hardest — a point-in-time archive of all of the above. The DD report's follow-up #4 (data-supply mapping) is a prerequisite for D1. --- ## 4. Build order | Phase | Deliverable | Depends on | |---|---|---| | D-1 | Province rulebook encoding (windows, segments, mandates, limits) for 2–3 priority provinces | DD follow-up #7 | | D-2 | Segment basis atlas: historical W_s vs. contemporaneous MLT price levels, by province/month/segment — the empirical proof that the basis is persistent and directional | Data mapping | | D-3 | D1 forecaster v1 (regression/GBM on the atlas features) + evaluation harness | D-2 | | D-4 | D2 shape-risk quantifier using Model B monthly scenarios | Model B upgrade | | D-5 | D3 optimizer + D4 negotiation-support pack (the sellable wedge: annual-window advisory) | D-3, D-4 | | D-6 | D5 mechanism auction bidder (seasonal product, aligned to provincial auction calendars) | D-3 | | D-7 | Rolling MPC loop + portfolio-tilt risk dashboard | D-5 | Note the commercial sequencing: D-2 (the atlas) is sellable as analytics almost immediately — the same "empirical atlas first" pattern as the PJM spread atlas — and D-5's annual-window advisory addresses the board-level pain identified in the DD report before any real-time infrastructure exists. --- ## 5. Open questions 1. Segment granularity arbitrage: how finely do priority provinces define segments, and where does hourly spot shape systematically escape the segment definitions? (Determines D1's resolution.) 2. Adjustment-right valuation: monthly/rolling windows give the book option value — should D3 price contracts with embedded flexibility as swaptions (option-adjusted basis) rather than forwards? Likely yes at maturity; defer to v2. 3. Green-power channel: when does bundling GECs (绿电交易) dominate plain MLT for a given client, and does D3 need a green/plain allocation dimension? 4. Retail-side mirror: the same machinery values contracts for 售电公司 buyers — is the buy-side a second market for Model D (and a hedge against the seller-side cyclical position)? 5. Inter-provincial layer: as province-to-province spot and MLT expand, does D need a cross-provincial arbitrage/allocation module for clients with multi-province portfolios? 6. The 2021–23 dataset problem: how to encode the tight-cycle episode (different band, different rules, renegotiations) without contaminating the buyer's-market model — regime dummies vs. separate models.