From 8796faca6365328d92037c497f3204e7ce7963e7 Mon Sep 17 00:00:00 2001 From: Thomas Bayes Date: Wed, 2 Sep 2026 06:29:08 -0400 Subject: [PATCH] M2: skill contracts, Python skill service, L2 eval harness with baseline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - packages/domain: ForecastRequest, BidOptimizationRequest/Result, ReportRequest, SkillReport (+ golden and invalid fixtures, exported to contracts/ and regenerated as pydantic models). - skills-py/vpp_skills: FastAPI service with versioned registry; load/PV/ price forecasts (same-day-type EWM point forecast, conformal residual quantiles — coverage test as acceptance gate); bid-optimization MILP on HiGHS (binary block participation, hard ledger energy bounds, exact Decimal fit of the rounded curve inside the bounds, revenue distribution over quantile paths); report generator whose every figure is a {tool_call_id, path} reference, with a verifier. 48 tests incl. hypothesis property test that bids respect ledger constraints. - packages/services: LedgerService.dayAheadBounds (the P7 cascade band handed to the optimizer); Decimal resolved once for CJS/ESM interop. - packages/evals: L2 metrics (MAPE, nRMSE, coverage, direction accuracy, naive/hindsight revenue baselines), HTTP skill client, rolling-origin harness that pushes each bid through the real ledger, CLI with --check/--write-baseline; committed baseline on the SYNTHETIC dataset (no historical Hubei data yet — baselines measure the harness, not KPI). - CI: evals job boots the skill service and fails on baseline digest drift. - docs/open-questions: A6 (flexibility marginal cost = offer floor); A4/B6 wired as placeholders. README/CLAUDE.md status → M2 done, M3 next. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01UoYoGYzHkFyv3ALenkRPhA --- .github/workflows/ci.yml | 27 + CLAUDE.md | 11 +- README.md | 18 +- .../bad-solver-status.json | 230 + .../skill_report/metric-without-ref.json | 22 + .../bid_optimization_request/da-basic.json | 436 + .../bid_optimization_result/da-basic.json | 230 + .../fixtures/forecast_request/price-da.json | 213 + .../report_request/da-bid-summary.json | 15 + .../fixtures/skill_report/da-bid-summary.json | 26 + .../schema/bid_optimization_request.json | 261 + contracts/schema/bid_optimization_result.json | 192 + contracts/schema/forecast_request.json | 106 + contracts/schema/report_request.json | 55 + contracts/schema/skill_report.json | 111 + docs/open-questions.md | 1 + package-lock.json | 20 + packages/domain/scripts/make-fixtures.ts | 114 + packages/domain/src/forecast.ts | 5 +- packages/domain/src/index.ts | 13 + packages/domain/src/skill.ts | 139 + .../evals/datasets/synthetic-hubei-v0.json | 47536 ++++++++++++++++ packages/evals/package.json | 24 + .../baselines/l2-synthetic-hubei-v0.json | 62 + packages/evals/src/cli.ts | 78 + packages/evals/src/client.ts | 75 + packages/evals/src/dataset.ts | 52 + packages/evals/src/harness.ts | 307 + packages/evals/src/index.ts | 4 + packages/evals/src/metrics.ts | 103 + packages/evals/test/harness.test.ts | 104 + packages/evals/test/metrics.test.ts | 61 + packages/evals/tsconfig.json | 8 + packages/services/src/decimal.ts | 12 + packages/services/src/index.ts | 1 + packages/services/src/ledger.ts | 48 +- packages/services/test/ledger.test.ts | 19 + skills-py/requirements.txt | 6 + skills-py/tests/__init__.py | 0 skills-py/tests/conftest.py | 36 + skills-py/tests/test_app.py | 60 + skills-py/tests/test_bid_milp.py | 140 + skills-py/tests/test_forecast.py | 81 + skills-py/tests/test_report.py | 63 + .../vpp_contracts/bid_optimization_request.py | 129 + .../vpp_contracts/bid_optimization_result.py | 83 + skills-py/vpp_contracts/forecast_request.py | 54 + skills-py/vpp_contracts/report_request.py | 34 + skills-py/vpp_contracts/skill_report.py | 53 + skills-py/vpp_skills/__init__.py | 15 + skills-py/vpp_skills/app.py | 81 + skills-py/vpp_skills/bid_milp.py | 188 + skills-py/vpp_skills/forecast.py | 125 + skills-py/vpp_skills/numeric.py | 55 + skills-py/vpp_skills/report.py | 124 + skills-py/vpp_skills/synthetic.py | 114 + 56 files changed, 52156 insertions(+), 24 deletions(-) create mode 100644 contracts/fixtures-invalid/bid_optimization_result/bad-solver-status.json create mode 100644 contracts/fixtures-invalid/skill_report/metric-without-ref.json create mode 100644 contracts/fixtures/bid_optimization_request/da-basic.json create mode 100644 contracts/fixtures/bid_optimization_result/da-basic.json create mode 100644 contracts/fixtures/forecast_request/price-da.json create mode 100644 contracts/fixtures/report_request/da-bid-summary.json create mode 100644 contracts/fixtures/skill_report/da-bid-summary.json create mode 100644 contracts/schema/bid_optimization_request.json create mode 100644 contracts/schema/bid_optimization_result.json create mode 100644 contracts/schema/forecast_request.json create mode 100644 contracts/schema/report_request.json create mode 100644 contracts/schema/skill_report.json create mode 100644 packages/domain/src/skill.ts create mode 100644 packages/evals/datasets/synthetic-hubei-v0.json create mode 100644 packages/evals/package.json create mode 100644 packages/evals/reports/baselines/l2-synthetic-hubei-v0.json create mode 100644 packages/evals/src/cli.ts create mode 100644 packages/evals/src/client.ts create mode 100644 packages/evals/src/dataset.ts create mode 100644 packages/evals/src/harness.ts create mode 100644 packages/evals/src/index.ts create mode 100644 packages/evals/src/metrics.ts create mode 100644 packages/evals/test/harness.test.ts create mode 100644 packages/evals/test/metrics.test.ts create mode 100644 packages/evals/tsconfig.json create mode 100644 packages/services/src/decimal.ts create mode 100644 skills-py/tests/__init__.py create mode 100644 skills-py/tests/conftest.py create mode 100644 skills-py/tests/test_app.py create mode 100644 skills-py/tests/test_bid_milp.py create mode 100644 skills-py/tests/test_forecast.py create mode 100644 skills-py/tests/test_report.py create mode 100644 skills-py/vpp_contracts/bid_optimization_request.py create mode 100644 skills-py/vpp_contracts/bid_optimization_result.py create mode 100644 skills-py/vpp_contracts/forecast_request.py create mode 100644 skills-py/vpp_contracts/report_request.py create mode 100644 skills-py/vpp_contracts/skill_report.py create mode 100644 skills-py/vpp_skills/__init__.py create mode 100644 skills-py/vpp_skills/app.py create mode 100644 skills-py/vpp_skills/bid_milp.py create mode 100644 skills-py/vpp_skills/forecast.py create mode 100644 skills-py/vpp_skills/numeric.py create mode 100644 skills-py/vpp_skills/report.py create mode 100644 skills-py/vpp_skills/synthetic.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a35dd80..e054f82 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,3 +44,30 @@ jobs: - run: bash scripts/generate_models.sh - run: git diff --exit-code -- vpp_contracts/ - run: python -m pytest -q + + # L2 eval harness end-to-end (docs/12): TS harness ↔ live Python skill + # service on the committed synthetic dataset. The run must reproduce the + # committed baseline digest exactly — a skill change that moves a metric + # must come with a reviewed baseline update (docs/12 §3 gate). + evals: + runs-on: ubuntu-latest + needs: [typescript, python] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: npm + - uses: actions/setup-python@v5 + with: + python-version-file: skills-py/.python-version + cache: pip + cache-dependency-path: skills-py/requirements.txt + - run: npm ci + - run: pip install -r skills-py/requirements.txt + - name: start skill service + working-directory: skills-py + run: | + python -m uvicorn vpp_skills.app:app --port 8000 --log-level warning & + for i in $(seq 1 40); do curl -sf http://127.0.0.1:8000/health && break; sleep 0.5; done + - run: npm run eval -w @vpp/evals -- --check diff --git a/CLAUDE.md b/CLAUDE.md index 53e9ac5..22791b1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,10 +6,13 @@ docs win — or write an ADR changing the doc first. ## Current phase -Docs complete; M1 implemented (schemas, contracts pipeline, ledger, snapshot, -time-series, relational and ingestion services, dual-side CI). Storage is -in-memory reference semantics — persistent adapters arrive with M3. Next is -M2. Build order is ROADMAP.md (M1→M5). +Docs complete; M1 and M2 implemented (schemas + contracts pipeline; ledger, +snapshot, time-series, relational, ingestion services; Python skill service +with forecast/MILP/report skills; L2 eval harness with committed baseline). +Storage is in-memory reference semantics — persistent adapters arrive with M3. +The eval dataset is synthetic until historical data lands. Next is M3. Build +order is ROADMAP.md (M1→M5). A skill change that moves an L2 metric must +update the baseline in the same change (`npm run eval -w @vpp/evals -- --write-baseline`). Do not start a milestone's work before its predecessor's acceptance criteria are testable, and do not build phase-2 items (edge control links, federation, interaction/load-control agents) unless explicitly asked. diff --git a/README.md b/README.md index 1f51a57..da2e5c9 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,16 @@ a deterministic safety chain (rule check → simulation → envelope/human appro execution permit) governs everything before any external effect. **The LLM never computes numbers and never touches the second-level control loop.** -**Status: M1 (data foundation & contracts) implemented.** Design docs 00–13 are -complete; implementation follows [ROADMAP.md](ROADMAP.md). Present today: -domain schemas (`packages/domain`), the TS↔Python contract pipeline -(`contracts/`, `skills-py/vpp_contracts`), and the ledger, snapshot, -time-series, relational and ingestion services (`packages/services`). M2 -(Python skills + eval baseline) is next. +**Status: M1 and M2 implemented.** Design docs 00–13 are complete; +implementation follows [ROADMAP.md](ROADMAP.md). Present today: domain schemas +(`packages/domain`), the TS↔Python contract pipeline (`contracts/`, +`skills-py/vpp_contracts`), ledger/snapshot/time-series/relational/ingestion +services (`packages/services`), the Python skill service — load/PV/price +forecasts with calibrated quantiles, bid-optimization MILP, report generator +(`skills-py/vpp_skills`) — and the L2 eval harness with a committed baseline +(`packages/evals`). The eval dataset is **synthetic** (no historical Hubei data +yet); baselines on it measure the harness, not the KPI. M3 (runtime, agents, +safety chain) is next. ## Development @@ -21,12 +25,14 @@ pydantic models use `StrEnum` and PEP 604 unions). ```sh npm ci npm run check # typecheck, re-export contracts, run TS tests +npm run eval -w @vpp/evals -- --check # L2 harness vs baseline (needs the skill service below) cd skills-py uv venv --python 3.11 .venv && uv pip install -r requirements.txt # or python3.11 -m venv source .venv/bin/activate bash scripts/generate_models.sh # regenerate pydantic models (committed, never hand-edited) python -m pytest -q +python -m uvicorn vpp_skills.app:app --port 8000 # skill service for the eval harness ``` CI (`.github/workflows/ci.yml`) runs both sides and fails if `contracts/` or diff --git a/contracts/fixtures-invalid/bid_optimization_result/bad-solver-status.json b/contracts/fixtures-invalid/bid_optimization_result/bad-solver-status.json new file mode 100644 index 0000000..b5ff7f6 --- /dev/null +++ b/contracts/fixtures-invalid/bid_optimization_result/bad-solver-status.json @@ -0,0 +1,230 @@ +{ + "market_date": "2026-03-15", + "prices_yuan_per_mwh": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00" + ] + }, + "quantities_mwh": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5" + ] + }, + "daily_energy_mwh": "1200.0", + "expected_revenue_yuan": "510600.00", + "revenue_distribution_yuan": { + "p10": "432000.00", + "p50": "510600.00", + "p90": "588000.00" + }, + "position_bounds": { + "ledger_version": 42, + "daily_energy_min_mwh": "1140.0", + "daily_energy_max_mwh": "1260.0" + }, + "solver": { + "name": "highs", + "version": "1.7.0", + "status": "SOLVED", + "objective_value": "487020.00", + "wall_time_ms": 12 + }, + "binding_constraints": [ + "daily_energy_max" + ], + "skill_version": "1.0.0" +} diff --git a/contracts/fixtures-invalid/skill_report/metric-without-ref.json b/contracts/fixtures-invalid/skill_report/metric-without-ref.json new file mode 100644 index 0000000..776d695 --- /dev/null +++ b/contracts/fixtures-invalid/skill_report/metric-without-ref.json @@ -0,0 +1,22 @@ +{ + "id": "rep-001", + "kind": "DAY_AHEAD_BID_SUMMARY", + "market_date": "2026-03-15", + "sections": [ + { + "title": "Bid summary", + "metrics": [ + { + "name": "expected_revenue", + "value": "510600.00", + "unit": "yuan" + } + ], + "notes": [ + "all figures reference solver output tc-001" + ] + } + ], + "skill_version": "1.0.0", + "generated_at": "2026-03-14T08:30:00Z" +} diff --git a/contracts/fixtures/bid_optimization_request/da-basic.json b/contracts/fixtures/bid_optimization_request/da-basic.json new file mode 100644 index 0000000..0836f5c --- /dev/null +++ b/contracts/fixtures/bid_optimization_request/da-basic.json @@ -0,0 +1,436 @@ +{ + "market_date": "2026-03-15", + "price_forecast": { + "id": "fc-price-001", + "kind": "PRICE", + "market_date": "2026-03-15", + "unit": "yuan_per_mwh", + "quantiles": { + "p10": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00", + "360.00" + ] + }, + "p50": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50", + "425.50" + ] + }, + "p90": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00", + "490.00" + ] + } + }, + "model": { + "name": "price-forecast", + "version": "1.0.0" + }, + "features_snapshot_ref": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "generated_at": "2026-03-14T06:00:00Z" + }, + "adjustable_capacity_mw": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0", + "60.0" + ] + }, + "position_bounds": { + "ledger_version": 42, + "daily_energy_min_mwh": "1140.0", + "daily_energy_max_mwh": "1260.0" + }, + "risk": { + "risk_aversion": "0.3", + "commitment_buffer_k": "0.9", + "min_block_mwh": "1.0", + "marginal_cost_yuan_per_mwh": "0" + } +} diff --git a/contracts/fixtures/bid_optimization_result/da-basic.json b/contracts/fixtures/bid_optimization_result/da-basic.json new file mode 100644 index 0000000..c296a8d --- /dev/null +++ b/contracts/fixtures/bid_optimization_result/da-basic.json @@ -0,0 +1,230 @@ +{ + "market_date": "2026-03-15", + "prices_yuan_per_mwh": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00", + "0.00" + ] + }, + "quantities_mwh": { + "interval_minutes": 15, + "date": "2026-03-15", + "values": [ + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5", + "12.5" + ] + }, + "daily_energy_mwh": "1200.0", + "expected_revenue_yuan": "510600.00", + "revenue_distribution_yuan": { + "p10": "432000.00", + "p50": "510600.00", + "p90": "588000.00" + }, + "position_bounds": { + "ledger_version": 42, + "daily_energy_min_mwh": "1140.0", + "daily_energy_max_mwh": "1260.0" + }, + "solver": { + "name": "highs", + "version": "1.7.0", + "status": "OPTIMAL", + "objective_value": "487020.00", + "wall_time_ms": 12 + }, + "binding_constraints": [ + "daily_energy_max" + ], + "skill_version": "1.0.0" +} diff --git a/contracts/fixtures/forecast_request/price-da.json b/contracts/fixtures/forecast_request/price-da.json new file mode 100644 index 0000000..9fe06b6 --- /dev/null +++ b/contracts/fixtures/forecast_request/price-da.json @@ -0,0 +1,213 @@ +{ + "kind": "PRICE", + "market_date": "2026-03-15", + "unit": "yuan_per_mwh", + "history": [ + { + "interval_minutes": 15, + "date": "2026-03-13", + "values": [ + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20", + "398.20" + ] + }, + { + "interval_minutes": 15, + "date": "2026-03-14", + "values": [ + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75", + "410.75" + ] + } + ], + "exogenous": {}, + "features_snapshot_ref": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +} diff --git a/contracts/fixtures/report_request/da-bid-summary.json b/contracts/fixtures/report_request/da-bid-summary.json new file mode 100644 index 0000000..eb5a457 --- /dev/null +++ b/contracts/fixtures/report_request/da-bid-summary.json @@ -0,0 +1,15 @@ +{ + "kind": "DAY_AHEAD_BID_SUMMARY", + "market_date": "2026-03-15", + "sources": [ + { + "tool_call_id": "tc-001", + "tool": "bid-optimization-milp", + "version": "1.0.0", + "output": { + "expected_revenue_yuan": "510600.00", + "daily_energy_mwh": "1200.0" + } + } + ] +} diff --git a/contracts/fixtures/skill_report/da-bid-summary.json b/contracts/fixtures/skill_report/da-bid-summary.json new file mode 100644 index 0000000..0fd609d --- /dev/null +++ b/contracts/fixtures/skill_report/da-bid-summary.json @@ -0,0 +1,26 @@ +{ + "id": "rep-001", + "kind": "DAY_AHEAD_BID_SUMMARY", + "market_date": "2026-03-15", + "sections": [ + { + "title": "Bid summary", + "metrics": [ + { + "name": "expected_revenue", + "value": "510600.00", + "unit": "yuan", + "ref": { + "tool_call_id": "tc-001", + "path": "expected_revenue_yuan" + } + } + ], + "notes": [ + "all figures reference solver output tc-001" + ] + } + ], + "skill_version": "1.0.0", + "generated_at": "2026-03-14T08:30:00Z" +} diff --git a/contracts/schema/bid_optimization_request.json b/contracts/schema/bid_optimization_request.json new file mode 100644 index 0000000..b7a6813 --- /dev/null +++ b/contracts/schema/bid_optimization_request.json @@ -0,0 +1,261 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "market_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "price_forecast": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "kind": { + "type": "string", + "enum": [ + "LOAD", + "PV", + "PRICE" + ] + }, + "market_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "unit": { + "type": "string", + "enum": [ + "mw", + "yuan_per_mwh" + ] + }, + "quantiles": { + "type": "object", + "properties": { + "p10": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + }, + "p50": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + }, + "p90": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + } + }, + "required": [ + "p10", + "p50", + "p90" + ], + "additionalProperties": false + }, + "model": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "version": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "name", + "version" + ], + "additionalProperties": false + }, + "features_snapshot_ref": { + "type": "string", + "pattern": "^[0-9a-f]{64}$" + }, + "generated_at": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" + } + }, + "required": [ + "id", + "kind", + "market_date", + "unit", + "quantiles", + "model", + "features_snapshot_ref", + "generated_at" + ], + "additionalProperties": false + }, + "adjustable_capacity_mw": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + }, + "position_bounds": { + "type": "object", + "properties": { + "ledger_version": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "daily_energy_min_mwh": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "daily_energy_max_mwh": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + }, + "required": [ + "ledger_version", + "daily_energy_min_mwh", + "daily_energy_max_mwh" + ], + "additionalProperties": false + }, + "risk": { + "type": "object", + "properties": { + "risk_aversion": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "commitment_buffer_k": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "min_block_mwh": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "marginal_cost_yuan_per_mwh": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + }, + "required": [ + "risk_aversion", + "commitment_buffer_k", + "min_block_mwh", + "marginal_cost_yuan_per_mwh" + ], + "additionalProperties": false + } + }, + "required": [ + "market_date", + "price_forecast", + "adjustable_capacity_mw", + "position_bounds", + "risk" + ], + "additionalProperties": false, + "$id": "https://vpp-ai-platform/contracts/bid_optimization_request.json", + "title": "BidOptimizationRequest" +} diff --git a/contracts/schema/bid_optimization_result.json b/contracts/schema/bid_optimization_result.json new file mode 100644 index 0000000..67cd173 --- /dev/null +++ b/contracts/schema/bid_optimization_result.json @@ -0,0 +1,192 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "market_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "prices_yuan_per_mwh": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + }, + "quantities_mwh": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + }, + "daily_energy_mwh": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "expected_revenue_yuan": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "revenue_distribution_yuan": { + "type": "object", + "properties": { + "p10": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "p50": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "p90": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + }, + "required": [ + "p10", + "p50", + "p90" + ], + "additionalProperties": false + }, + "position_bounds": { + "type": "object", + "properties": { + "ledger_version": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "daily_energy_min_mwh": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "daily_energy_max_mwh": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + }, + "required": [ + "ledger_version", + "daily_energy_min_mwh", + "daily_energy_max_mwh" + ], + "additionalProperties": false + }, + "solver": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "version": { + "type": "string", + "minLength": 1 + }, + "status": { + "type": "string", + "enum": [ + "OPTIMAL", + "INFEASIBLE", + "TIME_LIMIT", + "ERROR" + ] + }, + "objective_value": { + "anyOf": [ + { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + { + "type": "null" + } + ] + }, + "wall_time_ms": { + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + } + }, + "required": [ + "name", + "version", + "status", + "objective_value", + "wall_time_ms" + ], + "additionalProperties": false + }, + "binding_constraints": { + "type": "array", + "items": { + "type": "string" + } + }, + "skill_version": { + "type": "string", + "pattern": "^\\d+\\.\\d+\\.\\d+$" + } + }, + "required": [ + "market_date", + "prices_yuan_per_mwh", + "quantities_mwh", + "daily_energy_mwh", + "expected_revenue_yuan", + "revenue_distribution_yuan", + "position_bounds", + "solver", + "binding_constraints", + "skill_version" + ], + "additionalProperties": false, + "$id": "https://vpp-ai-platform/contracts/bid_optimization_result.json", + "title": "BidOptimizationResult" +} diff --git a/contracts/schema/forecast_request.json b/contracts/schema/forecast_request.json new file mode 100644 index 0000000..fb2294f --- /dev/null +++ b/contracts/schema/forecast_request.json @@ -0,0 +1,106 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "LOAD", + "PV", + "PRICE" + ] + }, + "market_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "unit": { + "type": "string", + "enum": [ + "mw", + "yuan_per_mwh" + ] + }, + "history": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + } + }, + "exogenous": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "interval_minutes": { + "type": "number", + "const": 15 + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "values": { + "minItems": 96, + "maxItems": 96, + "type": "array", + "items": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + } + } + }, + "required": [ + "interval_minutes", + "date", + "values" + ], + "additionalProperties": false + } + }, + "features_snapshot_ref": { + "type": "string", + "pattern": "^[0-9a-f]{64}$" + } + }, + "required": [ + "kind", + "market_date", + "unit", + "history", + "exogenous", + "features_snapshot_ref" + ], + "additionalProperties": false, + "$id": "https://vpp-ai-platform/contracts/forecast_request.json", + "title": "ForecastRequest" +} diff --git a/contracts/schema/report_request.json b/contracts/schema/report_request.json new file mode 100644 index 0000000..482ca41 --- /dev/null +++ b/contracts/schema/report_request.json @@ -0,0 +1,55 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "DAY_AHEAD_BID_SUMMARY", + "FORECAST_EVAL", + "BID_BACKTEST" + ] + }, + "market_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "sources": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "properties": { + "tool_call_id": { + "type": "string", + "minLength": 1 + }, + "tool": { + "type": "string", + "minLength": 1 + }, + "version": { + "type": "string", + "pattern": "^\\d+\\.\\d+\\.\\d+$" + }, + "output": {} + }, + "required": [ + "tool_call_id", + "tool", + "version", + "output" + ], + "additionalProperties": false + } + } + }, + "required": [ + "kind", + "market_date", + "sources" + ], + "additionalProperties": false, + "$id": "https://vpp-ai-platform/contracts/report_request.json", + "title": "ReportRequest" +} diff --git a/contracts/schema/skill_report.json b/contracts/schema/skill_report.json new file mode 100644 index 0000000..b565a67 --- /dev/null +++ b/contracts/schema/skill_report.json @@ -0,0 +1,111 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "kind": { + "type": "string", + "enum": [ + "DAY_AHEAD_BID_SUMMARY", + "FORECAST_EVAL", + "BID_BACKTEST" + ] + }, + "market_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { + "type": "string", + "minLength": 1 + }, + "metrics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "value": { + "type": "string", + "pattern": "^-?\\d+(\\.\\d+)?$" + }, + "unit": { + "type": "string", + "minLength": 1 + }, + "ref": { + "type": "object", + "properties": { + "tool_call_id": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "tool_call_id", + "path" + ], + "additionalProperties": false + } + }, + "required": [ + "name", + "value", + "unit", + "ref" + ], + "additionalProperties": false + } + }, + "notes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "title", + "metrics", + "notes" + ], + "additionalProperties": false + } + }, + "skill_version": { + "type": "string", + "pattern": "^\\d+\\.\\d+\\.\\d+$" + }, + "generated_at": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" + } + }, + "required": [ + "id", + "kind", + "market_date", + "sections", + "skill_version", + "generated_at" + ], + "additionalProperties": false, + "$id": "https://vpp-ai-platform/contracts/skill_report.json", + "title": "SkillReport" +} diff --git a/docs/open-questions.md b/docs/open-questions.md index b7f431f..0306f43 100644 --- a/docs/open-questions.md +++ b/docs/open-questions.md @@ -14,6 +14,7 @@ values for items on this list** — wire named config with placeholder + an | A3 | 日内市场机制(是否开、频次、截止) | `market.intraday` | | A4 | 偏差考核规则:偏差带、考核价格机制(→ MILP 目标函数与风险口径) | `market.deviation` | | A5 | 中长期持仓对日前申报的约束形式(分解曲线偏差带) | `ledger.da_bounds` | +| A6 | 灵活性资源边际成本口径(用户补偿、设备损耗)——报价优化的报价下限;未定前按 0(价格接受者)申报 | `bidding.marginal_cost` | ## B. 包络与风控参数(owner: 运营团队 · blocks M4 envelopes + M5 breakers) diff --git a/package-lock.json b/package-lock.json index f09ddae..79d4371 100644 --- a/package-lock.json +++ b/package-lock.json @@ -979,6 +979,10 @@ "resolved": "packages/domain", "link": true }, + "node_modules/@vpp/evals": { + "resolved": "packages/evals", + "link": true + }, "node_modules/@vpp/services": { "resolved": "packages/services", "link": true @@ -1246,6 +1250,7 @@ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -1479,6 +1484,7 @@ "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", @@ -1683,6 +1689,20 @@ "vitest": "^3.0.0" } }, + "packages/evals": { + "name": "@vpp/evals", + "version": "0.1.0", + "dependencies": { + "@vpp/domain": "*", + "@vpp/services": "*" + }, + "devDependencies": { + "@types/node": "^26.4.1", + "tsx": "^4.19.0", + "typescript": "^5.6.0", + "vitest": "^3.0.0" + } + }, "packages/services": { "name": "@vpp/services", "version": "0.1.0", diff --git a/packages/domain/scripts/make-fixtures.ts b/packages/domain/scripts/make-fixtures.ts index 5025f0b..121c81c 100644 --- a/packages/domain/scripts/make-fixtures.ts +++ b/packages/domain/scripts/make-fixtures.ts @@ -150,6 +150,104 @@ const valid: Record> = { generated_at: T0, }, }, + forecast_request: { + 'price-da': { + kind: 'PRICE', + market_date: DATE, + unit: 'yuan_per_mwh', + history: [curve('398.20', '2026-03-13'), curve('410.75', '2026-03-14')], + exogenous: {}, + features_snapshot_ref: REF_A, + }, + }, + bid_optimization_request: { + 'da-basic': { + market_date: DATE, + price_forecast: { + id: 'fc-price-001', + kind: 'PRICE', + market_date: DATE, + unit: 'yuan_per_mwh', + quantiles: { p10: curve('360.00'), p50: curve('425.50'), p90: curve('490.00') }, + model: { name: 'price-forecast', version: '1.0.0' }, + features_snapshot_ref: REF_A, + generated_at: T0, + }, + adjustable_capacity_mw: curve('60.0'), + position_bounds: { + ledger_version: 42, + daily_energy_min_mwh: '1140.0', + daily_energy_max_mwh: '1260.0', + }, + risk: { + risk_aversion: '0.3', + commitment_buffer_k: '0.9', + min_block_mwh: '1.0', + marginal_cost_yuan_per_mwh: '0', + }, + }, + }, + bid_optimization_result: { + 'da-basic': { + market_date: DATE, + prices_yuan_per_mwh: curve('0.00'), + quantities_mwh: curve('12.5'), + daily_energy_mwh: '1200.0', + expected_revenue_yuan: '510600.00', + revenue_distribution_yuan: { p10: '432000.00', p50: '510600.00', p90: '588000.00' }, + position_bounds: { + ledger_version: 42, + daily_energy_min_mwh: '1140.0', + daily_energy_max_mwh: '1260.0', + }, + solver: { + name: 'highs', + version: '1.7.0', + status: 'OPTIMAL', + objective_value: '487020.00', + wall_time_ms: 12, + }, + binding_constraints: ['daily_energy_max'], + skill_version: '1.0.0', + }, + }, + report_request: { + 'da-bid-summary': { + kind: 'DAY_AHEAD_BID_SUMMARY', + market_date: DATE, + sources: [ + { + tool_call_id: 'tc-001', + tool: 'bid-optimization-milp', + version: '1.0.0', + output: { expected_revenue_yuan: '510600.00', daily_energy_mwh: '1200.0' }, + }, + ], + }, + }, + skill_report: { + 'da-bid-summary': { + id: 'rep-001', + kind: 'DAY_AHEAD_BID_SUMMARY', + market_date: DATE, + sections: [ + { + title: 'Bid summary', + metrics: [ + { + name: 'expected_revenue', + value: '510600.00', + unit: 'yuan', + ref: { tool_call_id: 'tc-001', path: 'expected_revenue_yuan' }, + }, + ], + notes: ['all figures reference solver output tc-001'], + }, + ], + skill_version: '1.0.0', + generated_at: T1, + }, + }, situation_report: { 'normal-day': { id: 'sit-001', @@ -219,6 +317,22 @@ const invalid: Record> = { // digest not sha256 hex 'bad-digest': { ...(valid['approval']!['approve'] as object), proposal_digest: 'not-a-digest' }, }, + skill_report: { + // a metric without a lineage reference — the one thing a report may never contain (I1) + 'metric-without-ref': (() => { + const o = structuredClone(valid['skill_report']!['da-bid-summary']) as any + delete o.sections[0].metrics[0].ref + return o + })(), + }, + bid_optimization_result: { + // solver status outside the enum + 'bad-solver-status': (() => { + const o = structuredClone(valid['bid_optimization_result']!['da-basic']) as any + o.solver.status = 'SOLVED' + return o + })(), + }, position_update: { // missing optimistic-concurrency field 'missing-version': (() => { diff --git a/packages/domain/src/forecast.ts b/packages/domain/src/forecast.ts index 0cb07dc..32c1a19 100644 --- a/packages/domain/src/forecast.ts +++ b/packages/domain/src/forecast.ts @@ -5,9 +5,12 @@ import { Curve96, Id, IsoUtc, MarketDate, SnapshotRef } from './common.js' * Forecast output contract (docs/05 §2.1): quantile intervals are mandatory — * bid risk assessment depends on calibrated bands, not point values. */ +export const ForecastKind = z.enum(['LOAD', 'PV', 'PRICE']) +export type ForecastKind = z.infer + export const ForecastBundle = z.object({ id: Id, - kind: z.enum(['LOAD', 'PV', 'PRICE']), + kind: ForecastKind, market_date: MarketDate, unit: z.enum(['mw', 'yuan_per_mwh']), quantiles: z.object({ diff --git a/packages/domain/src/index.ts b/packages/domain/src/index.ts index 0962ead..eca63a1 100644 --- a/packages/domain/src/index.ts +++ b/packages/domain/src/index.ts @@ -8,6 +8,13 @@ import { LedgerView, PositionUpdate } from './ledger.js' import { Proposal } from './proposal.js' import { ResourceProfile } from './resource.js' import { SituationReport } from './situation.js' +import { + BidOptimizationRequest, + BidOptimizationResult, + ForecastRequest, + ReportRequest, + SkillReport, +} from './skill.js' export * from './common.js' export * from './proposal.js' @@ -19,6 +26,7 @@ export * from './situation.js' export * from './resource.js' export * from './case.js' export * from './event.js' +export * from './skill.js' /** * Registry driving the contracts pipeline: keys become schema/fixture/module @@ -37,4 +45,9 @@ export const schemaRegistry: Record = { resource_profile: ResourceProfile, decision_case: DecisionCase, event_envelope: EventEnvelope, + forecast_request: ForecastRequest, + bid_optimization_request: BidOptimizationRequest, + bid_optimization_result: BidOptimizationResult, + report_request: ReportRequest, + skill_report: SkillReport, } diff --git a/packages/domain/src/skill.ts b/packages/domain/src/skill.ts new file mode 100644 index 0000000..0da5ef5 --- /dev/null +++ b/packages/domain/src/skill.ts @@ -0,0 +1,139 @@ +import { z } from 'zod' +import { Curve96, DecimalString, Id, IsoUtc, MarketDate, SnapshotRef } from './common.js' +import { ForecastBundle, ForecastKind } from './forecast.js' + +/** + * Skill I/O contracts (docs/05 §2, docs/11 §3). These cross the TS↔Python + * boundary: the runtime's registerSkill wrapper validates them outbound, the + * FastAPI service validates them inbound with the generated pydantic models. + * Skills are stateless — everything they need is in the request; everything + * lineage needs is in the response. + */ + +export const SkillVersion = z.string().regex(/^\d+\.\d+\.\d+$/) + +/** Forecast skills (load / PV / price): history in, quantile bundle out. */ +export const ForecastRequest = z.object({ + kind: ForecastKind, + market_date: MarketDate, + unit: z.enum(['mw', 'yuan_per_mwh']), + /** Actuals for past market dates, ascending, all strictly before market_date. */ + history: z.array(Curve96).min(1), + /** Exogenous forecasts for market_date keyed by name (e.g. irradiance_w_per_m2). */ + exogenous: z.record(z.string(), Curve96), + /** Caller's snapshot of the assembled feature set; echoed into ForecastBundle. */ + features_snapshot_ref: SnapshotRef, +}) +export type ForecastRequest = z.infer + +/** + * Daily energy bounds derived from the position ledger by the TS side + * (LedgerService.dayAheadBounds — the P7 cascade lives in one place). The + * optimizer treats them as hard constraints and echoes them so the rule check + * can verify the bid against the same ledger version. + */ +export const PositionBounds = z.object({ + ledger_version: z.int().nonnegative(), + daily_energy_min_mwh: DecimalString, + daily_energy_max_mwh: DecimalString, +}) +export type PositionBounds = z.infer + +export const BidRiskParams = z.object({ + /** 0 = maximise P50 revenue, 1 = maximise P10 (floor) revenue. */ + risk_aversion: DecimalString, + /** Commitment buffer k: sellable share of certified capacity. OPEN-QUESTION B6. */ + commitment_buffer_k: DecimalString, + /** Smallest non-zero interval quantity the market accepts. */ + min_block_mwh: DecimalString, + /** + * Marginal cost of delivering flexibility (user compensation, degradation), + * used as the offer-price floor: a seller in a uniform-price market offers + * at cost and lets the forecast allocate quantity. OPEN-QUESTION A6. + */ + marginal_cost_yuan_per_mwh: DecimalString, +}) +export type BidRiskParams = z.infer + +export const BidOptimizationRequest = z.object({ + market_date: MarketDate, + price_forecast: ForecastBundle, + /** Certified adjustable (sellable) capacity per interval, MW. */ + adjustable_capacity_mw: Curve96, + position_bounds: PositionBounds, + risk: BidRiskParams, +}) +export type BidOptimizationRequest = z.infer + +export const SolverStatus = z.enum(['OPTIMAL', 'INFEASIBLE', 'TIME_LIMIT', 'ERROR']) + +export const BidOptimizationResult = z.object({ + market_date: MarketDate, + prices_yuan_per_mwh: Curve96, + quantities_mwh: Curve96, + daily_energy_mwh: DecimalString, + /** Revenue at the P50 price path, given the bid clears where offer ≤ price. */ + expected_revenue_yuan: DecimalString, + revenue_distribution_yuan: z.object({ + p10: DecimalString, + p50: DecimalString, + p90: DecimalString, + }), + position_bounds: PositionBounds, + solver: z.object({ + name: z.string().min(1), + version: z.string().min(1), + status: SolverStatus, + objective_value: DecimalString.nullable(), + wall_time_ms: z.int().nonnegative(), + }), + binding_constraints: z.array(z.string()), + skill_version: SkillVersion, +}) +export type BidOptimizationResult = z.infer + +/** A number in a report is never typed in: it is a {tool_call_id, path} reference (I1/P2). */ +export const MetricRef = z.object({ + tool_call_id: Id, + /** JSON-pointer-like dotted path into that tool call's output. */ + path: z.string().min(1), +}) + +export const ReportSource = z.object({ + tool_call_id: Id, + tool: Id, + version: SkillVersion, + output: z.unknown(), +}) + +export const ReportKind = z.enum(['DAY_AHEAD_BID_SUMMARY', 'FORECAST_EVAL', 'BID_BACKTEST']) + +export const ReportRequest = z.object({ + kind: ReportKind, + market_date: MarketDate, + sources: z.array(ReportSource).min(1), +}) +export type ReportRequest = z.infer + +export const SkillReport = z.object({ + id: Id, + kind: ReportKind, + market_date: MarketDate, + sections: z.array( + z.object({ + title: z.string().min(1), + metrics: z.array( + z.object({ + name: z.string().min(1), + value: DecimalString, + unit: z.string().min(1), + ref: MetricRef, + }), + ), + notes: z.array(z.string()), + }), + ), + skill_version: SkillVersion, + generated_at: IsoUtc, +}) +export type SkillReport = z.infer diff --git a/packages/evals/datasets/synthetic-hubei-v0.json b/packages/evals/datasets/synthetic-hubei-v0.json new file mode 100644 index 0000000..fbdf6e7 --- /dev/null +++ b/packages/evals/datasets/synthetic-hubei-v0.json @@ -0,0 +1,47536 @@ +{ + "meta": { + "name": "synthetic-hubei-v0-2026-01-01-120d", + "synthetic": true, + "note": "SYNTHETIC shape-only placeholder. Replace with historical Hubei replay data; baselines on this set measure the harness, not the business KPI.", + "generator": "vpp_skills.synthetic", + "generator_version": "0.1.0", + "seed": 20260301, + "interval_minutes": 15, + "peak_load_mw": "80.000", + "pv_capacity_mw": "30.000", + "adjustable_capacity_mw": "24.000" + }, + "days": [ + { + "date": "2026-01-01", + "weekend": false, + "load_mw": [ + "38.603", + "37.519", + "37.308", + "35.757", + "35.969", + "35.354", + "33.256", + "33.705", + "33.088", + "33.130", + "30.790", + "32.311", + "30.862", + "30.958", + "31.802", + "31.639", + "32.378", + "32.446", + "33.212", + "35.530", + "35.528", + "36.689", + "37.769", + "39.593", + "40.324", + "38.812", + "41.928", + "42.419", + "43.879", + "45.904", + "45.698", + "46.951", + "49.298", + "50.329", + "52.155", + "52.866", + "54.618", + "56.551", + "54.700", + "59.139", + "61.582", + "61.508", + "62.070", + "63.340", + "62.718", + "62.198", + "60.421", + "62.488", + "60.764", + "58.608", + "58.198", + "55.461", + "55.029", + "52.784", + "52.363", + "51.574", + "50.021", + "48.372", + "47.498", + "48.054", + "48.061", + "47.622", + "46.435", + "46.183", + "47.135", + "48.864", + "49.474", + "53.001", + "54.632", + "56.944", + "55.996", + "59.764", + "60.782", + "64.460", + "69.537", + "71.796", + "66.933", + "71.733", + "70.316", + "70.289", + "70.027", + "67.695", + "67.384", + "64.058", + "61.299", + "61.862", + "56.513", + "56.546", + "53.586", + "49.418", + "49.720", + "49.890", + "46.627", + "46.665", + "44.847", + "46.054" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.381", + "1.047", + "1.681", + "2.502", + "4.012", + "4.543", + "5.595", + "5.845", + "7.934", + "8.107", + "9.330", + "10.629", + "12.193", + "12.625", + "13.133", + "14.553", + "14.929", + "15.255", + "16.234", + "17.700", + "17.603", + "17.211", + "18.404", + "17.629", + "17.671", + "19.101", + "17.867", + "18.432", + "17.105", + "18.293", + "15.443", + "15.561", + "15.796", + "14.704", + "13.237", + "13.185", + "11.573", + "10.470", + "9.938", + "8.554", + "7.891", + "7.324", + "5.696", + "4.708", + "3.333", + "2.780", + "1.624", + "0.960", + "0.387", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "227.85", + "229.80", + "230.00", + "207.08", + "196.36", + "194.97", + "187.96", + "175.75", + "175.05", + "170.17", + "157.56", + "164.42", + "156.03", + "163.02", + "145.08", + "161.47", + "158.60", + "172.40", + "172.64", + "174.53", + "182.31", + "187.97", + "202.59", + "204.26", + "210.80", + "213.90", + "246.14", + "228.40", + "241.75", + "264.19", + "267.34", + "262.78", + "255.73", + "294.81", + "315.80", + "307.08", + "314.48", + "321.82", + "318.77", + "347.93", + "348.98", + "363.63", + "366.72", + "367.91", + "384.39", + "361.13", + "364.35", + "345.71", + "340.03", + "338.27", + "324.32", + "330.39", + "310.92", + "294.13", + "278.90", + "276.60", + "279.67", + "299.09", + "259.31", + "266.42", + "276.30", + "288.95", + "262.53", + "295.94", + "304.08", + "308.37", + "317.83", + "337.08", + "351.22", + "374.78", + "412.33", + "428.62", + "427.40", + "483.57", + "516.13", + "518.98", + "512.45", + "532.48", + "522.75", + "517.12", + "455.68", + "466.80", + "447.87", + "413.70", + "406.98", + "346.95", + "355.32", + "332.09", + "324.84", + "293.72", + "308.26", + "301.85", + "277.58", + "273.72", + "275.40", + "287.53" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-02", + "weekend": false, + "load_mw": [ + "37.254", + "35.208", + "34.186", + "34.979", + "34.068", + "31.739", + "32.991", + "31.153", + "31.235", + "29.862", + "30.800", + "30.304", + "29.420", + "30.517", + "29.914", + "30.048", + "31.461", + "31.376", + "31.623", + "33.910", + "32.754", + "35.493", + "36.188", + "36.738", + "36.960", + "38.418", + "39.100", + "40.487", + "42.768", + "42.756", + "41.991", + "44.750", + "45.986", + "47.979", + "48.920", + "48.710", + "51.603", + "54.280", + "53.587", + "56.772", + "58.978", + "58.642", + "59.117", + "58.640", + "59.830", + "60.891", + "59.112", + "59.336", + "57.588", + "56.343", + "54.696", + "53.695", + "51.737", + "49.780", + "49.336", + "49.146", + "48.057", + "47.125", + "45.667", + "45.260", + "44.840", + "44.168", + "45.443", + "45.631", + "47.099", + "46.564", + "45.516", + "49.051", + "51.452", + "51.381", + "55.125", + "58.014", + "62.054", + "62.352", + "64.859", + "68.968", + "67.094", + "65.414", + "68.653", + "65.361", + "64.608", + "65.806", + "62.637", + "62.850", + "58.368", + "56.380", + "54.909", + "53.208", + "51.623", + "49.483", + "47.082", + "44.997", + "44.612", + "43.930", + "43.047", + "40.693" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.383", + "1.082", + "2.182", + "2.827", + "4.105", + "4.769", + "6.530", + "7.878", + "8.385", + "8.799", + "10.258", + "11.052", + "12.751", + "13.247", + "15.278", + "16.883", + "16.473", + "17.243", + "18.538", + "18.015", + "18.535", + "19.703", + "21.705", + "18.424", + "22.365", + "20.625", + "20.073", + "20.343", + "20.020", + "19.244", + "18.882", + "18.523", + "16.009", + "15.367", + "15.659", + "14.281", + "12.681", + "11.679", + "10.067", + "9.222", + "8.408", + "7.619", + "6.339", + "5.185", + "3.755", + "2.579", + "1.867", + "1.120", + "0.412", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "232.18", + "242.02", + "222.27", + "214.66", + "201.58", + "202.80", + "194.14", + "177.36", + "169.13", + "179.79", + "166.13", + "168.78", + "163.84", + "159.63", + "161.75", + "164.83", + "168.06", + "159.58", + "161.96", + "181.57", + "179.66", + "180.44", + "194.93", + "207.51", + "207.06", + "211.38", + "233.55", + "232.25", + "260.44", + "250.64", + "249.49", + "253.99", + "279.63", + "276.78", + "296.13", + "287.26", + "321.24", + "329.78", + "326.98", + "372.94", + "357.75", + "353.09", + "353.99", + "383.60", + "375.27", + "353.73", + "345.92", + "344.29", + "325.23", + "336.17", + "321.41", + "313.21", + "300.84", + "291.68", + "272.49", + "278.34", + "279.30", + "279.25", + "269.03", + "272.61", + "268.99", + "247.52", + "263.49", + "284.44", + "283.48", + "286.97", + "322.17", + "334.01", + "350.72", + "367.09", + "422.52", + "440.54", + "504.46", + "492.35", + "515.31", + "503.29", + "518.06", + "510.71", + "490.52", + "505.99", + "495.58", + "486.86", + "430.10", + "425.34", + "388.75", + "359.50", + "352.01", + "353.35", + "336.06", + "299.69", + "311.60", + "283.92", + "276.21", + "294.51", + "279.64", + "289.04" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-03", + "weekend": true, + "load_mw": [ + "32.869", + "32.047", + "30.879", + "30.460", + "30.626", + "28.550", + "28.315", + "27.932", + "28.101", + "27.655", + "25.950", + "27.199", + "26.829", + "25.777", + "26.835", + "27.911", + "27.895", + "27.671", + "28.424", + "29.314", + "30.339", + "31.326", + "32.057", + "33.345", + "32.674", + "33.811", + "35.197", + "36.129", + "36.708", + "37.165", + "39.381", + "39.065", + "42.606", + "43.600", + "43.458", + "44.288", + "46.553", + "48.623", + "48.936", + "51.295", + "51.508", + "51.606", + "53.517", + "53.017", + "52.960", + "51.220", + "51.494", + "51.607", + "52.249", + "51.256", + "49.367", + "49.436", + "48.093", + "46.003", + "45.285", + "44.037", + "42.571", + "40.683", + "41.090", + "40.116", + "39.550", + "41.480", + "40.188", + "40.772", + "39.391", + "40.332", + "42.823", + "43.619", + "46.761", + "47.722", + "49.025", + "51.590", + "51.847", + "54.606", + "55.777", + "56.949", + "61.777", + "59.924", + "60.163", + "60.676", + "57.532", + "58.201", + "58.661", + "55.093", + "53.156", + "49.980", + "48.999", + "45.551", + "43.963", + "43.073", + "40.984", + "40.797", + "40.300", + "38.561", + "38.973", + "38.645" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.411", + "1.029", + "1.694", + "2.804", + "3.788", + "4.573", + "5.967", + "6.437", + "7.525", + "9.180", + "10.507", + "9.724", + "12.519", + "14.235", + "14.852", + "13.644", + "17.275", + "17.013", + "17.475", + "17.681", + "15.736", + "18.045", + "19.274", + "18.685", + "18.042", + "19.065", + "18.520", + "18.818", + "17.934", + "18.357", + "15.176", + "17.429", + "15.248", + "15.077", + "14.367", + "14.158", + "12.225", + "11.498", + "9.999", + "8.700", + "7.454", + "7.358", + "5.317", + "4.671", + "3.768", + "2.660", + "1.879", + "1.043", + "0.391", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "225.98", + "236.87", + "216.84", + "210.90", + "199.99", + "199.27", + "207.92", + "190.01", + "176.80", + "176.10", + "178.75", + "162.38", + "165.99", + "166.05", + "164.54", + "163.43", + "172.70", + "171.31", + "172.92", + "172.97", + "189.43", + "194.24", + "199.73", + "204.81", + "211.94", + "233.70", + "232.62", + "225.59", + "247.23", + "251.97", + "265.38", + "271.20", + "278.17", + "290.31", + "297.95", + "303.80", + "310.09", + "335.67", + "332.52", + "340.26", + "326.31", + "363.47", + "362.69", + "362.74", + "342.28", + "347.63", + "348.54", + "359.29", + "362.93", + "339.45", + "320.29", + "327.76", + "298.27", + "287.74", + "302.28", + "281.12", + "265.54", + "282.54", + "270.78", + "274.23", + "272.49", + "258.23", + "274.70", + "287.67", + "287.83", + "302.01", + "320.31", + "331.22", + "385.98", + "384.93", + "420.04", + "452.36", + "476.21", + "502.67", + "503.09", + "491.28", + "533.83", + "512.12", + "501.60", + "503.14", + "488.71", + "449.32", + "447.73", + "414.71", + "376.39", + "364.63", + "344.72", + "325.26", + "315.00", + "295.90", + "312.43", + "296.85", + "287.28", + "296.71", + "288.46", + "290.64" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-04", + "weekend": true, + "load_mw": [ + "34.405", + "33.629", + "32.153", + "31.332", + "31.900", + "29.747", + "30.314", + "29.223", + "28.665", + "29.731", + "28.425", + "28.080", + "28.416", + "27.828", + "27.567", + "28.456", + "29.047", + "30.487", + "28.796", + "30.347", + "31.940", + "32.337", + "32.758", + "33.925", + "32.998", + "36.148", + "36.244", + "38.001", + "39.190", + "38.695", + "42.171", + "41.226", + "42.839", + "43.563", + "47.136", + "45.676", + "49.631", + "47.433", + "50.761", + "51.611", + "54.064", + "56.855", + "55.525", + "54.839", + "55.010", + "53.840", + "56.239", + "55.817", + "51.952", + "53.493", + "51.450", + "48.968", + "50.052", + "47.936", + "46.120", + "44.124", + "42.743", + "43.128", + "41.137", + "40.214", + "42.259", + "40.922", + "40.282", + "40.468", + "41.821", + "42.162", + "43.580", + "46.500", + "46.835", + "48.127", + "52.293", + "53.074", + "55.689", + "58.109", + "59.273", + "60.063", + "62.189", + "59.899", + "63.003", + "65.179", + "63.451", + "59.356", + "59.071", + "57.172", + "53.458", + "52.690", + "51.507", + "49.024", + "47.155", + "43.863", + "42.132", + "42.003", + "41.914", + "39.666", + "40.100", + "39.213" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.474", + "1.339", + "2.248", + "3.271", + "4.724", + "5.128", + "6.288", + "8.270", + "9.507", + "9.799", + "11.694", + "12.769", + "14.128", + "15.877", + "16.913", + "15.558", + "18.513", + "18.328", + "19.388", + "21.164", + "22.572", + "22.241", + "22.187", + "23.429", + "19.444", + "22.572", + "22.546", + "21.161", + "20.601", + "21.748", + "21.476", + "18.933", + "17.494", + "17.614", + "15.971", + "15.334", + "13.305", + "12.374", + "12.844", + "10.197", + "9.115", + "8.676", + "6.613", + "5.549", + "4.058", + "3.449", + "1.979", + "1.147", + "0.438", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "238.44", + "222.94", + "219.08", + "218.36", + "210.12", + "208.11", + "198.27", + "182.07", + "186.08", + "177.99", + "156.09", + "170.98", + "159.42", + "160.32", + "167.42", + "171.04", + "175.51", + "170.02", + "172.87", + "172.69", + "174.98", + "191.62", + "216.22", + "205.05", + "212.55", + "223.13", + "230.74", + "238.58", + "250.74", + "264.33", + "271.22", + "269.80", + "263.37", + "301.47", + "309.79", + "300.44", + "310.87", + "310.73", + "342.26", + "345.61", + "355.07", + "345.69", + "362.55", + "361.16", + "362.66", + "346.57", + "367.13", + "338.15", + "338.81", + "325.70", + "318.86", + "308.79", + "308.38", + "278.66", + "282.30", + "272.27", + "269.72", + "274.42", + "248.91", + "262.48", + "276.14", + "268.80", + "280.92", + "280.71", + "280.86", + "295.96", + "322.70", + "336.87", + "356.41", + "387.85", + "414.52", + "439.19", + "462.99", + "481.86", + "516.76", + "527.08", + "553.08", + "543.47", + "526.57", + "512.81", + "475.93", + "465.68", + "434.17", + "410.44", + "366.62", + "354.54", + "368.76", + "342.41", + "305.77", + "302.36", + "299.32", + "297.14", + "284.59", + "297.64", + "278.59", + "284.17" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-05", + "weekend": false, + "load_mw": [ + "40.261", + "40.114", + "37.064", + "37.779", + "37.021", + "35.401", + "35.149", + "34.150", + "33.214", + "32.580", + "32.576", + "32.479", + "32.418", + "32.484", + "31.998", + "33.721", + "34.952", + "35.683", + "35.152", + "36.225", + "35.591", + "36.474", + "38.573", + "38.661", + "40.270", + "41.360", + "43.502", + "42.635", + "45.414", + "47.131", + "46.664", + "49.082", + "49.609", + "52.970", + "53.870", + "54.835", + "54.777", + "57.744", + "59.041", + "61.029", + "61.823", + "64.679", + "66.088", + "64.953", + "65.342", + "64.638", + "63.170", + "61.995", + "63.450", + "61.606", + "59.603", + "58.544", + "57.978", + "55.082", + "54.380", + "51.866", + "50.814", + "49.663", + "49.476", + "48.039", + "47.151", + "47.942", + "49.019", + "46.103", + "49.906", + "51.759", + "50.519", + "53.568", + "53.740", + "57.363", + "58.986", + "62.827", + "64.511", + "65.633", + "68.904", + "70.869", + "72.911", + "71.909", + "72.895", + "71.477", + "71.032", + "68.667", + "67.665", + "65.580", + "64.165", + "61.221", + "59.124", + "55.495", + "54.346", + "52.989", + "50.637", + "49.685", + "47.319", + "48.069", + "47.763", + "44.626" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.501", + "1.300", + "2.551", + "3.122", + "4.833", + "5.862", + "7.367", + "9.227", + "10.844", + "11.049", + "12.920", + "14.770", + "16.014", + "18.773", + "19.457", + "18.463", + "20.116", + "18.936", + "23.848", + "23.769", + "22.825", + "24.674", + "23.180", + "24.087", + "24.665", + "22.892", + "23.004", + "21.761", + "23.617", + "24.102", + "22.083", + "23.732", + "21.758", + "20.687", + "18.155", + "17.135", + "15.086", + "15.918", + "13.460", + "11.394", + "10.026", + "9.215", + "7.448", + "5.970", + "4.807", + "3.446", + "2.410", + "1.269", + "0.528", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "253.64", + "244.39", + "221.19", + "211.71", + "203.32", + "205.10", + "202.54", + "183.54", + "176.36", + "165.75", + "168.04", + "171.24", + "155.42", + "163.71", + "160.10", + "160.25", + "173.64", + "168.17", + "178.40", + "179.56", + "188.10", + "193.57", + "191.35", + "200.58", + "215.39", + "216.74", + "237.78", + "235.88", + "249.19", + "254.51", + "263.05", + "265.68", + "268.54", + "298.81", + "301.81", + "304.19", + "318.11", + "318.44", + "312.77", + "335.89", + "360.22", + "356.98", + "358.20", + "353.24", + "363.19", + "351.07", + "354.07", + "326.69", + "316.48", + "325.78", + "315.50", + "298.14", + "309.77", + "294.75", + "292.84", + "270.95", + "270.81", + "258.69", + "263.88", + "265.63", + "252.86", + "267.63", + "281.41", + "278.29", + "274.15", + "288.92", + "299.87", + "339.05", + "354.75", + "382.40", + "410.72", + "455.70", + "460.71", + "496.49", + "505.61", + "512.65", + "527.30", + "498.32", + "546.73", + "494.97", + "462.76", + "481.00", + "414.12", + "397.88", + "394.82", + "358.27", + "353.40", + "339.55", + "322.01", + "331.39", + "297.82", + "288.92", + "272.96", + "280.17", + "295.87", + "288.42" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-06", + "weekend": false, + "load_mw": [ + "37.969", + "37.368", + "37.214", + "35.455", + "34.650", + "34.730", + "33.724", + "31.504", + "32.386", + "31.730", + "31.196", + "32.079", + "30.376", + "30.781", + "31.642", + "31.544", + "33.352", + "33.311", + "33.139", + "33.936", + "35.932", + "36.528", + "36.653", + "38.344", + "38.482", + "38.498", + "39.264", + "41.569", + "41.971", + "44.013", + "45.270", + "45.664", + "49.165", + "49.115", + "50.521", + "50.630", + "54.434", + "55.666", + "56.675", + "58.459", + "62.752", + "60.072", + "60.419", + "62.307", + "59.062", + "61.768", + "61.499", + "60.519", + "58.643", + "57.316", + "56.889", + "53.682", + "53.750", + "54.482", + "52.651", + "50.996", + "49.358", + "48.101", + "48.559", + "46.952", + "45.407", + "43.738", + "47.583", + "47.034", + "45.079", + "46.881", + "48.331", + "48.262", + "54.221", + "52.639", + "58.808", + "58.966", + "61.684", + "63.550", + "65.358", + "69.887", + "70.149", + "68.808", + "69.732", + "70.461", + "66.741", + "65.957", + "65.562", + "61.611", + "62.622", + "59.171", + "57.523", + "54.525", + "53.213", + "49.796", + "50.100", + "45.936", + "46.025", + "43.970", + "45.498", + "43.941" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.383", + "1.013", + "1.827", + "2.708", + "3.481", + "4.442", + "5.720", + "7.180", + "7.463", + "7.758", + "9.748", + "10.525", + "12.186", + "12.573", + "13.100", + "14.042", + "14.081", + "15.018", + "16.791", + "16.812", + "16.457", + "18.867", + "18.214", + "18.540", + "19.552", + "19.224", + "18.329", + "16.537", + "18.072", + "18.209", + "16.384", + "16.607", + "13.572", + "14.791", + "13.669", + "12.307", + "12.177", + "10.307", + "9.885", + "9.297", + "8.134", + "6.619", + "6.154", + "4.549", + "3.335", + "2.365", + "1.818", + "1.020", + "0.402", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "239.32", + "226.55", + "214.35", + "219.02", + "197.23", + "206.88", + "199.37", + "172.67", + "178.32", + "176.78", + "163.82", + "164.78", + "158.58", + "160.04", + "152.01", + "156.10", + "166.79", + "163.05", + "166.96", + "177.53", + "187.27", + "204.28", + "204.62", + "206.98", + "212.38", + "227.84", + "227.34", + "229.12", + "232.40", + "264.61", + "262.04", + "266.03", + "284.60", + "279.72", + "296.00", + "315.58", + "326.92", + "309.21", + "355.46", + "342.47", + "348.46", + "350.28", + "362.84", + "363.93", + "365.58", + "368.80", + "365.12", + "342.52", + "363.48", + "332.78", + "327.00", + "323.08", + "320.33", + "290.65", + "292.70", + "272.45", + "268.22", + "264.93", + "264.60", + "265.46", + "274.22", + "256.69", + "281.25", + "269.15", + "278.38", + "306.35", + "304.34", + "329.52", + "355.49", + "363.42", + "408.70", + "428.49", + "452.21", + "488.21", + "484.29", + "548.02", + "509.97", + "502.71", + "541.76", + "502.00", + "483.43", + "467.64", + "455.79", + "396.58", + "397.90", + "366.01", + "343.45", + "334.94", + "311.84", + "303.93", + "298.93", + "279.83", + "276.53", + "284.54", + "290.27", + "276.54" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-07", + "weekend": false, + "load_mw": [ + "34.406", + "33.504", + "31.929", + "32.748", + "31.400", + "29.793", + "29.289", + "29.643", + "28.240", + "28.565", + "28.655", + "28.782", + "28.856", + "28.901", + "29.188", + "29.263", + "28.673", + "29.704", + "31.285", + "31.606", + "30.701", + "33.704", + "32.948", + "34.107", + "35.041", + "36.678", + "36.221", + "37.640", + "39.879", + "40.093", + "42.322", + "42.251", + "43.465", + "44.022", + "46.799", + "50.500", + "49.495", + "49.284", + "50.877", + "53.491", + "54.617", + "54.441", + "57.261", + "57.901", + "56.383", + "56.317", + "56.096", + "54.664", + "54.438", + "54.847", + "52.465", + "50.980", + "48.714", + "47.520", + "47.215", + "44.735", + "44.305", + "43.552", + "42.577", + "41.317", + "41.367", + "41.490", + "41.448", + "42.509", + "41.548", + "43.467", + "45.616", + "45.706", + "48.828", + "48.667", + "51.317", + "55.115", + "56.260", + "58.270", + "61.456", + "62.094", + "61.368", + "62.310", + "62.589", + "65.536", + "63.375", + "62.549", + "59.355", + "58.679", + "56.166", + "53.107", + "50.211", + "49.075", + "48.203", + "45.964", + "43.993", + "43.909", + "42.813", + "41.677", + "40.551", + "39.594" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.367", + "1.014", + "1.978", + "2.788", + "3.496", + "4.992", + "5.801", + "6.729", + "7.569", + "8.926", + "10.232", + "11.851", + "12.437", + "13.964", + "13.958", + "14.591", + "15.771", + "16.785", + "18.047", + "17.513", + "17.906", + "18.878", + "19.084", + "19.246", + "19.301", + "19.842", + "18.994", + "18.981", + "17.201", + "17.369", + "18.960", + "17.567", + "14.710", + "17.499", + "14.639", + "13.893", + "12.006", + "11.956", + "11.311", + "9.623", + "7.931", + "6.562", + "5.816", + "4.694", + "3.692", + "2.823", + "1.940", + "1.143", + "0.415", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "230.28", + "230.54", + "226.60", + "224.96", + "210.52", + "196.65", + "187.66", + "192.17", + "177.69", + "173.26", + "161.83", + "166.31", + "165.78", + "152.57", + "157.61", + "163.95", + "164.28", + "168.65", + "181.91", + "172.51", + "176.59", + "200.00", + "197.16", + "209.82", + "211.33", + "226.01", + "228.73", + "239.37", + "247.67", + "267.04", + "277.16", + "265.57", + "279.40", + "283.04", + "290.74", + "312.09", + "309.93", + "330.21", + "314.59", + "333.28", + "337.05", + "343.41", + "346.39", + "342.93", + "364.87", + "341.62", + "344.04", + "318.10", + "333.82", + "324.83", + "330.85", + "320.43", + "308.08", + "303.40", + "291.66", + "292.95", + "272.08", + "269.14", + "277.73", + "258.11", + "255.21", + "272.60", + "273.34", + "273.18", + "302.53", + "307.99", + "307.20", + "341.25", + "366.63", + "376.78", + "398.82", + "444.39", + "470.07", + "490.53", + "518.29", + "499.40", + "528.10", + "522.23", + "489.99", + "501.12", + "455.27", + "476.43", + "445.49", + "406.19", + "400.61", + "384.10", + "340.29", + "329.35", + "307.08", + "315.87", + "293.02", + "287.08", + "295.94", + "291.99", + "292.32", + "283.96" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-08", + "weekend": false, + "load_mw": [ + "35.256", + "33.926", + "33.733", + "33.021", + "32.072", + "31.159", + "31.294", + "29.162", + "29.037", + "29.532", + "28.786", + "27.690", + "28.972", + "27.968", + "28.877", + "29.701", + "29.584", + "30.680", + "30.956", + "32.107", + "32.610", + "33.446", + "34.554", + "34.562", + "35.445", + "35.315", + "37.037", + "38.283", + "40.674", + "41.976", + "41.129", + "41.054", + "43.451", + "43.858", + "46.923", + "48.199", + "49.628", + "50.887", + "53.173", + "54.231", + "55.774", + "55.237", + "57.816", + "58.189", + "58.224", + "58.525", + "56.792", + "54.499", + "56.464", + "55.158", + "52.937", + "50.166", + "48.677", + "49.062", + "48.523", + "45.353", + "45.186", + "43.163", + "43.135", + "43.601", + "42.553", + "42.156", + "42.563", + "42.757", + "41.173", + "43.861", + "45.010", + "44.516", + "49.139", + "50.962", + "52.665", + "54.351", + "56.288", + "57.261", + "61.000", + "61.349", + "63.943", + "65.815", + "63.551", + "62.098", + "61.402", + "60.229", + "60.567", + "57.466", + "53.755", + "54.260", + "51.788", + "48.561", + "45.618", + "45.407", + "45.674", + "43.192", + "41.520", + "40.498", + "40.408", + "39.178" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.444", + "1.124", + "2.001", + "3.057", + "4.014", + "5.804", + "6.170", + "8.571", + "9.179", + "10.981", + "11.931", + "13.566", + "14.822", + "15.499", + "16.389", + "16.576", + "17.448", + "19.406", + "19.311", + "19.424", + "20.593", + "20.220", + "23.249", + "21.611", + "22.032", + "21.364", + "21.542", + "20.869", + "22.360", + "21.828", + "20.374", + "19.007", + "19.241", + "17.476", + "16.002", + "15.645", + "12.228", + "11.447", + "11.350", + "10.453", + "9.224", + "7.461", + "6.537", + "5.388", + "4.321", + "3.183", + "2.038", + "1.182", + "0.439", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "234.55", + "233.88", + "227.12", + "224.71", + "217.94", + "201.15", + "188.74", + "184.97", + "175.78", + "163.82", + "167.31", + "158.55", + "171.01", + "162.17", + "168.77", + "177.46", + "171.11", + "166.47", + "177.19", + "178.17", + "180.94", + "184.97", + "196.81", + "202.22", + "213.69", + "225.62", + "229.31", + "242.02", + "249.21", + "266.05", + "262.24", + "263.16", + "277.42", + "277.27", + "276.63", + "308.51", + "318.33", + "322.10", + "342.30", + "345.81", + "347.57", + "356.29", + "364.65", + "371.17", + "370.09", + "367.46", + "340.56", + "343.94", + "342.68", + "323.62", + "316.41", + "326.11", + "316.52", + "304.19", + "296.90", + "274.71", + "264.46", + "265.66", + "269.22", + "278.17", + "270.87", + "267.09", + "266.00", + "279.07", + "272.08", + "297.29", + "317.30", + "345.68", + "363.90", + "383.61", + "405.93", + "425.69", + "456.27", + "494.43", + "486.86", + "517.36", + "515.21", + "528.42", + "524.72", + "490.82", + "495.90", + "471.21", + "452.24", + "421.05", + "388.45", + "377.92", + "338.59", + "325.86", + "298.16", + "292.61", + "314.63", + "315.57", + "299.24", + "290.06", + "284.46", + "288.57" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-09", + "weekend": false, + "load_mw": [ + "34.411", + "33.130", + "33.126", + "31.556", + "32.000", + "30.924", + "30.803", + "28.639", + "29.076", + "29.283", + "28.997", + "28.425", + "27.815", + "27.919", + "28.727", + "28.329", + "28.858", + "29.818", + "29.755", + "31.693", + "32.341", + "32.207", + "33.856", + "34.890", + "35.358", + "36.842", + "35.907", + "36.684", + "38.568", + "41.197", + "42.870", + "42.232", + "44.418", + "44.674", + "44.991", + "46.497", + "50.211", + "51.387", + "50.597", + "51.194", + "55.092", + "54.485", + "54.751", + "53.782", + "54.903", + "56.127", + "55.373", + "55.586", + "53.137", + "52.131", + "52.921", + "51.184", + "50.360", + "47.536", + "46.273", + "46.797", + "46.198", + "43.380", + "42.681", + "41.810", + "41.178", + "41.743", + "41.530", + "41.285", + "41.763", + "45.058", + "45.670", + "46.902", + "49.023", + "50.792", + "52.533", + "52.307", + "56.028", + "57.977", + "59.187", + "60.065", + "62.249", + "62.130", + "62.799", + "61.725", + "61.994", + "63.995", + "60.201", + "56.420", + "58.561", + "54.406", + "50.329", + "48.706", + "46.889", + "45.638", + "43.316", + "42.963", + "42.357", + "40.969", + "40.103", + "39.261" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.402", + "1.097", + "2.081", + "2.875", + "3.918", + "5.246", + "6.015", + "7.071", + "8.680", + "9.825", + "9.479", + "12.471", + "12.033", + "14.750", + "15.612", + "16.532", + "16.135", + "15.733", + "18.405", + "18.689", + "21.452", + "19.084", + "19.073", + "19.893", + "20.094", + "20.867", + "17.613", + "19.112", + "18.277", + "19.021", + "18.400", + "17.230", + "16.659", + "14.911", + "14.424", + "13.395", + "11.654", + "11.416", + "11.184", + "10.479", + "8.680", + "7.242", + "6.116", + "4.940", + "3.910", + "2.959", + "1.966", + "1.157", + "0.405", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "240.91", + "238.77", + "220.17", + "211.58", + "202.93", + "203.43", + "184.03", + "176.25", + "183.40", + "171.56", + "181.27", + "164.13", + "161.40", + "153.73", + "157.37", + "164.16", + "161.46", + "167.91", + "177.06", + "174.01", + "185.12", + "198.67", + "191.37", + "206.44", + "212.76", + "223.81", + "216.68", + "253.51", + "257.20", + "253.52", + "275.86", + "279.71", + "282.03", + "279.89", + "300.46", + "294.49", + "309.21", + "333.67", + "315.75", + "363.20", + "341.02", + "355.92", + "350.75", + "362.96", + "335.97", + "365.48", + "347.48", + "326.00", + "331.94", + "330.53", + "321.41", + "326.95", + "286.66", + "305.77", + "295.00", + "281.25", + "284.01", + "260.01", + "257.62", + "282.96", + "275.16", + "273.91", + "279.07", + "276.00", + "281.90", + "293.78", + "326.92", + "331.83", + "368.48", + "383.17", + "411.41", + "431.16", + "458.47", + "488.17", + "480.95", + "506.87", + "550.54", + "490.28", + "506.97", + "483.50", + "460.59", + "439.36", + "410.71", + "394.86", + "385.45", + "375.54", + "344.37", + "325.19", + "311.39", + "295.70", + "307.68", + "272.82", + "292.58", + "288.02", + "269.14", + "280.63" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-10", + "weekend": true, + "load_mw": [ + "30.730", + "29.714", + "27.509", + "28.327", + "28.201", + "27.515", + "25.539", + "25.274", + "24.599", + "25.285", + "25.677", + "24.478", + "25.051", + "24.413", + "25.970", + "25.416", + "24.623", + "25.446", + "26.419", + "27.630", + "27.367", + "28.850", + "28.332", + "30.075", + "30.705", + "32.506", + "31.378", + "32.764", + "34.177", + "33.556", + "34.921", + "37.127", + "38.281", + "39.640", + "39.840", + "42.687", + "44.185", + "42.777", + "44.492", + "45.523", + "45.742", + "47.491", + "48.475", + "48.199", + "48.608", + "47.535", + "47.315", + "49.224", + "47.193", + "45.976", + "46.589", + "44.739", + "43.055", + "42.710", + "40.759", + "40.570", + "39.071", + "38.577", + "37.143", + "38.780", + "36.540", + "36.304", + "35.838", + "36.979", + "37.947", + "36.989", + "38.259", + "39.706", + "42.317", + "44.772", + "45.035", + "48.179", + "48.885", + "50.981", + "53.479", + "52.994", + "56.284", + "54.114", + "55.840", + "56.356", + "55.098", + "51.308", + "53.041", + "51.209", + "51.128", + "44.941", + "44.623", + "43.783", + "41.690", + "39.077", + "39.516", + "36.473", + "37.017", + "36.599", + "36.220", + "35.084" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.474", + "1.180", + "2.295", + "3.489", + "4.330", + "5.880", + "7.062", + "9.299", + "9.896", + "10.579", + "12.501", + "12.479", + "14.454", + "16.850", + "17.824", + "18.466", + "18.319", + "20.621", + "20.993", + "22.182", + "21.717", + "20.996", + "23.237", + "23.597", + "25.634", + "23.440", + "24.466", + "23.707", + "22.980", + "20.830", + "19.797", + "21.422", + "20.927", + "19.087", + "17.534", + "15.814", + "14.535", + "15.540", + "12.060", + "10.813", + "8.968", + "8.635", + "7.405", + "6.075", + "4.503", + "3.385", + "2.352", + "1.339", + "0.500", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "240.58", + "233.29", + "223.89", + "210.67", + "214.78", + "196.71", + "183.58", + "185.48", + "184.56", + "186.22", + "174.11", + "175.85", + "174.45", + "166.34", + "165.21", + "167.78", + "169.85", + "174.26", + "176.62", + "183.68", + "197.21", + "188.75", + "201.87", + "210.42", + "221.49", + "230.75", + "225.82", + "238.05", + "259.15", + "253.77", + "255.52", + "283.32", + "282.34", + "299.83", + "288.04", + "293.79", + "308.01", + "325.29", + "309.76", + "336.41", + "319.16", + "340.03", + "353.09", + "359.75", + "354.80", + "353.03", + "331.64", + "342.58", + "352.59", + "330.64", + "326.14", + "307.79", + "297.28", + "299.63", + "266.70", + "278.88", + "270.96", + "266.85", + "264.10", + "275.00", + "268.77", + "268.11", + "272.51", + "286.86", + "293.85", + "293.12", + "320.93", + "319.00", + "363.46", + "388.28", + "403.33", + "447.42", + "464.13", + "489.48", + "498.47", + "537.65", + "536.80", + "532.95", + "510.24", + "500.82", + "446.33", + "479.88", + "441.62", + "404.47", + "386.05", + "356.87", + "337.61", + "334.19", + "314.29", + "308.50", + "288.65", + "306.83", + "297.93", + "298.16", + "304.66", + "296.15" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-11", + "weekend": true, + "load_mw": [ + "32.200", + "33.059", + "30.869", + "29.563", + "30.162", + "27.962", + "28.002", + "27.514", + "27.420", + "27.501", + "26.108", + "26.348", + "25.580", + "27.095", + "27.422", + "26.249", + "26.715", + "26.846", + "28.729", + "29.026", + "29.016", + "29.641", + "30.330", + "32.839", + "32.289", + "33.487", + "34.499", + "36.160", + "36.824", + "37.524", + "38.163", + "39.397", + "41.725", + "42.692", + "43.869", + "44.104", + "46.957", + "47.027", + "48.977", + "48.343", + "49.154", + "51.331", + "52.715", + "53.302", + "52.566", + "54.356", + "51.933", + "51.346", + "50.967", + "49.646", + "47.142", + "47.232", + "45.996", + "44.721", + "44.983", + "42.949", + "39.645", + "41.931", + "39.905", + "40.304", + "39.849", + "38.424", + "38.324", + "41.470", + "40.136", + "39.692", + "42.523", + "42.993", + "44.015", + "44.456", + "47.439", + "49.889", + "53.312", + "52.678", + "52.998", + "57.675", + "57.803", + "59.058", + "61.026", + "57.192", + "56.840", + "57.346", + "56.733", + "52.804", + "53.171", + "52.840", + "47.119", + "46.869", + "43.067", + "41.066", + "40.512", + "40.034", + "39.262", + "37.662", + "38.229", + "37.183" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.470", + "1.182", + "2.160", + "2.966", + "3.894", + "5.266", + "6.512", + "8.599", + "9.620", + "9.750", + "10.770", + "12.691", + "13.349", + "16.691", + "17.050", + "16.920", + "17.488", + "20.746", + "19.009", + "20.722", + "20.683", + "22.525", + "20.897", + "21.455", + "23.007", + "22.801", + "20.068", + "22.810", + "21.125", + "19.586", + "19.391", + "19.271", + "20.775", + "17.602", + "16.042", + "13.680", + "14.990", + "11.781", + "12.781", + "10.266", + "9.670", + "7.278", + "6.386", + "5.735", + "4.382", + "3.028", + "1.981", + "1.134", + "0.428", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "232.19", + "228.48", + "228.10", + "231.92", + "218.09", + "204.60", + "193.76", + "191.96", + "176.70", + "176.99", + "173.78", + "171.62", + "162.20", + "167.84", + "170.28", + "168.77", + "155.62", + "166.31", + "170.12", + "176.93", + "186.08", + "189.34", + "199.51", + "208.42", + "213.81", + "220.03", + "233.61", + "242.15", + "263.14", + "260.53", + "253.59", + "285.55", + "275.51", + "286.39", + "307.46", + "307.14", + "331.83", + "347.86", + "335.71", + "341.15", + "327.41", + "337.05", + "382.32", + "367.53", + "344.35", + "363.68", + "360.37", + "353.81", + "350.29", + "324.12", + "337.57", + "306.71", + "297.34", + "298.32", + "277.08", + "274.28", + "283.47", + "279.78", + "258.55", + "275.02", + "259.83", + "262.79", + "278.10", + "280.04", + "299.39", + "275.99", + "312.01", + "343.41", + "345.10", + "371.66", + "416.37", + "442.95", + "457.26", + "475.81", + "485.18", + "516.65", + "527.45", + "522.33", + "510.52", + "515.86", + "478.66", + "467.81", + "438.18", + "421.13", + "389.41", + "375.79", + "323.72", + "334.66", + "324.18", + "309.44", + "311.84", + "301.01", + "311.31", + "270.04", + "288.89", + "285.82" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-12", + "weekend": false, + "load_mw": [ + "39.393", + "39.189", + "38.282", + "36.540", + "35.765", + "36.878", + "35.192", + "34.316", + "34.176", + "33.227", + "32.349", + "31.349", + "32.261", + "32.413", + "32.882", + "33.335", + "33.946", + "33.195", + "35.712", + "34.204", + "36.339", + "38.653", + "37.715", + "38.543", + "39.728", + "42.268", + "42.565", + "43.995", + "44.468", + "46.849", + "46.675", + "46.838", + "49.949", + "52.431", + "51.244", + "52.919", + "54.704", + "58.639", + "61.294", + "61.570", + "63.368", + "63.403", + "64.120", + "63.901", + "63.165", + "63.367", + "64.084", + "64.921", + "63.113", + "61.116", + "60.543", + "57.454", + "57.963", + "55.132", + "55.839", + "52.060", + "50.935", + "49.800", + "49.868", + "48.710", + "48.934", + "48.518", + "47.126", + "48.481", + "50.312", + "50.749", + "50.377", + "52.550", + "55.088", + "56.698", + "60.782", + "61.435", + "60.256", + "64.937", + "72.807", + "69.540", + "71.008", + "73.387", + "71.776", + "71.362", + "72.797", + "69.817", + "70.622", + "66.981", + "62.720", + "61.445", + "60.175", + "57.469", + "54.005", + "51.672", + "48.713", + "47.570", + "46.026", + "47.874", + "45.988", + "46.463" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.521", + "1.346", + "2.273", + "3.521", + "4.845", + "5.947", + "7.360", + "7.848", + "10.357", + "11.488", + "11.855", + "13.536", + "14.883", + "15.678", + "17.772", + "18.241", + "19.173", + "20.274", + "20.304", + "21.898", + "24.598", + "21.232", + "22.686", + "23.754", + "23.088", + "25.411", + "24.903", + "23.216", + "23.247", + "20.881", + "24.265", + "19.800", + "19.052", + "18.463", + "16.637", + "15.988", + "15.510", + "14.177", + "11.646", + "11.029", + "9.334", + "8.402", + "7.314", + "6.086", + "4.668", + "3.521", + "2.190", + "1.305", + "0.501", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "236.67", + "222.43", + "217.00", + "216.54", + "208.98", + "206.84", + "195.95", + "188.72", + "183.09", + "171.33", + "167.42", + "165.58", + "161.17", + "161.01", + "156.57", + "163.40", + "171.35", + "163.22", + "178.11", + "183.04", + "184.57", + "197.88", + "195.50", + "201.75", + "207.40", + "231.74", + "233.43", + "237.25", + "263.80", + "260.36", + "269.53", + "272.37", + "271.96", + "299.66", + "301.87", + "304.65", + "311.53", + "321.48", + "331.52", + "335.32", + "356.98", + "353.24", + "377.93", + "368.35", + "360.39", + "358.47", + "357.98", + "338.67", + "333.37", + "331.48", + "311.35", + "306.19", + "309.08", + "289.66", + "295.02", + "272.29", + "277.00", + "268.88", + "271.84", + "266.68", + "256.84", + "259.32", + "273.88", + "281.85", + "293.50", + "299.84", + "317.10", + "312.26", + "358.49", + "400.25", + "414.59", + "445.07", + "457.42", + "502.77", + "520.18", + "510.65", + "536.77", + "529.94", + "514.38", + "520.80", + "499.74", + "474.89", + "441.52", + "408.67", + "394.76", + "372.73", + "359.99", + "333.63", + "330.53", + "314.22", + "306.80", + "288.32", + "277.26", + "292.62", + "276.10", + "299.75" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-13", + "weekend": false, + "load_mw": [ + "38.285", + "35.417", + "34.414", + "33.606", + "33.596", + "33.097", + "32.391", + "32.171", + "30.637", + "30.538", + "31.149", + "30.575", + "30.309", + "30.353", + "29.680", + "30.912", + "32.057", + "31.564", + "32.000", + "33.010", + "34.050", + "34.972", + "35.309", + "37.348", + "37.332", + "37.283", + "40.128", + "39.664", + "42.173", + "43.570", + "43.105", + "43.735", + "46.610", + "49.250", + "48.971", + "49.342", + "51.056", + "52.791", + "53.797", + "57.246", + "59.543", + "61.038", + "59.285", + "57.331", + "59.910", + "58.323", + "59.130", + "58.167", + "59.343", + "55.859", + "57.009", + "54.350", + "53.919", + "52.145", + "48.875", + "48.528", + "47.451", + "45.609", + "46.530", + "45.120", + "43.480", + "44.940", + "44.234", + "45.135", + "46.480", + "47.471", + "48.356", + "49.753", + "51.071", + "52.346", + "52.887", + "57.821", + "60.229", + "61.168", + "63.723", + "64.682", + "66.071", + "67.999", + "67.207", + "68.713", + "69.779", + "64.988", + "62.582", + "60.492", + "59.634", + "56.505", + "53.580", + "52.044", + "50.673", + "46.563", + "46.009", + "45.467", + "45.636", + "43.105", + "44.025", + "41.921" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.468", + "1.180", + "2.329", + "3.260", + "4.432", + "5.962", + "6.908", + "8.263", + "9.954", + "11.655", + "12.808", + "13.751", + "14.742", + "15.887", + "17.568", + "19.459", + "19.836", + "20.025", + "20.870", + "21.653", + "23.693", + "23.695", + "23.314", + "24.147", + "23.020", + "24.676", + "22.886", + "22.064", + "24.420", + "21.560", + "20.507", + "19.805", + "20.825", + "17.320", + "17.741", + "16.475", + "14.453", + "13.359", + "13.203", + "11.839", + "9.757", + "8.965", + "7.112", + "6.293", + "4.680", + "3.156", + "2.095", + "1.220", + "0.514", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "234.94", + "225.10", + "222.57", + "216.37", + "206.88", + "198.93", + "203.59", + "196.29", + "185.10", + "184.42", + "174.42", + "166.11", + "169.42", + "149.50", + "165.04", + "164.68", + "167.20", + "174.31", + "170.25", + "175.56", + "180.09", + "185.56", + "200.02", + "210.33", + "220.38", + "216.84", + "233.32", + "234.49", + "244.23", + "264.33", + "250.21", + "270.32", + "278.55", + "289.42", + "277.35", + "288.25", + "288.98", + "314.86", + "325.60", + "325.17", + "366.62", + "338.31", + "349.13", + "353.06", + "362.86", + "353.79", + "342.56", + "346.03", + "340.75", + "316.20", + "323.21", + "310.35", + "296.26", + "295.01", + "289.43", + "275.55", + "268.54", + "253.83", + "262.81", + "252.39", + "269.79", + "255.76", + "279.12", + "277.49", + "296.29", + "300.53", + "319.31", + "337.69", + "355.41", + "390.17", + "404.69", + "443.52", + "469.90", + "495.95", + "498.24", + "531.81", + "530.98", + "538.14", + "524.91", + "476.32", + "481.00", + "479.59", + "428.37", + "411.94", + "395.48", + "365.85", + "344.75", + "331.29", + "316.60", + "305.66", + "300.43", + "283.26", + "296.85", + "289.92", + "283.76", + "273.93" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-14", + "weekend": false, + "load_mw": [ + "35.904", + "34.314", + "33.798", + "32.963", + "33.384", + "31.958", + "31.966", + "30.546", + "30.688", + "29.559", + "29.202", + "28.311", + "28.580", + "28.890", + "29.862", + "29.086", + "29.866", + "30.549", + "31.509", + "33.778", + "33.574", + "35.222", + "34.841", + "36.537", + "36.740", + "37.761", + "38.565", + "40.578", + "40.674", + "40.840", + "43.139", + "43.026", + "45.146", + "45.587", + "49.022", + "48.333", + "48.923", + "51.155", + "53.447", + "54.921", + "56.229", + "58.128", + "57.619", + "58.512", + "60.235", + "56.981", + "56.465", + "56.608", + "56.103", + "55.799", + "55.065", + "52.537", + "51.307", + "48.400", + "49.038", + "46.835", + "46.688", + "45.887", + "45.519", + "43.917", + "44.141", + "44.507", + "44.836", + "44.792", + "44.507", + "44.606", + "45.316", + "46.545", + "49.509", + "50.988", + "54.525", + "55.618", + "58.705", + "57.162", + "61.558", + "64.801", + "65.573", + "65.348", + "66.758", + "64.345", + "64.327", + "64.425", + "61.274", + "59.524", + "58.260", + "53.811", + "53.839", + "50.792", + "49.229", + "46.352", + "46.335", + "44.148", + "44.093", + "44.247", + "43.918", + "41.624" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.348", + "0.853", + "1.629", + "2.608", + "3.337", + "4.229", + "5.230", + "5.775", + "7.123", + "7.606", + "8.697", + "9.543", + "10.189", + "11.585", + "11.599", + "13.217", + "13.230", + "14.294", + "15.103", + "15.350", + "16.046", + "16.172", + "16.224", + "15.673", + "17.234", + "16.509", + "15.310", + "15.357", + "13.944", + "13.379", + "14.576", + "13.839", + "14.040", + "12.703", + "11.369", + "11.404", + "10.638", + "9.624", + "8.384", + "7.104", + "7.261", + "5.541", + "5.059", + "4.200", + "3.101", + "2.257", + "1.580", + "0.918", + "0.337", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "236.45", + "227.47", + "219.59", + "209.62", + "206.06", + "186.78", + "188.23", + "183.70", + "178.69", + "177.79", + "165.29", + "167.45", + "156.24", + "166.06", + "159.41", + "160.67", + "159.06", + "165.45", + "167.63", + "182.69", + "182.98", + "190.61", + "198.89", + "203.42", + "217.08", + "223.16", + "231.57", + "232.55", + "245.40", + "264.70", + "261.12", + "271.07", + "301.78", + "301.27", + "292.05", + "296.72", + "281.48", + "338.40", + "335.00", + "344.22", + "366.24", + "352.55", + "345.02", + "354.42", + "357.99", + "343.25", + "362.50", + "340.83", + "343.55", + "339.68", + "324.99", + "303.10", + "315.40", + "311.58", + "302.65", + "280.89", + "287.44", + "284.16", + "271.59", + "292.18", + "290.02", + "266.20", + "283.84", + "282.81", + "294.50", + "297.88", + "322.82", + "347.23", + "366.38", + "375.45", + "415.37", + "419.07", + "1023.06", + "1019.65", + "1130.15", + "1191.08", + "1170.44", + "1165.24", + "1142.88", + "1114.88", + "1090.12", + "1020.90", + "1016.74", + "982.23", + "848.59", + "789.95", + "821.64", + "760.63", + "320.44", + "286.60", + "302.78", + "281.53", + "284.86", + "295.45", + "284.31", + "270.11" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-15", + "weekend": false, + "load_mw": [ + "36.750", + "35.816", + "34.743", + "33.194", + "33.171", + "32.814", + "31.191", + "31.185", + "29.806", + "30.818", + "29.443", + "29.291", + "29.907", + "29.621", + "29.849", + "28.948", + "30.699", + "30.958", + "32.366", + "33.088", + "33.508", + "34.891", + "34.323", + "34.414", + "38.037", + "36.710", + "39.326", + "38.880", + "41.533", + "42.534", + "42.530", + "44.046", + "45.961", + "45.857", + "48.403", + "49.824", + "52.480", + "52.990", + "54.572", + "55.103", + "56.944", + "57.542", + "58.791", + "60.249", + "58.365", + "59.571", + "57.437", + "56.376", + "57.330", + "56.519", + "54.580", + "54.950", + "49.893", + "49.340", + "48.633", + "46.684", + "46.318", + "45.237", + "44.847", + "42.317", + "43.493", + "45.008", + "43.265", + "44.234", + "44.741", + "45.820", + "47.927", + "48.465", + "50.577", + "51.584", + "56.300", + "56.356", + "57.188", + "61.775", + "62.274", + "62.447", + "66.976", + "68.060", + "66.022", + "66.994", + "66.285", + "62.911", + "62.110", + "62.188", + "57.885", + "56.586", + "54.881", + "50.527", + "49.393", + "49.122", + "46.840", + "45.462", + "44.101", + "42.666", + "43.084", + "40.439" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.372", + "0.910", + "1.526", + "2.560", + "3.443", + "4.176", + "5.841", + "6.159", + "6.845", + "8.256", + "9.076", + "10.465", + "11.757", + "11.265", + "13.125", + "15.291", + "12.930", + "15.817", + "16.065", + "16.007", + "17.070", + "17.155", + "17.148", + "15.796", + "19.136", + "18.117", + "18.180", + "14.598", + "17.255", + "15.939", + "14.277", + "14.330", + "14.139", + "13.388", + "13.684", + "11.672", + "10.976", + "9.939", + "9.000", + "8.070", + "7.675", + "6.165", + "4.912", + "4.219", + "3.204", + "2.526", + "1.596", + "0.984", + "0.356", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "248.54", + "228.94", + "226.47", + "216.54", + "207.17", + "193.77", + "203.50", + "191.95", + "176.10", + "169.63", + "170.05", + "152.66", + "163.82", + "156.18", + "157.47", + "155.30", + "164.54", + "166.80", + "173.20", + "174.87", + "187.80", + "190.46", + "203.27", + "208.28", + "212.39", + "220.98", + "240.78", + "241.41", + "247.25", + "252.86", + "278.92", + "279.76", + "280.22", + "294.62", + "291.17", + "307.16", + "338.43", + "328.66", + "351.75", + "356.52", + "359.71", + "343.44", + "342.10", + "366.43", + "367.92", + "370.25", + "352.34", + "343.36", + "359.48", + "297.18", + "336.44", + "310.69", + "303.87", + "286.44", + "298.70", + "292.11", + "283.34", + "284.32", + "278.34", + "257.15", + "258.94", + "271.94", + "261.17", + "270.35", + "290.88", + "308.93", + "321.67", + "330.19", + "367.24", + "390.90", + "416.66", + "436.39", + "455.73", + "478.40", + "498.78", + "503.18", + "512.53", + "536.72", + "517.01", + "498.95", + "477.27", + "464.21", + "417.93", + "398.45", + "371.67", + "351.32", + "331.88", + "308.50", + "316.19", + "312.95", + "287.83", + "286.47", + "286.69", + "295.43", + "276.79", + "271.77" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-16", + "weekend": false, + "load_mw": [ + "35.089", + "36.713", + "34.740", + "35.402", + "33.894", + "33.357", + "33.480", + "32.351", + "29.974", + "31.091", + "31.247", + "30.166", + "30.496", + "30.423", + "31.025", + "30.473", + "31.155", + "30.670", + "31.252", + "33.368", + "34.769", + "35.480", + "36.373", + "35.980", + "37.771", + "38.995", + "38.102", + "41.505", + "42.487", + "43.718", + "44.429", + "44.800", + "45.562", + "48.891", + "47.948", + "53.002", + "51.108", + "56.049", + "56.648", + "57.145", + "57.831", + "58.329", + "60.331", + "58.502", + "60.663", + "58.967", + "60.904", + "61.635", + "60.060", + "56.779", + "53.790", + "54.727", + "52.364", + "52.103", + "51.266", + "47.740", + "45.253", + "46.385", + "44.627", + "44.723", + "46.002", + "44.942", + "45.476", + "44.915", + "46.396", + "46.376", + "47.292", + "50.773", + "52.743", + "52.935", + "56.556", + "59.257", + "60.048", + "63.098", + "62.966", + "67.646", + "65.683", + "68.444", + "67.848", + "66.621", + "68.015", + "67.102", + "64.428", + "60.755", + "59.689", + "57.044", + "55.574", + "51.540", + "52.691", + "48.970", + "46.818", + "45.425", + "45.621", + "43.108", + "44.562", + "42.656" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.434", + "1.045", + "1.747", + "3.169", + "3.970", + "5.109", + "5.910", + "6.885", + "8.569", + "9.383", + "9.904", + "11.424", + "13.678", + "12.960", + "14.727", + "15.540", + "16.658", + "18.408", + "16.988", + "18.629", + "19.390", + "18.581", + "20.078", + "21.201", + "20.616", + "19.713", + "19.579", + "19.125", + "19.918", + "19.452", + "17.639", + "17.040", + "16.400", + "16.810", + "14.868", + "13.497", + "12.970", + "10.718", + "10.467", + "9.484", + "7.814", + "6.594", + "6.084", + "4.793", + "3.484", + "2.782", + "1.702", + "1.104", + "0.429", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "228.89", + "228.60", + "214.85", + "224.92", + "210.48", + "196.74", + "191.26", + "182.40", + "173.20", + "169.27", + "171.12", + "159.69", + "152.61", + "165.09", + "162.93", + "161.06", + "164.00", + "169.81", + "166.92", + "177.16", + "186.46", + "184.11", + "204.80", + "191.81", + "215.26", + "220.84", + "234.80", + "234.91", + "249.08", + "247.67", + "267.06", + "254.14", + "279.93", + "287.65", + "305.65", + "312.00", + "301.71", + "333.21", + "326.73", + "348.19", + "365.87", + "348.84", + "373.23", + "362.06", + "379.75", + "338.17", + "354.07", + "362.82", + "345.18", + "348.36", + "312.17", + "317.16", + "303.98", + "300.51", + "282.77", + "264.60", + "267.39", + "268.73", + "274.61", + "265.30", + "268.69", + "277.06", + "266.09", + "283.30", + "283.27", + "298.01", + "298.09", + "357.03", + "338.80", + "371.32", + "420.07", + "450.38", + "470.95", + "492.80", + "517.94", + "505.98", + "532.69", + "532.84", + "525.67", + "485.23", + "455.97", + "463.31", + "436.83", + "403.45", + "377.86", + "364.48", + "348.02", + "325.44", + "313.08", + "295.34", + "300.54", + "277.98", + "294.78", + "286.57", + "267.13", + "279.18" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-17", + "weekend": true, + "load_mw": [ + "30.977", + "30.820", + "31.067", + "31.006", + "30.220", + "29.625", + "28.552", + "29.013", + "27.840", + "27.102", + "26.573", + "26.232", + "26.994", + "26.083", + "26.248", + "27.310", + "26.922", + "27.139", + "29.140", + "28.584", + "29.015", + "29.187", + "31.096", + "32.232", + "32.784", + "35.226", + "34.063", + "35.908", + "36.574", + "37.743", + "39.469", + "38.054", + "39.546", + "43.031", + "43.035", + "41.833", + "44.761", + "47.075", + "48.720", + "48.929", + "52.478", + "51.540", + "52.549", + "54.279", + "54.040", + "53.977", + "51.633", + "51.230", + "50.539", + "49.979", + "47.143", + "44.610", + "45.651", + "44.075", + "43.444", + "42.285", + "41.967", + "40.695", + "39.658", + "40.302", + "40.192", + "36.912", + "38.309", + "39.917", + "38.505", + "40.478", + "41.326", + "43.258", + "44.673", + "48.217", + "47.880", + "51.510", + "52.971", + "53.954", + "57.563", + "59.422", + "59.847", + "58.582", + "58.519", + "60.036", + "56.914", + "58.517", + "56.263", + "53.273", + "51.722", + "48.514", + "49.805", + "46.885", + "45.124", + "42.842", + "39.308", + "40.480", + "39.682", + "36.361", + "40.312", + "38.869" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.504", + "1.309", + "2.151", + "3.194", + "4.540", + "5.740", + "6.892", + "9.135", + "9.283", + "11.209", + "13.347", + "14.229", + "15.126", + "15.476", + "17.324", + "18.579", + "19.836", + "19.650", + "22.830", + "23.442", + "25.451", + "23.581", + "23.977", + "23.352", + "21.599", + "21.714", + "23.606", + "21.478", + "21.831", + "21.416", + "21.627", + "21.324", + "21.049", + "19.370", + "18.863", + "16.195", + "14.288", + "13.895", + "11.304", + "11.320", + "8.823", + "8.392", + "7.656", + "5.479", + "4.377", + "3.092", + "2.081", + "1.204", + "0.477", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "237.99", + "225.79", + "234.11", + "227.61", + "207.72", + "199.46", + "200.13", + "192.12", + "192.77", + "181.24", + "183.63", + "181.93", + "166.41", + "168.27", + "165.45", + "164.86", + "162.08", + "172.03", + "173.35", + "185.45", + "188.07", + "193.02", + "208.82", + "205.16", + "215.82", + "231.28", + "227.75", + "246.20", + "240.29", + "250.07", + "272.26", + "264.64", + "291.53", + "298.08", + "309.09", + "298.14", + "289.04", + "321.66", + "316.81", + "343.25", + "357.27", + "368.31", + "347.66", + "355.83", + "369.72", + "370.75", + "341.74", + "338.54", + "329.08", + "317.23", + "306.11", + "317.39", + "294.10", + "287.24", + "290.89", + "277.43", + "265.09", + "263.71", + "263.18", + "258.71", + "266.04", + "268.78", + "268.49", + "271.95", + "288.58", + "309.08", + "314.71", + "327.48", + "340.43", + "392.44", + "411.16", + "430.70", + "450.97", + "494.10", + "514.86", + "513.76", + "489.43", + "511.17", + "520.50", + "505.31", + "484.71", + "454.29", + "433.89", + "387.21", + "370.49", + "369.67", + "349.38", + "326.07", + "305.63", + "282.49", + "305.66", + "290.28", + "313.83", + "279.24", + "282.27", + "286.63" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-18", + "weekend": true, + "load_mw": [ + "31.560", + "29.963", + "29.602", + "29.445", + "29.145", + "27.633", + "27.005", + "27.883", + "26.162", + "26.169", + "25.352", + "25.431", + "24.353", + "25.883", + "25.178", + "25.415", + "25.768", + "26.230", + "27.648", + "27.555", + "28.772", + "28.745", + "29.776", + "31.761", + "31.223", + "31.898", + "32.409", + "34.772", + "34.935", + "34.086", + "36.109", + "37.109", + "40.703", + "41.515", + "41.244", + "43.095", + "43.610", + "45.174", + "45.828", + "46.829", + "49.070", + "50.157", + "51.371", + "48.827", + "50.834", + "48.662", + "47.829", + "50.001", + "49.294", + "47.899", + "46.391", + "44.187", + "43.661", + "43.597", + "42.283", + "40.686", + "40.954", + "39.737", + "39.144", + "38.087", + "36.881", + "37.842", + "36.763", + "36.594", + "38.816", + "39.493", + "41.267", + "40.049", + "42.229", + "43.953", + "46.046", + "49.167", + "49.342", + "51.433", + "52.058", + "54.536", + "57.970", + "57.885", + "58.190", + "57.593", + "54.595", + "54.931", + "55.159", + "50.474", + "50.918", + "47.934", + "47.025", + "44.098", + "42.531", + "42.481", + "39.982", + "38.479", + "38.238", + "36.711", + "35.118", + "35.891" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.472", + "1.308", + "2.170", + "3.540", + "4.931", + "6.005", + "7.467", + "8.798", + "10.774", + "11.485", + "13.665", + "12.968", + "16.573", + "15.715", + "17.669", + "19.325", + "22.202", + "19.657", + "23.013", + "21.576", + "23.512", + "23.445", + "21.250", + "21.664", + "23.311", + "24.674", + "26.055", + "22.879", + "23.526", + "23.746", + "21.979", + "19.960", + "21.089", + "17.742", + "18.344", + "16.008", + "14.242", + "13.382", + "13.177", + "12.190", + "10.137", + "8.778", + "7.204", + "5.668", + "4.665", + "3.658", + "2.462", + "1.258", + "0.499", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "247.17", + "231.43", + "223.95", + "232.40", + "223.23", + "207.04", + "196.59", + "190.74", + "194.17", + "183.80", + "178.15", + "161.21", + "175.25", + "161.73", + "171.04", + "163.82", + "170.20", + "179.81", + "178.44", + "187.67", + "192.58", + "191.29", + "211.08", + "202.81", + "221.98", + "231.25", + "239.07", + "245.50", + "244.06", + "245.40", + "247.11", + "273.10", + "280.35", + "294.67", + "292.31", + "307.79", + "312.18", + "311.85", + "322.94", + "341.05", + "344.21", + "366.69", + "353.11", + "329.99", + "342.42", + "329.01", + "340.66", + "358.63", + "310.60", + "316.54", + "332.65", + "309.63", + "291.76", + "263.95", + "301.73", + "267.05", + "277.15", + "262.81", + "251.82", + "249.05", + "254.17", + "255.69", + "265.02", + "269.14", + "287.39", + "297.85", + "325.41", + "330.53", + "344.33", + "373.65", + "406.39", + "445.81", + "473.20", + "482.00", + "505.06", + "505.70", + "537.30", + "528.60", + "485.29", + "481.43", + "471.43", + "447.51", + "435.19", + "376.48", + "376.39", + "372.95", + "328.88", + "333.20", + "325.35", + "313.67", + "306.01", + "297.45", + "299.18", + "302.51", + "283.15", + "278.33" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-19", + "weekend": false, + "load_mw": [ + "35.788", + "35.256", + "35.777", + "34.593", + "32.663", + "34.553", + "33.045", + "31.749", + "30.947", + "30.640", + "30.932", + "30.353", + "29.557", + "30.843", + "30.493", + "30.892", + "31.144", + "31.432", + "32.833", + "33.458", + "33.663", + "34.808", + "36.204", + "37.552", + "36.518", + "38.958", + "40.784", + "41.215", + "41.297", + "41.994", + "43.624", + "44.756", + "47.169", + "48.486", + "50.212", + "49.213", + "52.413", + "53.205", + "53.614", + "60.122", + "58.255", + "60.834", + "61.119", + "58.844", + "58.484", + "59.656", + "59.958", + "58.597", + "58.559", + "56.400", + "56.676", + "53.493", + "52.660", + "51.342", + "49.736", + "48.007", + "46.195", + "47.250", + "47.238", + "45.525", + "44.403", + "43.701", + "43.466", + "45.392", + "44.792", + "44.996", + "46.750", + "49.017", + "51.380", + "53.112", + "54.230", + "55.810", + "58.280", + "59.090", + "61.593", + "65.203", + "69.370", + "67.665", + "68.612", + "67.932", + "66.896", + "66.154", + "64.648", + "63.033", + "61.030", + "57.836", + "54.146", + "53.612", + "51.715", + "47.626", + "46.626", + "45.914", + "44.362", + "42.087", + "41.489", + "43.127" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.438", + "1.267", + "2.092", + "3.428", + "4.585", + "5.308", + "7.008", + "7.864", + "9.484", + "11.113", + "11.775", + "13.136", + "14.667", + "15.008", + "17.515", + "20.039", + "19.684", + "21.195", + "20.463", + "22.131", + "20.392", + "24.341", + "22.680", + "22.268", + "22.290", + "21.700", + "21.357", + "21.722", + "22.416", + "22.912", + "22.535", + "19.845", + "19.580", + "16.419", + "17.295", + "15.098", + "14.925", + "12.939", + "13.069", + "11.314", + "8.828", + "8.582", + "7.114", + "5.341", + "4.736", + "2.782", + "2.146", + "1.256", + "0.489", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.64", + "225.47", + "232.35", + "215.93", + "207.46", + "203.55", + "187.92", + "184.90", + "176.24", + "174.28", + "169.72", + "178.57", + "170.02", + "166.21", + "160.33", + "165.96", + "171.51", + "168.92", + "182.14", + "177.06", + "179.83", + "193.73", + "195.46", + "206.41", + "212.11", + "222.31", + "236.37", + "227.20", + "246.26", + "258.14", + "262.84", + "256.42", + "287.23", + "279.77", + "295.54", + "295.37", + "323.08", + "345.87", + "325.01", + "339.32", + "338.58", + "359.27", + "370.61", + "338.21", + "383.90", + "344.10", + "357.95", + "356.59", + "337.49", + "319.93", + "311.37", + "323.59", + "289.92", + "314.03", + "269.83", + "282.75", + "257.31", + "258.57", + "266.47", + "267.58", + "254.83", + "269.11", + "267.34", + "277.05", + "290.01", + "305.61", + "314.65", + "333.14", + "347.47", + "383.42", + "399.42", + "422.98", + "463.74", + "475.87", + "523.00", + "541.68", + "544.46", + "534.75", + "513.07", + "504.50", + "480.47", + "464.79", + "438.13", + "428.67", + "394.11", + "379.68", + "347.31", + "346.98", + "328.21", + "297.40", + "290.38", + "287.58", + "301.58", + "289.03", + "289.21", + "285.84" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-20", + "weekend": false, + "load_mw": [ + "34.165", + "33.200", + "32.521", + "33.355", + "32.088", + "30.625", + "30.708", + "29.659", + "29.028", + "28.251", + "28.420", + "27.147", + "27.843", + "27.939", + "30.544", + "28.403", + "30.013", + "29.951", + "29.606", + "32.469", + "33.035", + "31.913", + "33.682", + "34.735", + "35.504", + "36.921", + "36.818", + "37.835", + "39.848", + "38.897", + "39.766", + "42.488", + "43.351", + "44.273", + "45.624", + "48.039", + "49.655", + "51.111", + "50.918", + "54.093", + "55.831", + "53.683", + "56.176", + "57.336", + "58.390", + "56.090", + "54.772", + "52.382", + "55.007", + "53.964", + "52.923", + "51.789", + "50.104", + "49.995", + "46.819", + "46.226", + "47.138", + "44.295", + "42.659", + "41.530", + "42.227", + "42.153", + "42.804", + "42.521", + "43.742", + "43.194", + "44.715", + "46.087", + "45.180", + "50.681", + "50.960", + "53.843", + "57.046", + "57.463", + "59.537", + "59.362", + "61.996", + "61.734", + "65.049", + "63.205", + "62.442", + "61.509", + "60.490", + "59.884", + "55.785", + "52.762", + "51.894", + "49.365", + "47.321", + "46.567", + "43.678", + "41.964", + "40.258", + "40.934", + "40.358", + "40.437" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.510", + "1.366", + "2.501", + "3.345", + "4.562", + "6.240", + "7.948", + "9.488", + "9.708", + "11.943", + "12.460", + "14.825", + "16.639", + "17.411", + "18.116", + "20.629", + "20.380", + "21.695", + "23.975", + "24.025", + "22.774", + "23.246", + "23.603", + "24.804", + "25.499", + "24.629", + "25.035", + "27.184", + "22.016", + "22.202", + "23.614", + "22.459", + "21.664", + "19.664", + "18.834", + "17.620", + "17.461", + "14.641", + "12.175", + "11.702", + "10.412", + "9.659", + "7.681", + "5.786", + "4.535", + "3.611", + "2.352", + "1.312", + "0.479", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "243.80", + "238.60", + "218.33", + "227.32", + "208.59", + "197.78", + "194.91", + "193.95", + "178.32", + "164.80", + "180.00", + "163.57", + "165.78", + "173.06", + "167.87", + "169.86", + "165.42", + "170.89", + "177.20", + "179.49", + "185.24", + "189.20", + "209.99", + "209.57", + "211.60", + "222.00", + "241.59", + "245.06", + "262.91", + "262.27", + "263.49", + "264.94", + "288.49", + "281.34", + "299.39", + "312.09", + "312.46", + "321.00", + "329.84", + "339.92", + "346.05", + "354.83", + "356.35", + "368.58", + "357.81", + "355.78", + "344.49", + "364.09", + "362.07", + "330.92", + "320.64", + "299.40", + "293.01", + "287.78", + "280.45", + "281.73", + "275.75", + "252.96", + "261.07", + "249.08", + "268.11", + "267.54", + "278.42", + "290.90", + "279.04", + "292.01", + "320.28", + "343.03", + "370.90", + "382.10", + "414.59", + "432.83", + "464.42", + "492.65", + "537.69", + "522.04", + "498.28", + "497.79", + "510.74", + "497.26", + "470.69", + "487.60", + "420.64", + "407.51", + "380.61", + "348.95", + "354.98", + "342.06", + "313.27", + "308.98", + "272.96", + "300.01", + "285.67", + "290.76", + "272.07", + "270.19" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-21", + "weekend": false, + "load_mw": [ + "32.771", + "35.120", + "32.306", + "32.745", + "31.853", + "30.500", + "29.601", + "28.537", + "29.141", + "29.318", + "27.917", + "28.723", + "28.059", + "26.940", + "27.924", + "27.097", + "28.108", + "29.007", + "29.862", + "31.275", + "31.319", + "31.956", + "32.724", + "34.059", + "34.560", + "34.432", + "36.494", + "38.387", + "39.807", + "39.964", + "40.430", + "42.234", + "44.433", + "43.614", + "45.852", + "46.051", + "48.510", + "51.222", + "51.124", + "52.320", + "54.260", + "56.221", + "55.585", + "55.847", + "56.954", + "54.404", + "55.997", + "54.621", + "52.000", + "53.248", + "52.447", + "49.744", + "49.576", + "47.216", + "45.691", + "46.101", + "42.717", + "42.748", + "41.169", + "41.602", + "42.570", + "41.012", + "41.219", + "42.016", + "41.718", + "42.660", + "43.789", + "45.493", + "47.526", + "49.565", + "52.334", + "52.816", + "54.895", + "57.345", + "59.975", + "60.154", + "63.165", + "63.987", + "62.465", + "63.290", + "61.611", + "60.072", + "58.300", + "60.058", + "55.705", + "51.523", + "51.486", + "48.961", + "47.184", + "46.481", + "41.941", + "41.594", + "41.154", + "40.293", + "40.312", + "39.330" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.504", + "1.378", + "2.256", + "3.913", + "5.050", + "6.348", + "7.264", + "9.471", + "10.320", + "12.542", + "13.110", + "16.109", + "16.791", + "17.685", + "19.492", + "22.304", + "23.835", + "23.691", + "23.312", + "23.622", + "24.226", + "23.683", + "24.629", + "25.375", + "24.106", + "26.466", + "27.963", + "25.897", + "23.978", + "25.733", + "23.020", + "21.970", + "20.979", + "18.084", + "18.976", + "16.245", + "16.550", + "14.594", + "13.658", + "11.795", + "10.810", + "9.662", + "7.542", + "6.043", + "4.788", + "3.508", + "2.539", + "1.379", + "0.491", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "222.43", + "240.38", + "226.86", + "218.10", + "212.85", + "205.02", + "201.19", + "200.76", + "182.12", + "183.56", + "171.54", + "173.45", + "163.15", + "169.81", + "168.58", + "167.04", + "166.79", + "177.28", + "178.38", + "179.74", + "177.41", + "192.49", + "197.31", + "204.98", + "219.83", + "229.90", + "231.97", + "228.47", + "269.43", + "262.08", + "273.73", + "295.61", + "287.92", + "290.32", + "305.95", + "300.17", + "300.51", + "309.56", + "314.81", + "334.78", + "345.35", + "365.55", + "336.25", + "348.41", + "374.93", + "352.70", + "344.18", + "314.69", + "319.72", + "306.93", + "312.14", + "305.15", + "305.97", + "274.25", + "274.69", + "272.93", + "277.27", + "264.29", + "269.20", + "258.13", + "254.88", + "272.02", + "275.93", + "280.47", + "288.78", + "312.49", + "322.47", + "312.41", + "353.99", + "384.87", + "413.76", + "453.44", + "459.92", + "484.21", + "514.15", + "535.63", + "527.68", + "496.22", + "522.40", + "478.18", + "482.72", + "460.36", + "413.21", + "415.92", + "375.08", + "376.91", + "342.42", + "335.23", + "325.51", + "319.39", + "304.22", + "279.91", + "318.81", + "286.15", + "293.58", + "278.88" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-22", + "weekend": false, + "load_mw": [ + "36.572", + "34.308", + "34.363", + "34.031", + "34.032", + "31.586", + "32.090", + "30.492", + "31.100", + "30.593", + "28.233", + "29.793", + "30.097", + "28.457", + "29.574", + "29.911", + "29.116", + "31.423", + "32.144", + "32.392", + "32.795", + "34.592", + "34.582", + "34.961", + "37.819", + "38.019", + "38.610", + "39.311", + "39.597", + "40.431", + "43.145", + "45.608", + "46.599", + "46.943", + "47.313", + "49.879", + "52.639", + "54.257", + "53.550", + "54.213", + "56.072", + "58.371", + "57.529", + "58.736", + "58.098", + "58.541", + "58.061", + "58.421", + "56.674", + "53.972", + "54.070", + "51.835", + "50.551", + "50.953", + "48.297", + "45.836", + "44.939", + "46.337", + "45.696", + "44.500", + "43.324", + "43.158", + "45.867", + "44.325", + "42.314", + "44.387", + "47.953", + "46.367", + "48.801", + "53.214", + "52.788", + "55.820", + "58.758", + "60.415", + "62.593", + "65.864", + "64.055", + "66.279", + "65.633", + "63.641", + "64.614", + "61.420", + "64.057", + "59.045", + "58.027", + "55.088", + "54.009", + "51.143", + "50.269", + "46.984", + "45.288", + "45.769", + "44.140", + "43.207", + "43.021", + "43.108" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.535", + "1.335", + "2.305", + "3.518", + "4.930", + "6.077", + "7.644", + "9.226", + "10.928", + "12.189", + "13.930", + "14.250", + "15.850", + "16.454", + "17.533", + "19.889", + "20.927", + "21.212", + "22.854", + "24.554", + "25.447", + "22.694", + "25.363", + "25.615", + "26.493", + "23.895", + "25.605", + "24.239", + "23.751", + "24.453", + "22.982", + "21.300", + "21.396", + "19.671", + "19.353", + "18.772", + "17.245", + "16.966", + "13.623", + "12.433", + "10.725", + "8.946", + "8.036", + "5.639", + "4.669", + "3.636", + "2.445", + "1.203", + "0.496", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "254.08", + "233.12", + "225.99", + "218.87", + "209.61", + "187.70", + "187.06", + "192.33", + "180.22", + "170.75", + "167.20", + "169.36", + "172.58", + "163.44", + "152.57", + "155.08", + "165.63", + "175.23", + "177.70", + "180.61", + "190.86", + "196.17", + "201.99", + "214.64", + "223.49", + "223.70", + "259.96", + "245.96", + "253.42", + "256.89", + "257.46", + "278.64", + "276.25", + "291.62", + "291.14", + "312.71", + "316.85", + "336.19", + "338.39", + "350.99", + "372.58", + "364.22", + "331.52", + "341.12", + "332.16", + "338.39", + "356.89", + "354.13", + "334.49", + "320.79", + "311.90", + "313.14", + "306.19", + "303.71", + "292.92", + "265.10", + "257.96", + "270.88", + "267.65", + "264.05", + "259.93", + "262.51", + "283.00", + "278.88", + "277.88", + "289.64", + "312.84", + "322.15", + "349.24", + "376.68", + "422.23", + "438.67", + "446.05", + "462.94", + "528.69", + "524.36", + "529.41", + "521.05", + "529.90", + "479.05", + "459.42", + "441.47", + "416.37", + "415.02", + "382.34", + "360.66", + "324.07", + "330.39", + "315.16", + "308.05", + "316.47", + "293.39", + "285.85", + "293.17", + "289.20", + "288.14" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-23", + "weekend": false, + "load_mw": [ + "35.872", + "35.969", + "35.028", + "33.484", + "34.206", + "33.085", + "30.316", + "31.066", + "29.036", + "30.343", + "29.731", + "28.738", + "29.290", + "30.690", + "29.511", + "29.767", + "30.814", + "30.172", + "32.046", + "31.682", + "32.534", + "32.936", + "34.567", + "35.853", + "35.987", + "37.833", + "37.213", + "39.174", + "39.910", + "43.177", + "42.419", + "43.375", + "47.046", + "45.578", + "47.553", + "50.969", + "52.902", + "54.632", + "52.311", + "54.221", + "54.691", + "56.295", + "58.539", + "56.438", + "58.658", + "58.719", + "57.068", + "55.187", + "56.019", + "54.357", + "54.107", + "54.764", + "51.709", + "49.747", + "49.826", + "47.302", + "47.685", + "44.746", + "44.927", + "43.939", + "43.285", + "44.621", + "42.499", + "43.530", + "44.968", + "45.606", + "45.167", + "50.409", + "49.293", + "50.566", + "54.144", + "55.119", + "57.072", + "60.198", + "63.325", + "61.911", + "66.148", + "65.792", + "64.891", + "64.991", + "65.371", + "64.204", + "60.910", + "58.998", + "57.450", + "54.922", + "53.483", + "51.365", + "48.656", + "46.773", + "45.052", + "43.845", + "42.215", + "42.640", + "41.738", + "42.356" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.358", + "0.934", + "1.729", + "2.526", + "3.096", + "4.088", + "5.440", + "5.668", + "6.910", + "8.231", + "8.063", + "9.519", + "10.598", + "11.371", + "11.653", + "12.340", + "14.668", + "13.598", + "15.073", + "15.086", + "16.734", + "17.266", + "17.109", + "16.145", + "17.791", + "16.035", + "16.623", + "17.159", + "16.508", + "15.394", + "15.635", + "13.471", + "13.589", + "13.354", + "13.370", + "12.546", + "10.877", + "10.654", + "8.389", + "8.623", + "6.762", + "5.822", + "5.069", + "4.233", + "3.153", + "2.404", + "1.589", + "0.909", + "0.336", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.14", + "239.13", + "215.98", + "211.60", + "200.57", + "209.72", + "189.98", + "199.73", + "177.31", + "176.41", + "175.06", + "157.70", + "156.21", + "171.04", + "159.25", + "159.40", + "159.74", + "159.32", + "174.27", + "175.35", + "183.09", + "187.61", + "201.91", + "212.33", + "217.34", + "230.85", + "233.45", + "225.75", + "244.41", + "265.07", + "266.45", + "264.14", + "274.90", + "289.95", + "302.31", + "297.35", + "331.63", + "334.28", + "331.92", + "316.56", + "361.88", + "349.52", + "362.18", + "367.60", + "368.30", + "330.49", + "353.04", + "335.30", + "341.65", + "327.73", + "321.75", + "315.86", + "321.58", + "306.97", + "276.71", + "279.02", + "290.42", + "276.82", + "280.16", + "261.28", + "281.03", + "260.63", + "279.74", + "281.74", + "285.14", + "303.45", + "317.54", + "348.52", + "358.95", + "398.74", + "398.34", + "435.63", + "484.12", + "470.27", + "501.68", + "533.65", + "510.84", + "534.30", + "507.93", + "463.68", + "484.63", + "435.27", + "434.51", + "402.58", + "395.33", + "371.95", + "345.38", + "328.48", + "314.56", + "306.90", + "298.42", + "276.93", + "284.81", + "291.23", + "278.41", + "286.84" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-24", + "weekend": true, + "load_mw": [ + "31.986", + "30.845", + "29.213", + "29.293", + "29.353", + "27.757", + "26.282", + "27.396", + "26.448", + "26.597", + "25.092", + "24.571", + "25.513", + "24.290", + "25.100", + "25.306", + "26.527", + "26.521", + "27.372", + "27.333", + "28.790", + "28.851", + "30.297", + "31.443", + "30.101", + "32.591", + "32.856", + "33.218", + "35.066", + "36.610", + "36.051", + "37.397", + "39.106", + "41.350", + "42.143", + "43.046", + "43.084", + "44.793", + "47.413", + "47.052", + "49.304", + "49.399", + "49.148", + "51.712", + "49.290", + "51.133", + "49.662", + "48.209", + "49.449", + "46.995", + "46.687", + "45.367", + "43.843", + "41.412", + "42.753", + "39.907", + "41.003", + "40.293", + "39.319", + "37.165", + "37.629", + "37.515", + "36.760", + "37.291", + "39.629", + "38.823", + "41.335", + "40.830", + "42.953", + "45.990", + "46.132", + "47.276", + "49.959", + "52.009", + "55.706", + "53.294", + "56.084", + "56.531", + "57.405", + "57.195", + "55.719", + "55.618", + "54.684", + "51.435", + "49.831", + "47.292", + "45.542", + "43.307", + "42.910", + "40.115", + "40.607", + "38.785", + "37.016", + "35.968", + "36.751", + "35.173" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.344", + "0.933", + "1.705", + "2.751", + "3.501", + "4.682", + "5.764", + "6.947", + "8.301", + "9.088", + "9.499", + "10.774", + "11.773", + "12.884", + "12.866", + "14.396", + "15.785", + "14.284", + "16.667", + "16.414", + "17.497", + "16.627", + "19.153", + "18.603", + "16.823", + "19.189", + "17.500", + "18.657", + "17.417", + "17.531", + "15.830", + "15.221", + "14.919", + "14.120", + "14.426", + "12.421", + "10.703", + "11.080", + "10.183", + "8.756", + "7.759", + "6.849", + "4.815", + "4.482", + "3.635", + "2.654", + "1.743", + "0.981", + "0.395", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "239.75", + "231.96", + "234.91", + "224.91", + "208.93", + "205.71", + "196.62", + "189.52", + "175.80", + "176.17", + "170.44", + "162.73", + "168.36", + "163.72", + "161.47", + "161.67", + "174.76", + "172.41", + "176.67", + "175.70", + "192.47", + "182.33", + "199.47", + "213.37", + "212.70", + "227.39", + "228.85", + "231.46", + "246.79", + "252.39", + "257.07", + "276.13", + "272.96", + "290.44", + "292.21", + "305.77", + "324.46", + "319.81", + "335.52", + "326.41", + "355.34", + "352.10", + "350.80", + "351.81", + "359.18", + "380.50", + "351.36", + "359.33", + "364.99", + "360.57", + "332.37", + "300.39", + "299.92", + "298.89", + "280.55", + "272.72", + "268.90", + "271.29", + "268.94", + "254.62", + "270.94", + "287.73", + "283.76", + "278.77", + "273.74", + "292.27", + "327.26", + "358.84", + "362.69", + "365.15", + "403.50", + "432.08", + "458.82", + "475.39", + "476.25", + "503.91", + "517.93", + "515.99", + "513.00", + "510.85", + "450.55", + "451.99", + "418.49", + "388.83", + "375.26", + "337.14", + "354.54", + "331.59", + "314.20", + "301.29", + "295.81", + "290.20", + "289.28", + "285.67", + "273.20", + "275.59" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-25", + "weekend": true, + "load_mw": [ + "29.715", + "28.740", + "29.039", + "28.513", + "26.010", + "26.766", + "25.662", + "25.250", + "25.357", + "23.803", + "25.194", + "24.566", + "24.838", + "24.050", + "24.943", + "24.219", + "25.549", + "25.245", + "26.483", + "25.392", + "27.452", + "28.444", + "28.937", + "29.876", + "31.165", + "31.299", + "31.409", + "33.444", + "33.035", + "34.426", + "35.518", + "37.802", + "37.393", + "38.809", + "39.033", + "41.142", + "43.721", + "43.160", + "44.959", + "45.833", + "49.333", + "48.677", + "47.449", + "48.011", + "48.262", + "46.504", + "48.095", + "46.307", + "46.395", + "46.713", + "46.010", + "44.326", + "41.722", + "42.060", + "39.200", + "39.259", + "38.717", + "37.157", + "37.226", + "36.417", + "35.177", + "37.787", + "36.795", + "35.671", + "36.443", + "36.687", + "38.602", + "40.673", + "40.706", + "41.476", + "44.298", + "45.841", + "47.127", + "48.822", + "49.820", + "52.227", + "53.604", + "54.042", + "55.403", + "52.452", + "53.823", + "53.516", + "50.662", + "49.715", + "49.306", + "44.269", + "45.805", + "40.627", + "40.013", + "40.447", + "38.267", + "37.699", + "35.456", + "36.406", + "34.809", + "33.546" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.410", + "1.218", + "2.072", + "2.992", + "3.908", + "4.920", + "6.253", + "6.916", + "7.583", + "10.218", + "10.935", + "12.947", + "12.616", + "13.976", + "13.507", + "16.587", + "16.606", + "19.665", + "18.721", + "21.799", + "19.398", + "20.384", + "20.530", + "20.987", + "20.338", + "20.743", + "19.891", + "21.124", + "19.063", + "18.842", + "18.370", + "17.526", + "17.098", + "16.359", + "15.470", + "13.348", + "12.598", + "12.333", + "11.136", + "10.140", + "8.826", + "7.014", + "6.051", + "4.552", + "3.796", + "2.723", + "1.936", + "1.089", + "0.393", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "239.82", + "229.23", + "226.25", + "206.25", + "215.10", + "191.52", + "196.62", + "192.86", + "177.43", + "182.76", + "180.76", + "179.71", + "171.56", + "173.00", + "156.15", + "164.47", + "182.52", + "176.52", + "176.38", + "181.36", + "180.42", + "193.98", + "204.32", + "214.01", + "223.25", + "224.94", + "230.51", + "235.98", + "252.64", + "251.09", + "270.15", + "278.51", + "291.49", + "277.89", + "298.15", + "320.87", + "334.51", + "326.67", + "332.95", + "344.30", + "356.02", + "357.78", + "338.71", + "364.34", + "363.16", + "330.11", + "339.56", + "345.99", + "331.32", + "335.74", + "331.26", + "318.79", + "293.57", + "308.35", + "281.19", + "280.94", + "266.53", + "270.59", + "266.47", + "267.51", + "255.50", + "285.03", + "287.46", + "269.22", + "274.55", + "288.49", + "316.85", + "327.83", + "347.33", + "392.31", + "423.20", + "421.72", + "847.41", + "908.02", + "971.85", + "1012.19", + "971.08", + "955.67", + "963.23", + "921.10", + "882.34", + "824.16", + "798.67", + "767.57", + "724.74", + "670.11", + "668.18", + "613.16", + "313.59", + "306.68", + "293.54", + "299.71", + "292.85", + "292.73", + "281.35", + "277.98" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-26", + "weekend": false, + "load_mw": [ + "37.157", + "36.897", + "35.768", + "33.899", + "34.162", + "33.054", + "32.831", + "32.622", + "31.459", + "31.425", + "30.118", + "30.067", + "30.326", + "28.789", + "31.936", + "30.305", + "31.177", + "31.453", + "33.088", + "32.346", + "33.430", + "34.282", + "35.357", + "35.596", + "37.710", + "38.778", + "39.759", + "40.671", + "41.863", + "42.640", + "44.274", + "45.533", + "46.927", + "49.127", + "51.139", + "51.754", + "51.407", + "55.094", + "54.448", + "56.215", + "58.054", + "60.921", + "58.795", + "60.659", + "61.643", + "59.705", + "60.386", + "60.247", + "59.163", + "60.078", + "55.932", + "56.322", + "52.839", + "52.931", + "49.873", + "48.837", + "49.160", + "45.334", + "45.566", + "46.809", + "47.125", + "44.688", + "44.249", + "45.468", + "45.735", + "46.380", + "47.452", + "48.196", + "49.627", + "53.704", + "56.650", + "58.375", + "60.924", + "63.357", + "65.926", + "66.665", + "66.286", + "67.442", + "69.290", + "68.954", + "67.068", + "65.481", + "65.033", + "61.931", + "59.738", + "59.006", + "55.096", + "52.809", + "51.275", + "49.139", + "47.665", + "45.390", + "45.610", + "44.423", + "43.468", + "43.769" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.472", + "1.240", + "2.007", + "3.135", + "4.378", + "5.988", + "6.370", + "7.858", + "9.651", + "9.748", + "11.736", + "11.690", + "14.779", + "15.079", + "15.431", + "18.347", + "16.751", + "18.182", + "19.882", + "21.363", + "20.276", + "20.205", + "23.947", + "20.738", + "24.453", + "23.072", + "22.157", + "21.672", + "21.633", + "20.652", + "19.639", + "17.740", + "18.390", + "16.959", + "16.884", + "16.289", + "14.205", + "12.765", + "12.048", + "10.476", + "9.256", + "7.375", + "6.386", + "5.357", + "4.049", + "3.126", + "2.178", + "1.246", + "0.464", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "233.20", + "227.82", + "216.47", + "205.20", + "204.99", + "207.43", + "185.41", + "183.29", + "179.76", + "172.84", + "172.88", + "165.68", + "156.00", + "150.22", + "167.07", + "155.91", + "165.96", + "167.39", + "171.67", + "169.55", + "189.60", + "198.71", + "199.05", + "200.73", + "215.55", + "217.85", + "237.24", + "242.70", + "250.16", + "254.56", + "256.07", + "275.83", + "277.66", + "292.22", + "305.77", + "296.30", + "310.71", + "322.61", + "333.27", + "335.18", + "341.27", + "373.79", + "347.68", + "352.49", + "362.05", + "349.19", + "339.11", + "360.03", + "327.85", + "335.55", + "332.42", + "301.11", + "296.75", + "287.79", + "278.24", + "273.80", + "268.88", + "266.35", + "258.80", + "270.13", + "277.89", + "256.45", + "265.55", + "281.27", + "293.56", + "305.44", + "315.00", + "320.46", + "362.00", + "391.41", + "401.53", + "446.40", + "452.57", + "467.28", + "524.74", + "545.28", + "546.05", + "557.95", + "553.27", + "510.49", + "502.65", + "444.42", + "431.02", + "418.84", + "384.60", + "366.22", + "362.30", + "352.27", + "323.28", + "298.59", + "314.32", + "287.48", + "306.97", + "288.46", + "278.51", + "283.95" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-27", + "weekend": false, + "load_mw": [ + "34.695", + "34.364", + "32.544", + "33.921", + "31.906", + "30.742", + "30.663", + "30.270", + "29.268", + "28.097", + "28.226", + "29.379", + "27.803", + "27.913", + "28.411", + "30.439", + "29.435", + "29.468", + "30.680", + "29.866", + "32.863", + "32.446", + "32.663", + "34.602", + "35.235", + "36.498", + "37.462", + "39.349", + "40.044", + "41.638", + "41.485", + "42.716", + "43.832", + "46.094", + "46.515", + "46.965", + "49.001", + "50.790", + "53.325", + "53.415", + "54.655", + "55.939", + "56.584", + "58.424", + "55.540", + "56.948", + "56.046", + "57.583", + "53.080", + "53.114", + "54.744", + "51.299", + "47.955", + "49.841", + "45.887", + "45.680", + "45.195", + "44.283", + "43.147", + "43.277", + "41.879", + "43.133", + "43.551", + "41.602", + "42.568", + "42.989", + "44.770", + "46.388", + "48.982", + "49.895", + "50.950", + "53.791", + "58.231", + "58.097", + "61.929", + "63.723", + "64.623", + "62.995", + "66.211", + "64.690", + "61.942", + "59.933", + "60.116", + "59.076", + "53.750", + "54.561", + "52.362", + "48.493", + "47.069", + "46.274", + "44.203", + "43.982", + "43.311", + "40.867", + "41.398", + "39.289" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.478", + "1.374", + "2.510", + "3.701", + "4.838", + "6.746", + "8.029", + "9.487", + "10.767", + "11.785", + "13.353", + "13.533", + "14.717", + "17.550", + "18.464", + "21.060", + "19.921", + "22.242", + "20.243", + "25.657", + "24.558", + "24.587", + "25.643", + "24.703", + "26.204", + "26.592", + "27.019", + "26.017", + "24.651", + "22.213", + "22.445", + "22.496", + "18.933", + "19.757", + "19.063", + "17.123", + "16.999", + "14.914", + "13.738", + "11.766", + "9.951", + "9.476", + "7.120", + "5.887", + "5.031", + "3.729", + "2.487", + "1.472", + "0.519", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.66", + "233.73", + "220.79", + "216.63", + "211.21", + "194.91", + "195.03", + "196.52", + "176.80", + "183.94", + "173.68", + "179.41", + "172.23", + "164.89", + "163.47", + "183.03", + "167.37", + "161.49", + "172.61", + "182.89", + "197.01", + "191.04", + "195.67", + "217.57", + "217.77", + "228.32", + "241.08", + "251.79", + "262.87", + "252.74", + "265.79", + "259.04", + "269.09", + "292.86", + "280.23", + "297.76", + "316.77", + "316.01", + "343.45", + "335.85", + "356.62", + "347.83", + "358.99", + "358.54", + "348.78", + "355.28", + "330.60", + "351.50", + "330.70", + "325.96", + "333.95", + "302.29", + "299.27", + "283.64", + "280.57", + "273.55", + "273.75", + "272.45", + "261.78", + "272.60", + "265.82", + "255.30", + "279.35", + "280.14", + "288.54", + "293.10", + "330.80", + "310.42", + "365.21", + "381.11", + "381.05", + "420.45", + "451.74", + "464.44", + "487.64", + "543.90", + "532.28", + "513.81", + "525.91", + "511.01", + "468.95", + "457.33", + "444.35", + "419.61", + "365.53", + "372.72", + "333.82", + "335.60", + "308.22", + "312.61", + "313.62", + "286.88", + "297.53", + "285.78", + "293.87", + "281.25" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-28", + "weekend": false, + "load_mw": [ + "37.546", + "36.495", + "36.140", + "34.103", + "35.019", + "34.617", + "33.611", + "33.306", + "31.484", + "31.032", + "31.811", + "30.879", + "32.096", + "31.316", + "31.379", + "31.992", + "30.546", + "34.100", + "33.555", + "33.237", + "33.953", + "35.554", + "36.446", + "37.555", + "37.872", + "39.108", + "40.171", + "41.715", + "41.782", + "44.675", + "45.018", + "46.128", + "46.826", + "52.184", + "50.021", + "52.164", + "51.476", + "53.784", + "56.638", + "57.591", + "57.682", + "60.557", + "58.100", + "60.997", + "61.243", + "60.675", + "59.862", + "60.771", + "60.650", + "58.590", + "56.253", + "57.503", + "53.314", + "51.601", + "51.415", + "46.672", + "47.624", + "47.650", + "48.037", + "47.565", + "45.973", + "46.592", + "45.780", + "44.398", + "46.470", + "46.521", + "47.765", + "51.351", + "52.332", + "56.401", + "57.487", + "59.959", + "59.788", + "63.831", + "67.115", + "66.513", + "67.800", + "70.841", + "69.835", + "68.092", + "66.716", + "64.990", + "66.238", + "64.191", + "60.680", + "58.856", + "55.594", + "52.890", + "51.726", + "50.966", + "48.108", + "47.354", + "46.486", + "44.805", + "43.870", + "44.493" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.456", + "1.224", + "2.016", + "3.243", + "4.078", + "5.283", + "7.339", + "8.710", + "9.348", + "10.481", + "12.203", + "14.568", + "14.739", + "16.265", + "15.110", + "17.467", + "19.346", + "18.808", + "20.513", + "19.437", + "21.976", + "22.180", + "22.679", + "21.297", + "22.595", + "22.679", + "23.105", + "23.041", + "21.318", + "22.900", + "21.393", + "20.433", + "18.493", + "17.641", + "17.204", + "15.438", + "15.773", + "14.063", + "13.164", + "10.588", + "9.614", + "7.602", + "6.178", + "5.687", + "4.024", + "3.040", + "2.230", + "1.266", + "0.480", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "244.05", + "231.55", + "216.36", + "212.31", + "205.65", + "207.19", + "199.49", + "195.45", + "183.18", + "171.58", + "171.10", + "160.45", + "163.61", + "159.47", + "154.03", + "166.00", + "154.38", + "165.61", + "178.80", + "173.49", + "192.20", + "197.03", + "201.82", + "199.83", + "212.72", + "236.14", + "232.52", + "239.91", + "237.00", + "257.49", + "263.94", + "259.16", + "273.89", + "286.62", + "303.30", + "302.62", + "315.39", + "333.03", + "336.36", + "336.53", + "338.39", + "362.45", + "355.82", + "367.88", + "356.49", + "357.74", + "365.21", + "351.33", + "343.04", + "340.00", + "319.55", + "311.07", + "299.58", + "285.55", + "305.67", + "277.22", + "282.84", + "269.16", + "266.78", + "278.54", + "275.41", + "266.53", + "261.29", + "275.08", + "272.51", + "306.99", + "311.32", + "335.03", + "362.65", + "404.81", + "430.65", + "433.67", + "473.89", + "492.41", + "532.37", + "525.38", + "522.87", + "542.23", + "523.82", + "483.05", + "489.48", + "458.32", + "433.68", + "408.15", + "398.52", + "366.79", + "354.82", + "342.63", + "324.65", + "301.60", + "301.06", + "294.33", + "291.78", + "290.49", + "293.66", + "285.79" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-29", + "weekend": false, + "load_mw": [ + "39.164", + "36.915", + "35.687", + "35.196", + "34.816", + "34.660", + "32.338", + "33.153", + "31.827", + "32.379", + "30.635", + "31.053", + "30.959", + "30.272", + "30.496", + "31.378", + "31.968", + "32.324", + "32.281", + "34.571", + "34.748", + "35.892", + "37.056", + "37.201", + "38.928", + "39.870", + "41.731", + "41.313", + "42.164", + "44.746", + "45.921", + "46.148", + "47.044", + "49.783", + "51.943", + "51.184", + "55.840", + "55.014", + "56.343", + "58.763", + "60.466", + "61.211", + "62.139", + "62.563", + "59.945", + "62.203", + "61.849", + "59.025", + "60.558", + "59.344", + "55.437", + "56.191", + "55.328", + "54.212", + "50.744", + "49.775", + "48.417", + "48.754", + "46.598", + "47.636", + "45.278", + "46.546", + "45.842", + "46.155", + "47.308", + "48.682", + "49.265", + "50.874", + "51.318", + "54.416", + "56.911", + "60.542", + "62.004", + "63.929", + "65.019", + "64.366", + "68.762", + "67.409", + "68.678", + "70.866", + "68.590", + "67.418", + "65.398", + "64.115", + "60.981", + "57.506", + "54.635", + "56.423", + "50.813", + "49.105", + "49.594", + "45.658", + "46.298", + "45.642", + "45.192", + "42.599" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.451", + "1.203", + "2.162", + "3.085", + "4.035", + "5.024", + "5.991", + "7.752", + "9.055", + "10.473", + "10.263", + "13.020", + "12.776", + "14.793", + "15.544", + "15.040", + "16.809", + "17.001", + "18.646", + "18.128", + "19.648", + "20.688", + "22.569", + "20.808", + "19.642", + "20.063", + "20.692", + "18.727", + "19.312", + "19.132", + "20.225", + "16.995", + "16.563", + "15.532", + "15.564", + "14.469", + "12.347", + "12.430", + "11.389", + "9.668", + "8.542", + "6.871", + "6.057", + "5.428", + "4.444", + "3.092", + "1.956", + "1.172", + "0.431", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "228.27", + "233.27", + "217.28", + "210.29", + "215.25", + "202.73", + "184.37", + "183.52", + "181.19", + "177.72", + "169.62", + "165.61", + "161.59", + "166.50", + "162.41", + "165.05", + "172.17", + "165.60", + "167.57", + "184.31", + "182.38", + "199.04", + "195.54", + "205.11", + "215.50", + "232.67", + "239.94", + "239.62", + "246.31", + "241.75", + "265.35", + "271.44", + "282.67", + "285.75", + "292.74", + "304.13", + "308.91", + "329.25", + "325.93", + "333.73", + "343.25", + "355.83", + "362.56", + "368.10", + "363.39", + "365.67", + "353.30", + "337.36", + "346.42", + "343.61", + "317.13", + "321.97", + "301.33", + "303.83", + "281.76", + "270.74", + "271.06", + "265.08", + "257.81", + "273.56", + "264.95", + "262.42", + "273.93", + "286.05", + "292.32", + "287.75", + "318.33", + "334.75", + "350.32", + "395.25", + "398.01", + "439.97", + "460.76", + "491.20", + "452.65", + "518.09", + "519.86", + "536.10", + "527.44", + "475.96", + "461.34", + "458.38", + "430.76", + "400.19", + "378.48", + "375.01", + "327.06", + "326.86", + "327.05", + "298.58", + "299.25", + "303.17", + "282.34", + "280.74", + "298.11", + "272.41" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-30", + "weekend": false, + "load_mw": [ + "40.084", + "38.080", + "38.873", + "38.422", + "37.018", + "36.821", + "34.894", + "34.338", + "33.471", + "33.470", + "32.999", + "33.469", + "33.005", + "33.184", + "32.770", + "33.882", + "34.465", + "34.414", + "34.915", + "35.739", + "36.898", + "37.606", + "38.290", + "39.291", + "39.996", + "41.214", + "42.913", + "43.286", + "45.118", + "46.537", + "49.194", + "49.625", + "51.266", + "50.796", + "55.588", + "56.405", + "58.079", + "59.371", + "59.753", + "61.102", + "64.384", + "64.288", + "64.277", + "65.335", + "68.070", + "65.405", + "63.956", + "64.864", + "64.396", + "58.788", + "61.210", + "61.705", + "58.222", + "56.638", + "52.795", + "53.525", + "51.539", + "51.261", + "51.774", + "48.826", + "48.244", + "49.694", + "49.521", + "49.280", + "48.218", + "51.758", + "53.376", + "54.354", + "54.985", + "59.199", + "59.768", + "63.441", + "64.734", + "66.486", + "70.424", + "70.190", + "74.062", + "73.896", + "72.304", + "70.811", + "71.415", + "72.578", + "68.971", + "66.573", + "64.548", + "60.183", + "57.396", + "57.425", + "54.522", + "52.228", + "51.259", + "49.509", + "47.427", + "48.221", + "49.147", + "46.059" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.459", + "1.099", + "1.948", + "3.092", + "4.520", + "4.886", + "5.884", + "7.377", + "8.915", + "9.863", + "12.140", + "13.089", + "13.238", + "14.552", + "16.503", + "16.497", + "17.229", + "17.440", + "19.122", + "19.647", + "20.337", + "20.044", + "21.359", + "21.777", + "21.787", + "20.456", + "22.269", + "20.364", + "19.236", + "18.143", + "18.442", + "16.734", + "18.741", + "15.862", + "16.629", + "14.364", + "14.092", + "11.833", + "11.278", + "9.250", + "9.395", + "7.798", + "7.057", + "5.277", + "4.094", + "3.070", + "1.877", + "1.159", + "0.452", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "232.78", + "222.82", + "212.12", + "201.42", + "212.22", + "197.93", + "173.67", + "174.01", + "181.43", + "171.68", + "173.54", + "166.88", + "167.28", + "163.63", + "155.49", + "154.90", + "161.84", + "172.42", + "170.52", + "181.50", + "192.44", + "181.56", + "192.45", + "200.32", + "217.47", + "235.73", + "233.16", + "227.74", + "249.81", + "254.22", + "256.51", + "278.78", + "277.37", + "283.27", + "315.79", + "329.41", + "325.05", + "329.47", + "316.19", + "320.76", + "345.68", + "358.11", + "353.25", + "349.48", + "375.85", + "360.07", + "359.04", + "341.15", + "347.84", + "311.70", + "329.22", + "326.26", + "305.65", + "290.71", + "295.68", + "279.79", + "278.60", + "285.55", + "275.39", + "274.66", + "262.37", + "267.13", + "274.69", + "279.34", + "286.41", + "299.59", + "317.25", + "328.27", + "337.56", + "384.08", + "412.40", + "451.13", + "500.30", + "470.68", + "536.32", + "501.55", + "511.39", + "532.92", + "516.19", + "498.99", + "461.82", + "449.64", + "440.66", + "386.47", + "373.72", + "370.76", + "341.59", + "338.72", + "318.33", + "311.31", + "299.85", + "300.16", + "292.85", + "285.99", + "284.45", + "279.73" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-01-31", + "weekend": true, + "load_mw": [ + "34.793", + "33.283", + "32.629", + "32.692", + "30.610", + "30.569", + "29.749", + "28.953", + "29.133", + "29.327", + "28.786", + "28.115", + "27.696", + "26.794", + "29.322", + "29.300", + "28.794", + "30.163", + "29.581", + "30.752", + "32.169", + "32.896", + "33.847", + "34.177", + "34.579", + "36.507", + "37.400", + "38.802", + "38.741", + "41.263", + "40.264", + "43.605", + "42.970", + "45.579", + "46.547", + "48.927", + "47.879", + "50.704", + "49.746", + "53.674", + "55.511", + "55.148", + "55.423", + "56.619", + "54.145", + "57.175", + "55.759", + "55.379", + "55.529", + "54.021", + "51.397", + "50.290", + "48.949", + "46.807", + "47.142", + "45.678", + "43.105", + "43.947", + "41.426", + "42.206", + "40.801", + "41.922", + "41.826", + "42.095", + "43.274", + "42.849", + "44.157", + "45.684", + "46.461", + "49.829", + "50.502", + "54.170", + "54.530", + "59.371", + "57.812", + "61.393", + "65.824", + "62.664", + "63.120", + "60.655", + "64.503", + "63.501", + "60.850", + "58.732", + "55.485", + "52.848", + "50.868", + "50.656", + "48.187", + "45.322", + "43.212", + "42.335", + "44.348", + "41.218", + "41.589", + "39.701" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.397", + "1.204", + "2.031", + "2.926", + "3.963", + "5.304", + "5.720", + "7.691", + "7.724", + "9.533", + "10.981", + "12.587", + "13.193", + "12.866", + "14.733", + "16.080", + "17.323", + "17.435", + "19.937", + "19.485", + "20.147", + "19.671", + "18.540", + "19.888", + "20.436", + "19.240", + "20.791", + "19.994", + "18.618", + "18.458", + "17.801", + "17.381", + "18.105", + "17.141", + "13.298", + "14.369", + "12.878", + "12.823", + "10.276", + "9.705", + "9.539", + "7.988", + "6.140", + "4.545", + "3.712", + "2.857", + "2.241", + "1.007", + "0.437", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "232.57", + "226.28", + "224.66", + "216.59", + "203.60", + "189.64", + "193.83", + "181.53", + "185.95", + "186.85", + "166.22", + "166.94", + "157.25", + "167.89", + "156.52", + "165.02", + "168.16", + "173.87", + "177.00", + "178.21", + "179.43", + "193.74", + "203.93", + "209.87", + "198.64", + "227.10", + "227.71", + "240.13", + "250.06", + "270.39", + "272.47", + "260.02", + "260.91", + "275.98", + "307.68", + "312.28", + "326.09", + "331.34", + "325.81", + "324.82", + "337.81", + "337.25", + "370.43", + "357.85", + "360.28", + "340.10", + "345.55", + "347.94", + "352.35", + "345.82", + "329.61", + "317.27", + "304.24", + "283.93", + "306.79", + "279.53", + "274.94", + "273.91", + "264.87", + "269.47", + "269.01", + "283.10", + "267.46", + "278.13", + "290.02", + "305.64", + "313.72", + "328.68", + "347.47", + "390.29", + "407.58", + "452.34", + "452.98", + "507.67", + "518.61", + "491.14", + "517.70", + "513.95", + "495.41", + "469.48", + "467.48", + "463.28", + "425.21", + "422.72", + "385.89", + "349.85", + "343.29", + "326.52", + "316.76", + "293.71", + "310.80", + "297.54", + "289.93", + "271.49", + "289.45", + "290.11" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-01", + "weekend": true, + "load_mw": [ + "33.171", + "33.263", + "32.672", + "31.567", + "30.063", + "30.669", + "29.642", + "29.940", + "29.772", + "27.847", + "27.541", + "27.099", + "27.009", + "27.418", + "27.437", + "27.673", + "28.560", + "29.405", + "30.000", + "30.247", + "30.186", + "32.216", + "33.668", + "32.605", + "32.472", + "35.717", + "36.275", + "37.125", + "38.646", + "38.957", + "39.710", + "42.172", + "41.704", + "43.882", + "45.149", + "46.825", + "47.378", + "48.905", + "51.572", + "50.216", + "53.589", + "52.389", + "54.583", + "54.395", + "52.453", + "54.628", + "56.347", + "55.227", + "53.372", + "51.968", + "50.115", + "48.908", + "46.935", + "45.971", + "45.307", + "45.008", + "42.431", + "42.842", + "42.723", + "40.556", + "40.901", + "41.181", + "40.416", + "40.239", + "42.159", + "43.429", + "43.910", + "44.274", + "47.702", + "47.714", + "48.759", + "53.405", + "53.676", + "56.795", + "56.445", + "59.955", + "60.143", + "62.088", + "62.247", + "61.590", + "61.371", + "59.396", + "56.235", + "55.519", + "55.284", + "52.180", + "49.230", + "47.917", + "46.380", + "44.850", + "43.673", + "40.243", + "41.423", + "39.703", + "40.166", + "39.957" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.414", + "1.031", + "1.845", + "2.523", + "3.804", + "4.756", + "5.062", + "5.957", + "8.031", + "9.569", + "9.959", + "11.450", + "11.724", + "13.352", + "14.795", + "14.496", + "15.862", + "16.641", + "16.175", + "18.021", + "16.765", + "17.963", + "18.162", + "18.633", + "17.848", + "18.105", + "19.145", + "19.061", + "16.447", + "20.261", + "15.522", + "15.044", + "16.456", + "14.091", + "13.284", + "11.708", + "11.122", + "10.366", + "9.547", + "8.643", + "8.151", + "6.848", + "5.495", + "4.438", + "3.379", + "2.681", + "1.777", + "0.984", + "0.413", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "238.34", + "230.42", + "224.85", + "215.98", + "200.92", + "204.54", + "196.38", + "191.92", + "191.48", + "177.77", + "172.12", + "168.24", + "162.35", + "159.04", + "170.04", + "162.90", + "163.08", + "166.90", + "173.99", + "177.18", + "184.58", + "193.38", + "197.07", + "199.00", + "221.19", + "218.47", + "224.34", + "239.01", + "241.06", + "253.70", + "246.95", + "272.34", + "269.18", + "296.23", + "286.53", + "314.86", + "307.81", + "319.87", + "324.79", + "325.33", + "369.11", + "352.23", + "341.78", + "381.52", + "355.73", + "353.21", + "355.10", + "352.70", + "340.01", + "340.62", + "320.42", + "323.93", + "298.95", + "298.09", + "286.66", + "292.39", + "272.53", + "278.63", + "270.06", + "260.68", + "271.08", + "276.40", + "281.23", + "275.77", + "295.68", + "309.30", + "301.98", + "347.51", + "371.75", + "360.41", + "419.22", + "462.16", + "434.17", + "505.22", + "485.85", + "540.37", + "522.69", + "514.33", + "504.90", + "505.22", + "488.48", + "440.52", + "410.68", + "393.90", + "397.40", + "373.01", + "339.11", + "320.53", + "312.70", + "309.78", + "296.36", + "297.81", + "296.04", + "267.21", + "279.33", + "281.97" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-02", + "weekend": false, + "load_mw": [ + "38.623", + "38.988", + "38.669", + "36.931", + "37.093", + "35.768", + "36.165", + "34.728", + "32.688", + "33.662", + "32.002", + "33.313", + "32.762", + "33.561", + "32.591", + "34.271", + "33.972", + "34.485", + "35.292", + "35.210", + "37.760", + "38.301", + "38.327", + "40.396", + "40.489", + "42.421", + "43.294", + "44.413", + "45.336", + "46.436", + "47.742", + "49.078", + "49.722", + "50.528", + "52.461", + "54.850", + "57.474", + "57.259", + "60.667", + "62.518", + "62.655", + "65.373", + "63.245", + "65.962", + "63.123", + "66.651", + "67.934", + "62.455", + "65.501", + "61.402", + "61.558", + "57.748", + "56.637", + "56.824", + "51.930", + "53.902", + "52.177", + "53.475", + "49.134", + "48.183", + "48.733", + "48.285", + "48.246", + "49.768", + "47.992", + "50.784", + "52.944", + "54.501", + "53.896", + "57.836", + "57.851", + "61.237", + "64.993", + "66.783", + "71.241", + "70.992", + "72.532", + "71.718", + "70.911", + "74.049", + "74.159", + "70.762", + "70.645", + "67.660", + "65.088", + "62.582", + "60.070", + "57.619", + "54.227", + "54.012", + "51.181", + "48.845", + "50.183", + "47.738", + "47.809", + "45.815" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.362", + "1.004", + "1.755", + "2.836", + "3.348", + "4.434", + "5.292", + "6.531", + "7.197", + "8.678", + "10.005", + "9.974", + "10.871", + "12.087", + "13.848", + "15.129", + "15.371", + "16.187", + "16.973", + "17.361", + "16.843", + "17.959", + "18.780", + "17.103", + "18.127", + "17.824", + "17.311", + "18.241", + "18.485", + "16.735", + "15.729", + "16.013", + "14.912", + "13.652", + "12.287", + "12.533", + "13.388", + "10.615", + "10.089", + "8.318", + "7.431", + "6.039", + "5.471", + "4.413", + "3.380", + "2.658", + "1.696", + "0.953", + "0.383", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "233.03", + "222.48", + "222.13", + "213.36", + "194.67", + "200.06", + "183.62", + "182.62", + "177.32", + "170.28", + "156.86", + "163.78", + "155.23", + "155.43", + "150.48", + "153.05", + "165.45", + "167.85", + "165.89", + "167.80", + "176.92", + "186.99", + "192.56", + "213.16", + "209.47", + "226.69", + "209.52", + "232.44", + "250.34", + "260.58", + "255.99", + "278.38", + "277.03", + "289.47", + "287.01", + "326.11", + "329.78", + "318.48", + "340.02", + "352.49", + "363.45", + "357.12", + "353.65", + "376.33", + "360.53", + "355.50", + "361.13", + "354.31", + "351.50", + "331.54", + "331.44", + "316.07", + "312.46", + "299.34", + "288.84", + "267.11", + "283.44", + "265.81", + "261.81", + "274.37", + "276.51", + "273.75", + "274.13", + "298.98", + "274.27", + "298.09", + "311.17", + "344.53", + "355.90", + "383.39", + "434.31", + "443.19", + "440.48", + "498.48", + "491.82", + "526.19", + "515.91", + "554.59", + "522.64", + "518.78", + "517.43", + "457.67", + "434.48", + "408.25", + "383.41", + "387.61", + "331.94", + "333.15", + "312.43", + "300.82", + "297.75", + "295.85", + "284.10", + "276.24", + "283.92", + "265.48" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-03", + "weekend": false, + "load_mw": [ + "40.922", + "41.824", + "40.197", + "37.778", + "36.838", + "35.277", + "35.020", + "36.108", + "34.070", + "34.233", + "33.406", + "33.570", + "32.924", + "33.648", + "33.200", + "35.587", + "34.855", + "37.009", + "35.828", + "37.533", + "37.806", + "38.392", + "39.475", + "41.524", + "40.303", + "42.301", + "43.399", + "44.786", + "45.790", + "47.135", + "48.742", + "49.273", + "50.894", + "53.331", + "55.098", + "56.261", + "57.046", + "60.315", + "63.295", + "61.177", + "63.953", + "66.236", + "68.384", + "64.851", + "65.763", + "67.203", + "67.411", + "67.037", + "65.378", + "61.619", + "61.540", + "61.996", + "60.409", + "57.179", + "55.897", + "54.487", + "52.593", + "50.927", + "51.584", + "50.610", + "49.407", + "50.713", + "48.780", + "51.188", + "49.227", + "53.129", + "52.390", + "53.396", + "56.247", + "58.307", + "61.154", + "64.776", + "67.914", + "70.772", + "70.376", + "73.229", + "73.047", + "75.930", + "75.819", + "73.743", + "75.058", + "72.590", + "71.919", + "68.957", + "68.006", + "63.390", + "62.450", + "59.295", + "56.307", + "52.813", + "52.036", + "50.334", + "49.671", + "47.790", + "48.179", + "46.931" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.370", + "1.078", + "1.737", + "2.691", + "3.319", + "4.236", + "5.252", + "6.936", + "7.210", + "8.593", + "9.329", + "10.323", + "10.646", + "12.559", + "13.339", + "13.636", + "15.766", + "14.693", + "15.534", + "16.113", + "16.642", + "16.844", + "16.427", + "18.134", + "19.156", + "18.213", + "16.904", + "16.923", + "16.840", + "16.567", + "15.628", + "13.742", + "14.093", + "13.524", + "13.832", + "12.794", + "11.036", + "10.704", + "9.214", + "8.542", + "7.018", + "6.307", + "5.394", + "4.244", + "3.648", + "2.484", + "1.778", + "1.012", + "0.358", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "233.65", + "223.68", + "212.65", + "198.35", + "200.18", + "186.51", + "186.09", + "185.55", + "169.84", + "170.97", + "155.31", + "165.26", + "165.05", + "153.36", + "161.15", + "159.29", + "153.29", + "170.30", + "168.24", + "180.28", + "174.64", + "186.84", + "187.99", + "198.34", + "205.06", + "227.72", + "223.31", + "240.73", + "243.66", + "250.55", + "248.93", + "269.76", + "281.55", + "288.57", + "291.89", + "313.13", + "309.67", + "330.14", + "348.09", + "336.88", + "357.73", + "353.66", + "388.48", + "358.35", + "366.27", + "372.90", + "360.89", + "338.83", + "350.12", + "352.40", + "325.13", + "314.45", + "311.94", + "312.89", + "284.57", + "286.56", + "279.53", + "278.92", + "272.73", + "287.35", + "275.59", + "255.59", + "269.40", + "291.18", + "290.31", + "318.31", + "320.32", + "338.01", + "348.44", + "382.88", + "407.48", + "444.27", + "464.71", + "453.53", + "509.03", + "537.09", + "513.64", + "510.42", + "516.50", + "503.60", + "479.32", + "473.12", + "443.84", + "427.60", + "384.35", + "374.62", + "342.33", + "323.14", + "313.83", + "301.20", + "313.30", + "309.43", + "285.45", + "273.95", + "283.04", + "267.37" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-04", + "weekend": false, + "load_mw": [ + "37.369", + "37.017", + "37.320", + "35.108", + "35.250", + "34.151", + "32.961", + "32.163", + "31.919", + "31.552", + "30.565", + "30.942", + "30.280", + "30.678", + "31.430", + "32.122", + "31.854", + "32.493", + "32.625", + "33.872", + "34.737", + "35.117", + "35.751", + "37.670", + "36.133", + "38.523", + "41.337", + "41.000", + "42.851", + "44.160", + "45.117", + "45.930", + "46.049", + "49.036", + "51.063", + "52.496", + "53.467", + "55.677", + "55.119", + "57.277", + "59.086", + "60.984", + "61.083", + "60.258", + "62.910", + "61.763", + "61.566", + "61.042", + "60.687", + "57.772", + "56.741", + "55.225", + "54.534", + "53.619", + "51.902", + "49.698", + "48.041", + "47.457", + "46.976", + "47.646", + "46.764", + "46.040", + "46.699", + "45.878", + "47.837", + "47.151", + "47.603", + "50.281", + "52.395", + "55.471", + "57.567", + "59.913", + "61.786", + "64.104", + "66.927", + "68.157", + "70.584", + "71.387", + "70.100", + "68.441", + "67.068", + "65.524", + "67.883", + "64.733", + "62.113", + "58.055", + "57.216", + "52.750", + "53.248", + "49.158", + "48.917", + "46.762", + "45.542", + "44.713", + "44.921", + "44.913" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.402", + "1.082", + "1.705", + "2.679", + "3.778", + "4.565", + "5.674", + "6.485", + "7.404", + "8.582", + "9.078", + "10.679", + "12.292", + "13.463", + "12.224", + "15.187", + "16.722", + "15.540", + "16.055", + "17.946", + "17.910", + "18.499", + "19.518", + "17.549", + "18.377", + "20.502", + "17.665", + "17.482", + "19.386", + "17.662", + "18.641", + "16.758", + "15.326", + "15.476", + "14.236", + "12.582", + "11.659", + "10.418", + "8.678", + "8.603", + "7.207", + "6.728", + "5.828", + "4.670", + "3.967", + "2.573", + "1.630", + "0.933", + "0.358", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "237.52", + "223.30", + "216.59", + "210.34", + "215.12", + "195.12", + "185.42", + "174.48", + "171.60", + "175.01", + "162.16", + "166.81", + "161.38", + "161.23", + "160.16", + "169.65", + "166.72", + "170.01", + "164.06", + "176.25", + "186.62", + "182.63", + "184.19", + "197.64", + "208.50", + "234.92", + "233.60", + "228.90", + "256.21", + "250.26", + "255.16", + "263.38", + "264.04", + "281.30", + "297.18", + "300.80", + "300.53", + "329.27", + "340.19", + "335.00", + "341.24", + "362.64", + "361.74", + "376.50", + "352.50", + "366.68", + "358.79", + "350.47", + "355.14", + "340.95", + "327.15", + "316.29", + "309.35", + "305.62", + "300.41", + "274.54", + "270.55", + "262.32", + "271.28", + "266.59", + "264.38", + "265.64", + "267.79", + "272.86", + "283.98", + "307.68", + "315.76", + "324.02", + "365.40", + "387.65", + "409.31", + "419.14", + "481.75", + "504.12", + "505.54", + "530.96", + "528.49", + "528.57", + "510.86", + "501.14", + "500.90", + "441.30", + "433.92", + "395.80", + "404.55", + "367.12", + "344.60", + "306.53", + "309.81", + "279.49", + "297.92", + "289.21", + "320.10", + "280.88", + "280.51", + "287.14" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-05", + "weekend": false, + "load_mw": [ + "35.669", + "36.537", + "33.629", + "34.491", + "35.046", + "32.635", + "31.903", + "31.653", + "32.592", + "31.117", + "29.637", + "31.202", + "30.201", + "30.063", + "30.882", + "30.593", + "31.959", + "32.582", + "30.863", + "32.599", + "35.070", + "33.390", + "35.458", + "36.380", + "37.807", + "38.157", + "39.314", + "39.159", + "41.719", + "44.145", + "44.655", + "45.045", + "46.897", + "46.805", + "49.761", + "52.605", + "53.747", + "53.663", + "57.092", + "55.474", + "59.294", + "60.306", + "60.753", + "61.273", + "61.093", + "59.316", + "59.950", + "56.504", + "57.502", + "56.106", + "57.727", + "53.998", + "52.631", + "53.774", + "50.249", + "48.803", + "46.264", + "47.205", + "45.789", + "44.922", + "44.630", + "45.310", + "43.541", + "45.296", + "45.327", + "46.759", + "47.088", + "49.233", + "50.577", + "53.134", + "53.695", + "58.190", + "59.493", + "64.008", + "64.810", + "65.278", + "68.563", + "66.718", + "68.470", + "68.700", + "65.905", + "65.370", + "63.132", + "61.881", + "58.303", + "55.958", + "52.544", + "52.758", + "50.312", + "49.022", + "47.319", + "46.650", + "44.901", + "45.058", + "43.625", + "42.392" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.442", + "1.136", + "2.172", + "3.336", + "4.107", + "4.852", + "6.188", + "7.649", + "8.448", + "9.649", + "10.159", + "11.928", + "13.222", + "14.204", + "15.428", + "16.264", + "17.296", + "18.276", + "20.459", + "18.421", + "18.533", + "21.837", + "18.844", + "22.392", + "20.547", + "22.306", + "18.967", + "20.953", + "19.866", + "17.680", + "18.934", + "18.503", + "15.648", + "17.926", + "15.752", + "14.575", + "13.233", + "11.794", + "10.911", + "10.698", + "8.115", + "7.659", + "6.548", + "5.091", + "3.827", + "2.773", + "1.973", + "1.158", + "0.450", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.90", + "239.20", + "210.86", + "210.01", + "216.10", + "196.18", + "189.94", + "183.51", + "172.28", + "174.55", + "163.32", + "161.34", + "164.21", + "156.74", + "155.83", + "165.66", + "163.58", + "163.82", + "168.57", + "178.13", + "185.74", + "185.62", + "207.03", + "206.18", + "218.66", + "226.83", + "238.56", + "237.86", + "250.76", + "259.40", + "265.93", + "266.33", + "281.75", + "289.59", + "280.85", + "307.58", + "337.11", + "313.59", + "338.49", + "331.68", + "334.39", + "378.48", + "373.00", + "367.67", + "361.44", + "345.28", + "361.67", + "339.04", + "344.67", + "340.22", + "321.60", + "317.78", + "309.78", + "307.67", + "287.79", + "274.39", + "287.82", + "269.56", + "276.33", + "274.30", + "265.77", + "258.01", + "271.03", + "273.55", + "276.60", + "295.20", + "310.33", + "337.95", + "345.23", + "389.18", + "398.15", + "414.23", + "480.45", + "512.31", + "509.11", + "550.13", + "522.80", + "501.98", + "498.28", + "471.34", + "500.49", + "445.40", + "415.68", + "419.87", + "408.13", + "359.24", + "350.39", + "324.96", + "330.96", + "324.18", + "297.26", + "293.21", + "289.77", + "295.55", + "271.55", + "298.96" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-06", + "weekend": false, + "load_mw": [ + "40.657", + "38.325", + "38.717", + "36.786", + "36.262", + "35.976", + "34.241", + "34.398", + "32.017", + "33.042", + "31.677", + "31.779", + "32.151", + "32.228", + "32.860", + "32.963", + "33.260", + "33.985", + "33.905", + "34.112", + "35.363", + "36.286", + "38.127", + "39.136", + "40.332", + "42.242", + "44.219", + "42.363", + "44.516", + "44.953", + "45.488", + "47.281", + "49.768", + "49.029", + "52.565", + "54.946", + "55.814", + "57.538", + "58.324", + "61.343", + "60.332", + "63.724", + "62.545", + "65.118", + "64.179", + "63.363", + "63.982", + "62.310", + "62.753", + "59.759", + "58.375", + "55.881", + "53.625", + "55.072", + "53.590", + "52.114", + "51.078", + "50.214", + "47.321", + "48.315", + "45.722", + "47.932", + "48.598", + "48.305", + "50.148", + "49.535", + "48.096", + "52.244", + "54.178", + "56.528", + "58.876", + "62.473", + "63.040", + "67.519", + "69.439", + "71.512", + "71.830", + "70.759", + "72.785", + "73.331", + "68.507", + "69.794", + "67.863", + "67.689", + "61.152", + "59.769", + "58.715", + "56.634", + "54.010", + "51.914", + "50.046", + "48.706", + "45.366", + "45.678", + "43.577", + "45.262" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.509", + "1.298", + "2.237", + "3.401", + "4.228", + "6.282", + "6.850", + "7.947", + "10.424", + "10.551", + "12.705", + "13.988", + "16.424", + "16.454", + "15.771", + "16.757", + "20.143", + "18.815", + "21.735", + "20.498", + "20.981", + "22.681", + "22.772", + "24.165", + "23.062", + "21.199", + "24.000", + "22.106", + "22.518", + "20.947", + "20.974", + "21.463", + "17.759", + "19.710", + "18.078", + "14.893", + "14.322", + "13.165", + "12.381", + "11.469", + "9.796", + "8.014", + "7.117", + "5.381", + "4.419", + "3.128", + "2.022", + "1.394", + "0.463", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "241.39", + "233.73", + "239.11", + "213.24", + "215.21", + "190.42", + "187.41", + "184.98", + "175.92", + "167.37", + "168.96", + "163.21", + "167.12", + "155.59", + "161.50", + "161.18", + "163.30", + "168.17", + "174.28", + "179.70", + "188.84", + "196.97", + "205.19", + "212.76", + "217.86", + "236.84", + "225.76", + "230.20", + "253.53", + "255.05", + "270.17", + "275.10", + "269.25", + "286.26", + "296.98", + "307.10", + "315.94", + "338.77", + "331.47", + "318.07", + "332.93", + "347.20", + "372.23", + "349.07", + "358.79", + "359.28", + "354.06", + "342.64", + "354.54", + "325.67", + "335.63", + "301.38", + "300.53", + "282.72", + "299.69", + "286.28", + "272.67", + "266.64", + "263.31", + "279.19", + "254.88", + "263.87", + "278.35", + "283.41", + "289.32", + "300.90", + "316.04", + "347.66", + "358.41", + "372.64", + "410.18", + "404.26", + "459.21", + "506.83", + "537.51", + "519.44", + "531.00", + "517.72", + "512.68", + "515.65", + "471.40", + "472.78", + "447.60", + "407.60", + "387.91", + "372.91", + "337.04", + "331.90", + "312.07", + "321.18", + "314.12", + "289.62", + "284.13", + "282.03", + "277.39", + "280.37" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-07", + "weekend": true, + "load_mw": [ + "34.014", + "33.840", + "32.676", + "31.701", + "30.573", + "30.211", + "32.144", + "29.159", + "28.563", + "28.975", + "28.135", + "28.387", + "27.645", + "28.079", + "27.962", + "27.426", + "29.002", + "29.042", + "30.229", + "30.754", + "31.583", + "31.764", + "32.616", + "33.551", + "34.415", + "35.369", + "37.571", + "38.357", + "39.099", + "40.986", + "39.483", + "40.934", + "43.574", + "44.115", + "45.691", + "48.289", + "48.000", + "50.654", + "51.420", + "52.141", + "53.980", + "54.412", + "56.874", + "55.355", + "56.559", + "55.743", + "55.747", + "54.595", + "51.710", + "52.280", + "50.415", + "50.154", + "48.847", + "47.546", + "44.744", + "45.409", + "45.207", + "42.827", + "41.673", + "41.860", + "41.653", + "40.015", + "41.715", + "42.357", + "42.308", + "43.626", + "45.540", + "44.886", + "46.993", + "48.105", + "50.401", + "53.283", + "55.434", + "55.255", + "60.946", + "61.537", + "62.283", + "62.187", + "62.225", + "60.925", + "61.337", + "60.084", + "58.114", + "57.210", + "55.435", + "54.014", + "51.062", + "50.219", + "47.336", + "44.494", + "43.707", + "42.069", + "39.375", + "41.264", + "40.323", + "38.823" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.507", + "1.242", + "2.189", + "3.357", + "5.075", + "5.599", + "6.613", + "8.593", + "9.793", + "10.397", + "12.600", + "12.994", + "15.867", + "15.731", + "17.507", + "18.386", + "21.733", + "19.924", + "21.339", + "22.476", + "23.034", + "23.718", + "24.182", + "24.270", + "24.577", + "25.554", + "24.236", + "20.523", + "23.949", + "21.321", + "22.276", + "20.490", + "20.888", + "18.975", + "17.018", + "16.515", + "16.100", + "13.037", + "13.257", + "12.360", + "9.283", + "8.085", + "6.420", + "5.272", + "4.630", + "3.437", + "2.329", + "1.196", + "0.514", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "249.28", + "238.16", + "224.25", + "203.81", + "219.40", + "193.69", + "196.44", + "187.35", + "185.21", + "187.89", + "165.62", + "177.42", + "167.32", + "163.34", + "158.05", + "165.78", + "177.20", + "169.90", + "184.73", + "178.50", + "191.74", + "187.18", + "201.02", + "205.34", + "216.45", + "211.08", + "253.36", + "246.86", + "256.80", + "263.30", + "257.11", + "263.03", + "285.85", + "290.48", + "299.21", + "307.28", + "296.87", + "301.49", + "341.47", + "327.63", + "345.33", + "335.72", + "347.57", + "349.65", + "367.64", + "363.23", + "332.54", + "336.91", + "351.29", + "314.23", + "308.71", + "310.08", + "304.72", + "269.78", + "288.29", + "279.36", + "270.15", + "263.34", + "264.40", + "263.30", + "276.66", + "254.50", + "284.08", + "282.05", + "278.97", + "298.47", + "303.19", + "344.88", + "352.17", + "347.49", + "407.07", + "431.88", + "469.40", + "465.01", + "526.96", + "496.65", + "504.40", + "515.51", + "500.21", + "472.20", + "485.50", + "425.29", + "440.46", + "409.29", + "390.73", + "362.78", + "340.28", + "319.85", + "303.25", + "304.09", + "310.98", + "306.80", + "275.17", + "305.91", + "271.13", + "284.42" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-08", + "weekend": true, + "load_mw": [ + "32.481", + "31.890", + "31.079", + "30.785", + "30.034", + "29.228", + "28.103", + "28.396", + "27.710", + "27.838", + "27.626", + "26.288", + "26.007", + "26.563", + "26.610", + "26.706", + "28.036", + "27.412", + "29.242", + "29.498", + "30.409", + "30.981", + "32.024", + "31.605", + "33.475", + "33.508", + "35.133", + "35.998", + "36.678", + "38.076", + "38.602", + "40.446", + "42.640", + "41.498", + "42.995", + "45.449", + "45.433", + "48.559", + "48.070", + "50.333", + "49.882", + "50.929", + "51.912", + "53.355", + "52.255", + "53.485", + "52.427", + "51.545", + "51.850", + "49.410", + "48.424", + "46.305", + "44.876", + "45.455", + "44.750", + "44.128", + "40.326", + "41.573", + "41.472", + "40.730", + "38.917", + "39.031", + "39.817", + "40.659", + "40.972", + "41.897", + "43.430", + "43.527", + "45.934", + "45.357", + "47.109", + "52.212", + "51.418", + "54.996", + "55.364", + "55.779", + "57.414", + "62.352", + "58.233", + "58.558", + "58.504", + "61.160", + "55.108", + "54.396", + "52.519", + "50.767", + "49.728", + "47.233", + "46.544", + "43.093", + "42.098", + "41.159", + "40.048", + "38.204", + "39.220", + "36.546" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.478", + "1.277", + "2.130", + "3.329", + "4.416", + "5.705", + "6.494", + "7.910", + "10.263", + "10.216", + "12.039", + "14.055", + "15.497", + "16.181", + "15.654", + "17.333", + "17.152", + "20.159", + "20.722", + "20.928", + "21.966", + "21.205", + "21.095", + "23.083", + "22.197", + "21.896", + "23.605", + "23.611", + "22.399", + "22.048", + "20.179", + "20.778", + "19.474", + "17.301", + "16.097", + "16.737", + "14.480", + "14.478", + "12.510", + "10.761", + "9.903", + "8.707", + "7.084", + "5.398", + "4.080", + "3.371", + "1.950", + "1.340", + "0.497", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "233.46", + "234.18", + "227.71", + "221.96", + "195.07", + "205.25", + "189.14", + "190.03", + "184.95", + "184.99", + "170.85", + "164.92", + "162.58", + "164.38", + "169.11", + "159.05", + "178.55", + "175.12", + "171.58", + "174.73", + "196.29", + "200.38", + "206.18", + "205.47", + "229.11", + "220.90", + "236.83", + "232.13", + "244.44", + "258.96", + "254.43", + "278.56", + "274.96", + "301.50", + "299.05", + "303.85", + "320.38", + "319.50", + "318.75", + "326.87", + "347.93", + "369.39", + "360.31", + "357.00", + "341.25", + "343.69", + "345.61", + "336.79", + "333.66", + "342.59", + "320.87", + "298.49", + "294.36", + "298.73", + "269.23", + "276.31", + "264.51", + "261.58", + "272.93", + "265.02", + "255.10", + "267.65", + "298.33", + "293.59", + "286.78", + "297.39", + "337.23", + "338.20", + "326.39", + "388.24", + "417.14", + "424.18", + "481.95", + "480.78", + "519.30", + "478.09", + "520.38", + "523.56", + "500.82", + "470.54", + "480.29", + "488.75", + "410.67", + "402.96", + "387.49", + "369.27", + "318.78", + "328.58", + "332.94", + "311.84", + "278.04", + "296.91", + "295.62", + "279.30", + "280.43", + "283.97" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-09", + "weekend": false, + "load_mw": [ + "41.705", + "39.515", + "39.622", + "37.491", + "36.300", + "36.716", + "36.209", + "35.052", + "34.975", + "33.541", + "33.639", + "32.825", + "33.190", + "32.652", + "32.410", + "34.363", + "34.704", + "34.116", + "35.102", + "35.909", + "36.957", + "37.408", + "39.360", + "40.387", + "42.075", + "43.678", + "44.266", + "43.639", + "45.030", + "47.317", + "48.212", + "50.570", + "52.676", + "52.281", + "54.223", + "55.904", + "57.696", + "57.228", + "59.808", + "62.608", + "63.248", + "66.202", + "64.881", + "66.941", + "64.966", + "65.960", + "64.949", + "67.051", + "63.336", + "62.923", + "59.708", + "60.480", + "57.126", + "57.103", + "56.089", + "51.252", + "53.400", + "51.418", + "50.131", + "49.780", + "47.992", + "48.252", + "48.536", + "48.453", + "52.005", + "51.286", + "51.493", + "53.040", + "54.561", + "57.958", + "61.509", + "61.402", + "65.638", + "66.694", + "69.886", + "70.398", + "73.302", + "76.116", + "72.990", + "73.227", + "71.566", + "71.011", + "70.278", + "69.065", + "64.637", + "62.670", + "60.189", + "57.585", + "56.176", + "52.563", + "52.572", + "50.372", + "50.703", + "47.209", + "48.425", + "46.761" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.545", + "1.397", + "2.314", + "3.344", + "5.036", + "6.454", + "7.393", + "9.089", + "9.684", + "10.667", + "12.574", + "14.066", + "15.548", + "15.646", + "18.855", + "19.327", + "21.956", + "20.928", + "22.767", + "21.819", + "23.399", + "21.770", + "23.823", + "25.375", + "23.429", + "22.503", + "23.811", + "24.502", + "23.059", + "21.196", + "20.843", + "20.931", + "19.995", + "17.578", + "17.938", + "16.312", + "15.081", + "13.832", + "12.070", + "10.907", + "9.776", + "8.491", + "6.862", + "5.836", + "3.953", + "3.250", + "2.353", + "1.259", + "0.485", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "236.67", + "236.88", + "218.79", + "203.94", + "211.29", + "191.69", + "194.88", + "184.21", + "184.78", + "166.52", + "167.35", + "163.96", + "160.81", + "165.35", + "153.28", + "166.44", + "157.84", + "161.59", + "182.47", + "172.89", + "182.45", + "191.65", + "207.96", + "210.12", + "224.25", + "222.37", + "236.53", + "237.20", + "232.55", + "254.81", + "261.07", + "272.73", + "298.20", + "287.47", + "313.55", + "300.23", + "330.13", + "309.00", + "350.25", + "334.67", + "349.46", + "371.37", + "364.56", + "354.98", + "357.38", + "385.67", + "339.31", + "359.64", + "354.03", + "309.51", + "318.49", + "319.55", + "295.38", + "305.32", + "285.06", + "277.43", + "265.57", + "264.54", + "264.36", + "258.71", + "260.92", + "259.30", + "269.58", + "263.91", + "298.07", + "294.67", + "330.18", + "331.29", + "340.61", + "383.89", + "397.22", + "413.78", + "843.51", + "870.58", + "892.20", + "879.59", + "944.71", + "941.68", + "878.41", + "936.10", + "888.48", + "810.91", + "793.39", + "746.20", + "695.73", + "665.93", + "645.86", + "575.93", + "324.66", + "307.72", + "306.28", + "285.76", + "280.58", + "275.67", + "283.49", + "289.97" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-10", + "weekend": false, + "load_mw": [ + "37.438", + "38.172", + "37.866", + "34.269", + "35.774", + "35.810", + "34.445", + "32.860", + "32.846", + "31.678", + "30.936", + "31.277", + "31.244", + "30.801", + "32.143", + "31.924", + "33.826", + "32.102", + "33.918", + "35.797", + "36.133", + "36.680", + "38.680", + "38.592", + "39.878", + "40.494", + "39.848", + "41.736", + "43.531", + "44.510", + "45.381", + "47.018", + "48.854", + "51.954", + "51.679", + "53.284", + "56.091", + "54.436", + "57.576", + "61.550", + "61.281", + "60.773", + "60.878", + "64.924", + "62.531", + "62.111", + "62.935", + "62.107", + "59.955", + "59.439", + "57.826", + "55.247", + "56.241", + "53.310", + "51.265", + "50.509", + "49.888", + "48.572", + "48.364", + "47.878", + "47.174", + "46.229", + "47.285", + "47.840", + "47.124", + "47.762", + "50.478", + "51.457", + "52.655", + "55.716", + "57.799", + "60.842", + "63.973", + "67.032", + "68.165", + "67.869", + "69.161", + "70.813", + "69.295", + "70.947", + "71.667", + "67.589", + "67.644", + "68.236", + "63.858", + "59.846", + "57.887", + "55.605", + "54.169", + "51.163", + "49.279", + "48.370", + "45.704", + "46.171", + "45.427", + "44.346" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.501", + "1.241", + "1.991", + "3.115", + "5.051", + "5.761", + "5.953", + "8.003", + "9.188", + "11.605", + "10.888", + "12.165", + "14.098", + "15.123", + "16.388", + "18.023", + "19.194", + "19.873", + "21.961", + "23.849", + "22.091", + "23.029", + "20.150", + "23.024", + "23.874", + "23.231", + "22.270", + "22.411", + "23.644", + "20.591", + "21.885", + "21.258", + "19.028", + "17.874", + "17.044", + "14.963", + "13.602", + "13.259", + "11.387", + "10.577", + "9.989", + "8.949", + "7.037", + "5.243", + "4.309", + "3.112", + "2.274", + "1.205", + "0.477", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "229.58", + "231.43", + "219.62", + "201.28", + "207.95", + "199.88", + "192.29", + "182.97", + "176.17", + "187.56", + "167.75", + "155.42", + "154.08", + "156.97", + "155.32", + "166.07", + "162.54", + "168.58", + "173.84", + "175.35", + "174.16", + "190.94", + "198.79", + "202.78", + "226.04", + "220.96", + "229.36", + "226.12", + "249.45", + "248.67", + "253.46", + "262.77", + "272.24", + "293.24", + "299.48", + "289.17", + "316.13", + "335.89", + "323.71", + "346.35", + "352.90", + "327.09", + "352.68", + "347.59", + "354.46", + "363.47", + "341.82", + "347.56", + "324.74", + "361.65", + "313.00", + "298.11", + "313.12", + "301.09", + "271.21", + "278.57", + "280.26", + "268.78", + "252.43", + "260.63", + "255.60", + "260.86", + "270.08", + "287.54", + "267.91", + "298.36", + "320.22", + "337.30", + "358.61", + "396.51", + "406.73", + "426.58", + "490.82", + "495.46", + "517.62", + "545.42", + "540.43", + "533.70", + "526.19", + "505.70", + "487.21", + "472.95", + "416.30", + "410.20", + "390.65", + "350.47", + "345.35", + "326.65", + "305.86", + "305.39", + "303.43", + "280.91", + "294.88", + "279.49", + "279.09", + "283.98" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-11", + "weekend": false, + "load_mw": [ + "35.971", + "35.683", + "35.347", + "33.127", + "34.237", + "33.543", + "32.584", + "31.689", + "31.097", + "30.720", + "30.400", + "28.980", + "30.313", + "29.767", + "29.295", + "30.239", + "30.370", + "31.024", + "31.600", + "33.647", + "33.990", + "34.296", + "33.793", + "36.441", + "37.422", + "38.036", + "38.758", + "40.818", + "42.799", + "42.176", + "44.302", + "45.831", + "45.834", + "46.594", + "47.008", + "51.810", + "51.425", + "54.319", + "57.315", + "56.906", + "58.205", + "61.239", + "59.517", + "61.775", + "59.948", + "60.729", + "58.838", + "57.044", + "58.425", + "58.249", + "53.060", + "54.582", + "54.545", + "51.066", + "48.194", + "47.376", + "48.357", + "47.477", + "46.166", + "46.006", + "43.908", + "43.135", + "44.459", + "43.022", + "46.532", + "46.196", + "47.237", + "49.315", + "48.922", + "52.896", + "53.960", + "55.977", + "59.015", + "60.835", + "62.818", + "66.075", + "67.534", + "67.656", + "66.582", + "66.815", + "66.008", + "65.082", + "62.213", + "60.265", + "58.416", + "55.899", + "53.358", + "53.096", + "48.967", + "49.004", + "47.158", + "46.455", + "45.426", + "42.764", + "42.324", + "42.726" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.486", + "1.398", + "2.338", + "3.678", + "4.574", + "5.927", + "7.485", + "8.358", + "10.285", + "12.101", + "12.867", + "14.204", + "16.782", + "17.474", + "19.828", + "19.075", + "19.832", + "20.716", + "22.597", + "22.743", + "24.178", + "23.833", + "23.551", + "25.693", + "21.907", + "23.285", + "26.075", + "25.236", + "21.288", + "22.410", + "22.861", + "21.228", + "20.194", + "18.450", + "18.570", + "17.510", + "15.869", + "15.916", + "13.318", + "11.640", + "9.846", + "9.835", + "7.922", + "6.710", + "4.689", + "3.657", + "2.433", + "1.348", + "0.532", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "233.98", + "216.68", + "225.79", + "215.41", + "204.48", + "209.06", + "196.84", + "188.45", + "184.45", + "172.92", + "180.44", + "176.45", + "163.09", + "162.52", + "164.03", + "155.59", + "165.45", + "177.95", + "174.58", + "182.26", + "195.19", + "198.69", + "201.41", + "214.29", + "218.87", + "226.62", + "240.27", + "245.93", + "252.95", + "258.10", + "263.17", + "288.27", + "275.11", + "269.32", + "294.05", + "301.18", + "312.81", + "322.35", + "327.48", + "347.19", + "337.91", + "339.20", + "353.99", + "354.27", + "337.00", + "381.31", + "342.89", + "348.45", + "335.67", + "317.29", + "317.27", + "322.96", + "307.54", + "290.50", + "286.62", + "272.96", + "268.87", + "279.77", + "251.78", + "265.24", + "249.80", + "261.79", + "272.55", + "269.97", + "295.73", + "309.64", + "323.03", + "341.63", + "362.72", + "393.14", + "421.12", + "428.54", + "466.88", + "489.30", + "485.26", + "518.75", + "533.80", + "501.18", + "497.38", + "506.43", + "492.73", + "431.21", + "427.88", + "420.06", + "390.04", + "379.80", + "333.41", + "327.91", + "324.24", + "315.81", + "283.27", + "295.73", + "290.78", + "278.85", + "273.43", + "286.75" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-12", + "weekend": false, + "load_mw": [ + "35.098", + "33.566", + "34.525", + "32.628", + "32.516", + "31.412", + "31.327", + "31.927", + "30.337", + "30.167", + "28.940", + "29.607", + "28.570", + "29.291", + "28.878", + "29.249", + "30.283", + "30.614", + "31.237", + "32.811", + "32.301", + "32.998", + "34.172", + "36.197", + "36.159", + "36.900", + "38.890", + "40.172", + "40.480", + "42.643", + "42.592", + "44.845", + "45.885", + "46.287", + "48.438", + "48.906", + "50.714", + "51.794", + "55.098", + "56.547", + "57.036", + "57.259", + "57.104", + "55.561", + "60.028", + "60.439", + "57.203", + "57.023", + "58.071", + "54.311", + "53.680", + "53.015", + "51.558", + "48.432", + "48.386", + "47.165", + "46.501", + "46.339", + "44.650", + "43.175", + "43.970", + "42.934", + "43.622", + "42.978", + "44.590", + "45.626", + "45.456", + "48.217", + "48.936", + "51.372", + "52.537", + "55.036", + "56.731", + "60.586", + "62.795", + "65.305", + "61.406", + "64.792", + "66.059", + "64.387", + "64.233", + "61.918", + "60.660", + "60.305", + "57.337", + "54.469", + "53.835", + "51.426", + "50.469", + "47.576", + "45.438", + "43.577", + "44.227", + "42.482", + "39.732", + "40.576" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.432", + "1.230", + "2.017", + "3.171", + "3.939", + "5.177", + "6.134", + "7.350", + "8.706", + "10.133", + "11.273", + "11.682", + "13.963", + "15.987", + "17.227", + "16.327", + "17.291", + "18.223", + "17.874", + "20.011", + "18.783", + "21.062", + "22.110", + "20.046", + "22.046", + "21.494", + "20.062", + "22.280", + "20.118", + "21.297", + "19.062", + "17.064", + "17.163", + "17.001", + "16.368", + "13.780", + "13.086", + "12.501", + "10.749", + "10.163", + "8.750", + "7.286", + "6.629", + "5.335", + "3.983", + "3.096", + "1.927", + "1.106", + "0.433", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "238.74", + "214.16", + "226.46", + "211.43", + "223.99", + "202.23", + "195.02", + "183.12", + "183.15", + "175.21", + "171.28", + "168.71", + "169.59", + "166.42", + "164.00", + "162.72", + "173.47", + "164.44", + "184.15", + "190.67", + "183.48", + "198.89", + "200.77", + "206.55", + "213.04", + "230.75", + "232.07", + "242.93", + "253.41", + "249.64", + "258.38", + "276.21", + "275.33", + "296.38", + "289.94", + "294.95", + "315.85", + "325.81", + "321.73", + "341.70", + "326.46", + "352.61", + "338.67", + "355.26", + "364.68", + "357.23", + "370.09", + "340.46", + "333.56", + "325.54", + "327.98", + "317.49", + "309.25", + "288.57", + "277.25", + "285.08", + "265.48", + "282.42", + "278.81", + "264.57", + "258.29", + "261.02", + "270.93", + "280.21", + "288.00", + "322.23", + "309.75", + "336.67", + "363.54", + "390.87", + "435.45", + "450.99", + "451.37", + "479.27", + "486.43", + "519.27", + "519.85", + "527.05", + "518.62", + "482.55", + "496.29", + "447.42", + "445.44", + "410.86", + "378.07", + "350.71", + "347.06", + "333.04", + "300.88", + "307.39", + "303.72", + "299.49", + "288.75", + "298.99", + "272.61", + "274.99" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-13", + "weekend": false, + "load_mw": [ + "32.448", + "32.105", + "31.889", + "32.085", + "30.182", + "28.840", + "29.738", + "28.256", + "27.936", + "27.210", + "27.513", + "27.362", + "26.483", + "27.420", + "27.246", + "26.752", + "28.699", + "28.439", + "28.885", + "29.549", + "29.895", + "30.886", + "31.916", + "32.736", + "34.571", + "35.735", + "35.908", + "35.465", + "36.994", + "39.267", + "39.599", + "39.583", + "42.294", + "42.505", + "46.220", + "46.394", + "46.727", + "47.778", + "48.954", + "50.036", + "52.511", + "54.579", + "52.555", + "53.900", + "53.796", + "53.364", + "53.939", + "52.326", + "52.314", + "50.080", + "48.495", + "45.600", + "48.121", + "46.511", + "44.382", + "45.000", + "41.969", + "42.091", + "41.565", + "40.545", + "38.891", + "40.754", + "39.742", + "40.193", + "40.351", + "40.601", + "42.228", + "44.343", + "44.695", + "45.564", + "48.687", + "51.652", + "52.871", + "53.648", + "57.361", + "58.543", + "59.935", + "58.410", + "59.039", + "59.230", + "58.740", + "58.485", + "55.173", + "55.772", + "51.406", + "53.560", + "49.244", + "48.613", + "44.136", + "43.395", + "42.273", + "39.896", + "41.368", + "38.507", + "38.755", + "36.875" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.388", + "1.161", + "2.131", + "3.246", + "4.522", + "5.341", + "6.770", + "8.675", + "9.287", + "9.735", + "11.804", + "12.210", + "13.831", + "17.011", + "15.764", + "19.978", + "19.306", + "19.618", + "19.789", + "21.112", + "21.571", + "21.243", + "20.189", + "22.768", + "20.960", + "22.694", + "20.750", + "20.468", + "20.569", + "21.316", + "18.394", + "22.299", + "20.224", + "18.266", + "16.060", + "15.741", + "14.765", + "14.555", + "11.938", + "10.701", + "9.520", + "8.228", + "6.767", + "5.660", + "4.219", + "3.165", + "2.148", + "1.266", + "0.480", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.86", + "231.59", + "229.17", + "214.92", + "222.31", + "204.69", + "207.12", + "190.46", + "181.77", + "174.35", + "163.43", + "173.22", + "174.08", + "162.25", + "159.95", + "176.47", + "170.40", + "172.28", + "176.44", + "192.88", + "188.82", + "186.47", + "197.92", + "217.95", + "204.86", + "225.90", + "246.91", + "243.75", + "256.42", + "258.87", + "263.71", + "270.09", + "276.67", + "280.96", + "313.17", + "302.99", + "319.75", + "322.06", + "327.61", + "345.04", + "347.63", + "346.23", + "358.99", + "338.29", + "355.17", + "341.63", + "348.99", + "349.79", + "341.30", + "322.59", + "329.46", + "300.00", + "316.49", + "313.76", + "285.95", + "287.85", + "271.07", + "280.13", + "259.10", + "258.15", + "244.60", + "260.49", + "271.32", + "274.76", + "287.50", + "302.80", + "312.61", + "323.70", + "340.65", + "380.36", + "411.83", + "429.77", + "468.04", + "480.68", + "507.53", + "516.83", + "499.63", + "526.36", + "504.02", + "509.52", + "466.02", + "473.92", + "397.62", + "409.11", + "361.26", + "359.83", + "336.37", + "328.84", + "307.94", + "284.16", + "326.44", + "294.77", + "294.27", + "282.74", + "292.65", + "268.73" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-14", + "weekend": true, + "load_mw": [ + "30.536", + "29.093", + "28.703", + "28.799", + "26.914", + "26.492", + "26.192", + "25.892", + "25.525", + "24.923", + "24.320", + "24.325", + "25.115", + "24.317", + "23.877", + "24.746", + "25.460", + "25.233", + "26.375", + "26.047", + "27.609", + "29.077", + "28.914", + "30.531", + "30.258", + "32.243", + "32.281", + "33.231", + "34.480", + "35.308", + "35.486", + "35.354", + "38.150", + "39.615", + "39.036", + "40.417", + "43.005", + "42.561", + "44.393", + "45.921", + "46.464", + "49.272", + "48.588", + "48.737", + "48.597", + "47.889", + "49.236", + "47.435", + "46.516", + "45.165", + "45.828", + "44.022", + "42.578", + "42.148", + "42.343", + "38.780", + "38.135", + "37.637", + "35.964", + "37.720", + "36.024", + "36.114", + "37.365", + "37.313", + "36.245", + "38.253", + "37.913", + "40.997", + "41.093", + "42.741", + "44.969", + "45.681", + "48.618", + "50.240", + "50.963", + "52.297", + "54.926", + "55.126", + "54.700", + "53.924", + "55.276", + "53.541", + "50.245", + "49.841", + "48.479", + "47.081", + "45.608", + "42.250", + "42.767", + "39.844", + "38.434", + "35.598", + "37.898", + "35.593", + "35.191", + "35.153" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.365", + "1.010", + "1.882", + "2.768", + "3.487", + "4.831", + "5.813", + "7.063", + "7.922", + "8.893", + "10.220", + "10.353", + "11.744", + "13.799", + "14.206", + "14.656", + "14.554", + "16.476", + "19.484", + "19.431", + "19.406", + "17.419", + "19.478", + "19.153", + "19.151", + "17.553", + "18.449", + "19.223", + "17.998", + "18.646", + "16.323", + "16.789", + "13.358", + "13.800", + "13.856", + "13.498", + "10.859", + "9.954", + "9.033", + "8.841", + "9.194", + "7.043", + "5.982", + "4.701", + "3.634", + "2.766", + "1.851", + "1.003", + "0.377", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "237.31", + "243.52", + "214.12", + "214.23", + "213.89", + "200.64", + "200.71", + "186.36", + "175.10", + "182.15", + "179.76", + "161.40", + "175.79", + "162.78", + "172.56", + "161.48", + "171.05", + "172.21", + "179.53", + "191.38", + "175.91", + "194.17", + "206.49", + "206.00", + "229.26", + "228.61", + "227.19", + "239.47", + "254.01", + "254.36", + "250.76", + "262.73", + "279.80", + "291.10", + "300.41", + "293.63", + "331.02", + "324.89", + "329.73", + "334.99", + "334.03", + "351.46", + "365.18", + "367.90", + "348.83", + "346.64", + "356.97", + "355.97", + "330.38", + "347.94", + "330.91", + "314.46", + "320.68", + "303.17", + "289.58", + "277.30", + "276.23", + "283.60", + "258.48", + "279.80", + "277.26", + "286.52", + "275.56", + "285.83", + "287.96", + "319.72", + "314.27", + "334.79", + "341.93", + "346.91", + "397.03", + "432.49", + "448.56", + "500.39", + "501.08", + "501.17", + "499.46", + "516.29", + "464.09", + "504.83", + "471.44", + "432.14", + "432.70", + "417.72", + "377.14", + "363.03", + "344.57", + "320.79", + "314.87", + "314.88", + "303.06", + "289.77", + "285.99", + "282.27", + "277.61", + "283.35" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-15", + "weekend": true, + "load_mw": [ + "28.910", + "28.549", + "27.422", + "26.481", + "25.281", + "25.243", + "25.876", + "25.124", + "23.182", + "23.621", + "23.428", + "23.496", + "23.557", + "23.912", + "23.276", + "23.596", + "24.875", + "23.509", + "25.221", + "26.070", + "26.491", + "27.444", + "28.348", + "27.564", + "28.306", + "29.887", + "30.529", + "32.471", + "33.026", + "33.237", + "34.502", + "35.142", + "36.511", + "36.242", + "38.980", + "40.875", + "40.499", + "41.659", + "44.462", + "43.391", + "44.522", + "45.474", + "44.314", + "45.790", + "45.635", + "46.191", + "46.621", + "44.777", + "45.196", + "44.053", + "42.674", + "40.877", + "40.221", + "39.629", + "39.213", + "36.999", + "37.648", + "36.330", + "36.364", + "35.156", + "33.322", + "34.065", + "35.500", + "34.743", + "34.612", + "36.774", + "36.643", + "39.278", + "39.164", + "40.617", + "43.344", + "45.061", + "45.565", + "47.372", + "50.801", + "50.464", + "52.392", + "51.273", + "53.849", + "51.641", + "51.304", + "52.579", + "49.076", + "47.058", + "45.877", + "44.470", + "42.830", + "40.246", + "39.353", + "38.826", + "35.153", + "36.230", + "34.823", + "33.803", + "33.022", + "33.050" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.339", + "0.829", + "1.512", + "2.453", + "3.017", + "3.932", + "4.532", + "5.855", + "6.629", + "7.545", + "8.104", + "9.442", + "8.659", + "11.783", + "10.913", + "12.866", + "13.628", + "14.117", + "13.534", + "13.612", + "15.600", + "15.830", + "17.115", + "16.189", + "16.679", + "15.429", + "16.146", + "16.438", + "12.910", + "14.436", + "13.833", + "13.047", + "13.376", + "12.566", + "11.705", + "10.927", + "10.039", + "9.918", + "8.370", + "7.520", + "6.076", + "5.743", + "4.679", + "3.941", + "3.015", + "2.375", + "1.498", + "0.956", + "0.304", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "247.06", + "245.20", + "224.08", + "215.21", + "207.12", + "199.13", + "186.22", + "187.60", + "175.82", + "175.64", + "171.21", + "171.22", + "168.27", + "165.80", + "167.02", + "170.19", + "170.16", + "164.45", + "176.40", + "175.35", + "186.65", + "180.57", + "197.99", + "212.58", + "208.11", + "212.69", + "237.77", + "235.16", + "250.41", + "257.06", + "254.31", + "259.89", + "294.36", + "280.82", + "300.18", + "299.68", + "311.93", + "333.03", + "327.57", + "340.49", + "343.72", + "360.17", + "367.14", + "364.46", + "353.24", + "362.76", + "364.58", + "364.20", + "351.32", + "339.02", + "317.34", + "304.00", + "308.90", + "286.51", + "281.20", + "280.54", + "274.44", + "268.36", + "272.65", + "274.21", + "274.38", + "281.53", + "273.81", + "287.29", + "289.07", + "298.41", + "321.58", + "345.77", + "344.89", + "384.57", + "405.79", + "440.68", + "467.80", + "466.20", + "481.74", + "531.01", + "513.48", + "516.33", + "499.13", + "490.58", + "471.81", + "447.72", + "429.23", + "398.21", + "378.70", + "338.81", + "347.19", + "335.86", + "318.22", + "315.28", + "302.11", + "308.59", + "301.35", + "276.88", + "276.99", + "279.80" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-16", + "weekend": false, + "load_mw": [ + "33.781", + "32.753", + "32.554", + "31.714", + "31.157", + "30.512", + "28.818", + "29.498", + "29.105", + "27.458", + "27.435", + "28.062", + "27.068", + "28.843", + "28.196", + "28.935", + "28.475", + "29.122", + "29.705", + "30.038", + "30.378", + "32.923", + "33.422", + "32.450", + "34.698", + "35.461", + "35.770", + "37.459", + "37.488", + "39.562", + "41.687", + "41.552", + "41.059", + "44.111", + "45.167", + "46.319", + "46.506", + "51.251", + "51.962", + "51.292", + "54.299", + "52.409", + "54.959", + "54.456", + "53.942", + "54.169", + "54.064", + "54.071", + "52.994", + "52.209", + "50.449", + "49.056", + "49.387", + "47.499", + "45.684", + "43.412", + "44.015", + "43.921", + "40.617", + "41.947", + "40.168", + "40.081", + "41.182", + "40.598", + "41.641", + "42.010", + "42.566", + "44.194", + "47.032", + "48.462", + "50.708", + "49.514", + "54.388", + "55.732", + "58.348", + "61.626", + "62.929", + "62.791", + "59.650", + "60.257", + "63.670", + "59.848", + "58.897", + "56.821", + "53.516", + "53.284", + "50.901", + "48.243", + "46.019", + "46.180", + "43.088", + "40.149", + "42.145", + "40.101", + "40.155", + "38.653" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.364", + "0.931", + "1.544", + "2.157", + "3.349", + "4.377", + "4.950", + "5.650", + "7.151", + "8.147", + "8.856", + "10.045", + "10.804", + "12.888", + "11.732", + "13.058", + "13.240", + "13.985", + "13.641", + "14.914", + "17.203", + "16.786", + "17.325", + "17.156", + "16.878", + "15.024", + "16.626", + "15.383", + "15.820", + "15.295", + "14.696", + "14.027", + "13.764", + "12.680", + "11.953", + "11.783", + "10.616", + "9.876", + "9.015", + "7.623", + "6.864", + "5.958", + "4.697", + "4.105", + "3.096", + "2.301", + "1.636", + "0.908", + "0.341", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "232.78", + "229.87", + "214.72", + "211.78", + "204.72", + "194.47", + "177.00", + "181.67", + "177.10", + "171.02", + "167.52", + "164.32", + "166.37", + "166.16", + "148.72", + "158.48", + "163.31", + "169.11", + "168.56", + "177.65", + "182.51", + "202.70", + "192.14", + "207.36", + "213.28", + "235.01", + "234.50", + "247.63", + "242.90", + "243.80", + "268.43", + "269.14", + "271.73", + "288.46", + "305.53", + "302.43", + "289.84", + "317.70", + "346.27", + "366.24", + "357.64", + "377.10", + "346.33", + "365.00", + "335.13", + "355.34", + "370.51", + "359.53", + "345.90", + "322.37", + "307.29", + "297.54", + "336.86", + "291.66", + "302.51", + "292.25", + "273.14", + "277.89", + "281.13", + "272.85", + "267.63", + "278.88", + "273.61", + "278.49", + "283.12", + "305.71", + "321.58", + "334.09", + "351.03", + "389.04", + "397.28", + "439.98", + "452.23", + "502.04", + "483.70", + "529.22", + "515.46", + "535.20", + "505.49", + "483.52", + "489.57", + "452.44", + "388.65", + "398.62", + "407.76", + "353.40", + "345.32", + "341.91", + "314.71", + "294.98", + "297.90", + "297.52", + "298.09", + "286.58", + "287.62", + "289.52" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-17", + "weekend": false, + "load_mw": [ + "31.716", + "31.726", + "31.523", + "28.690", + "29.966", + "28.965", + "27.890", + "28.186", + "27.387", + "26.334", + "26.090", + "27.077", + "25.727", + "26.603", + "26.216", + "26.540", + "28.017", + "29.081", + "28.506", + "29.494", + "29.295", + "30.301", + "30.975", + "32.128", + "31.742", + "34.801", + "35.091", + "34.752", + "36.300", + "35.866", + "38.547", + "38.160", + "39.822", + "41.077", + "43.112", + "43.770", + "45.201", + "46.461", + "48.164", + "50.573", + "50.437", + "50.289", + "50.360", + "51.983", + "51.206", + "51.779", + "52.397", + "50.737", + "50.094", + "48.901", + "48.458", + "46.030", + "44.207", + "43.909", + "43.223", + "41.930", + "41.903", + "39.903", + "40.363", + "38.282", + "40.038", + "39.616", + "39.858", + "38.070", + "40.261", + "40.862", + "41.592", + "42.284", + "44.068", + "45.980", + "47.618", + "48.769", + "51.083", + "52.756", + "55.313", + "56.771", + "56.087", + "58.471", + "59.981", + "58.338", + "56.376", + "57.373", + "57.645", + "54.544", + "50.383", + "51.459", + "48.869", + "44.435", + "43.195", + "44.255", + "39.738", + "40.960", + "39.481", + "37.265", + "37.144", + "37.326" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.414", + "1.041", + "1.847", + "2.845", + "3.943", + "4.764", + "5.944", + "7.140", + "7.253", + "9.764", + "9.859", + "11.825", + "12.947", + "14.466", + "14.726", + "15.092", + "16.219", + "15.834", + "16.475", + "17.958", + "17.887", + "18.240", + "18.709", + "18.545", + "19.238", + "18.189", + "19.672", + "18.559", + "18.330", + "17.385", + "16.318", + "16.055", + "14.278", + "15.043", + "13.760", + "12.827", + "12.585", + "10.970", + "10.446", + "8.827", + "8.669", + "7.190", + "5.620", + "4.198", + "3.928", + "2.850", + "1.855", + "1.128", + "0.401", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "242.74", + "229.44", + "235.03", + "224.60", + "210.02", + "200.16", + "187.80", + "179.11", + "184.04", + "173.43", + "171.80", + "171.06", + "161.37", + "162.53", + "165.49", + "165.07", + "169.81", + "167.71", + "181.48", + "181.62", + "189.25", + "190.76", + "205.03", + "210.37", + "222.98", + "237.55", + "235.98", + "239.91", + "237.84", + "255.46", + "277.18", + "260.82", + "282.99", + "289.03", + "293.49", + "316.83", + "319.74", + "309.63", + "328.89", + "334.54", + "358.09", + "355.82", + "370.61", + "358.09", + "363.64", + "352.82", + "360.10", + "353.33", + "344.49", + "340.87", + "320.58", + "302.87", + "315.07", + "305.21", + "299.13", + "271.79", + "279.57", + "283.19", + "275.14", + "270.86", + "271.52", + "257.42", + "282.79", + "288.24", + "284.69", + "316.10", + "331.63", + "310.21", + "357.02", + "388.37", + "414.93", + "414.38", + "453.04", + "450.20", + "492.27", + "509.55", + "557.30", + "523.75", + "513.43", + "487.33", + "484.91", + "467.04", + "399.78", + "399.93", + "379.54", + "368.62", + "362.19", + "334.78", + "316.24", + "310.26", + "295.64", + "310.43", + "289.18", + "290.48", + "300.34", + "284.00" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-18", + "weekend": false, + "load_mw": [ + "32.317", + "32.039", + "31.482", + "29.932", + "30.083", + "28.616", + "27.880", + "27.225", + "26.838", + "26.502", + "26.321", + "26.812", + "25.996", + "26.546", + "26.768", + "26.347", + "27.419", + "27.501", + "27.324", + "28.092", + "28.415", + "30.887", + "30.114", + "30.797", + "32.503", + "32.351", + "33.347", + "35.333", + "36.492", + "37.855", + "38.802", + "38.785", + "40.070", + "41.597", + "43.235", + "44.460", + "44.263", + "49.129", + "48.391", + "47.292", + "50.423", + "51.374", + "51.594", + "51.495", + "53.077", + "51.739", + "50.896", + "49.395", + "49.141", + "49.882", + "48.905", + "47.385", + "44.455", + "44.434", + "43.883", + "41.209", + "41.741", + "40.516", + "40.257", + "39.471", + "39.920", + "39.211", + "39.531", + "39.586", + "39.127", + "40.954", + "40.331", + "43.253", + "45.084", + "46.048", + "46.357", + "51.125", + "52.350", + "55.106", + "55.284", + "55.819", + "58.711", + "59.854", + "57.703", + "57.464", + "58.574", + "56.546", + "54.622", + "51.340", + "52.217", + "50.384", + "46.367", + "45.969", + "45.547", + "41.849", + "41.862", + "38.805", + "38.717", + "37.980", + "37.718", + "35.908" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.373", + "1.013", + "1.853", + "2.640", + "3.486", + "4.531", + "5.582", + "6.727", + "7.818", + "9.068", + "8.894", + "10.610", + "12.780", + "12.845", + "12.762", + "14.758", + "15.795", + "16.751", + "17.310", + "18.626", + "19.300", + "18.337", + "20.215", + "17.772", + "18.754", + "18.266", + "18.272", + "17.998", + "18.039", + "17.332", + "18.487", + "16.226", + "16.544", + "15.884", + "14.112", + "13.065", + "12.344", + "11.101", + "10.200", + "9.433", + "7.264", + "7.330", + "6.171", + "4.673", + "3.847", + "2.827", + "1.834", + "1.068", + "0.386", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "230.18", + "235.43", + "215.56", + "213.35", + "214.50", + "213.50", + "198.72", + "182.91", + "178.99", + "174.34", + "162.64", + "167.90", + "164.34", + "165.23", + "159.53", + "158.65", + "174.37", + "166.00", + "175.23", + "170.70", + "184.80", + "190.14", + "191.87", + "207.53", + "219.84", + "230.86", + "231.82", + "256.13", + "233.36", + "259.48", + "260.68", + "283.15", + "280.17", + "286.15", + "305.92", + "305.46", + "304.55", + "330.91", + "343.52", + "336.35", + "352.27", + "365.34", + "340.82", + "330.34", + "365.00", + "369.13", + "334.53", + "333.18", + "342.57", + "324.90", + "326.31", + "323.13", + "296.10", + "282.20", + "292.13", + "280.54", + "281.98", + "275.48", + "276.51", + "279.89", + "270.57", + "276.08", + "289.11", + "286.56", + "276.76", + "289.88", + "316.50", + "352.17", + "361.92", + "371.50", + "398.71", + "422.04", + "457.41", + "485.03", + "518.44", + "496.19", + "523.07", + "521.16", + "507.15", + "514.81", + "459.81", + "447.68", + "418.38", + "415.70", + "381.90", + "366.67", + "340.50", + "331.22", + "320.02", + "310.36", + "295.59", + "303.63", + "279.29", + "286.39", + "298.98", + "279.37" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-19", + "weekend": false, + "load_mw": [ + "33.093", + "33.184", + "31.640", + "32.277", + "30.272", + "30.068", + "29.602", + "28.798", + "28.325", + "28.522", + "27.352", + "27.650", + "26.749", + "26.570", + "27.907", + "28.553", + "28.061", + "28.819", + "30.239", + "30.279", + "30.998", + "32.274", + "32.500", + "34.492", + "34.678", + "34.507", + "36.938", + "36.930", + "36.739", + "40.184", + "39.741", + "41.659", + "43.404", + "44.837", + "45.346", + "47.208", + "47.309", + "51.449", + "49.291", + "50.424", + "54.316", + "55.016", + "55.037", + "56.192", + "53.727", + "55.585", + "52.373", + "53.074", + "52.790", + "52.237", + "51.357", + "49.885", + "48.767", + "46.676", + "45.827", + "45.485", + "44.249", + "43.322", + "41.614", + "41.331", + "40.309", + "39.421", + "40.550", + "40.811", + "41.969", + "41.677", + "43.525", + "45.405", + "46.599", + "49.654", + "51.089", + "53.445", + "54.979", + "57.569", + "57.811", + "59.941", + "61.799", + "63.260", + "63.296", + "61.186", + "60.604", + "57.403", + "56.874", + "56.144", + "53.727", + "51.788", + "50.609", + "47.386", + "46.932", + "44.211", + "42.184", + "42.206", + "41.730", + "39.933", + "39.315", + "37.605" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.502", + "1.312", + "2.235", + "3.308", + "4.636", + "5.556", + "6.833", + "8.387", + "10.413", + "10.356", + "12.389", + "12.483", + "14.292", + "15.675", + "16.139", + "19.209", + "20.477", + "19.827", + "19.153", + "22.881", + "21.058", + "23.929", + "21.985", + "25.423", + "23.576", + "22.874", + "22.221", + "24.768", + "22.426", + "23.046", + "19.329", + "20.984", + "19.863", + "19.229", + "15.814", + "16.053", + "15.254", + "14.577", + "12.640", + "11.723", + "9.357", + "7.736", + "7.285", + "5.193", + "4.196", + "3.089", + "2.416", + "1.274", + "0.476", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "241.25", + "224.58", + "222.33", + "218.15", + "207.05", + "206.16", + "194.51", + "179.49", + "186.87", + "172.24", + "176.99", + "170.29", + "167.58", + "164.61", + "161.24", + "165.36", + "167.99", + "171.89", + "167.90", + "183.09", + "181.33", + "196.14", + "211.00", + "220.78", + "207.53", + "233.54", + "241.32", + "241.66", + "250.37", + "268.66", + "255.59", + "265.95", + "279.58", + "296.55", + "293.84", + "306.69", + "312.21", + "330.18", + "331.30", + "345.50", + "344.89", + "352.00", + "351.84", + "367.95", + "358.27", + "375.56", + "336.14", + "354.36", + "331.61", + "348.87", + "317.96", + "303.99", + "290.73", + "285.71", + "281.34", + "275.09", + "271.32", + "277.68", + "257.60", + "267.46", + "266.94", + "273.66", + "281.46", + "283.82", + "291.82", + "310.15", + "313.60", + "321.87", + "360.41", + "374.87", + "406.04", + "435.04", + "457.71", + "467.37", + "507.94", + "499.81", + "520.49", + "515.07", + "516.71", + "516.83", + "489.52", + "462.53", + "432.23", + "419.47", + "386.56", + "364.79", + "374.20", + "325.89", + "325.37", + "306.17", + "312.11", + "288.60", + "295.93", + "304.66", + "298.13", + "289.90" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-20", + "weekend": false, + "load_mw": [ + "34.668", + "33.963", + "33.381", + "32.887", + "30.992", + "30.920", + "31.542", + "29.727", + "28.259", + "28.351", + "28.758", + "26.942", + "27.366", + "26.301", + "28.170", + "29.012", + "28.423", + "29.421", + "30.142", + "30.144", + "30.980", + "33.338", + "33.478", + "32.878", + "35.572", + "35.861", + "36.336", + "37.404", + "40.020", + "39.856", + "40.385", + "41.038", + "41.907", + "43.611", + "48.047", + "46.990", + "49.026", + "50.564", + "52.597", + "54.254", + "53.862", + "56.041", + "53.891", + "56.528", + "55.472", + "53.066", + "55.497", + "54.862", + "52.698", + "53.007", + "51.453", + "51.359", + "47.747", + "47.755", + "46.406", + "45.668", + "43.764", + "42.147", + "43.662", + "42.058", + "41.169", + "41.554", + "42.381", + "42.589", + "43.344", + "42.323", + "44.058", + "45.310", + "45.091", + "49.209", + "51.482", + "53.033", + "54.966", + "58.600", + "58.180", + "60.274", + "62.131", + "63.384", + "64.375", + "62.415", + "62.272", + "62.396", + "58.746", + "57.949", + "53.483", + "54.362", + "52.408", + "50.678", + "47.892", + "45.286", + "42.688", + "42.620", + "41.042", + "40.717", + "40.811", + "39.518" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.494", + "1.199", + "2.202", + "3.168", + "4.658", + "5.818", + "6.697", + "8.243", + "9.382", + "11.524", + "12.838", + "14.078", + "15.182", + "16.122", + "16.526", + "18.911", + "19.171", + "21.016", + "22.362", + "22.038", + "23.464", + "22.399", + "21.930", + "23.234", + "22.755", + "20.676", + "20.897", + "21.506", + "24.408", + "21.639", + "23.065", + "22.154", + "18.922", + "17.764", + "18.566", + "16.353", + "14.830", + "14.168", + "12.652", + "10.844", + "9.701", + "8.792", + "7.329", + "5.402", + "4.791", + "3.483", + "2.212", + "1.195", + "0.477", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "240.53", + "224.75", + "234.04", + "213.55", + "213.43", + "212.95", + "200.74", + "178.54", + "184.45", + "181.19", + "168.78", + "158.86", + "157.06", + "156.35", + "164.43", + "168.03", + "167.86", + "175.20", + "176.64", + "175.99", + "197.22", + "195.99", + "192.10", + "209.96", + "222.62", + "214.47", + "232.48", + "245.45", + "251.59", + "267.06", + "273.49", + "273.41", + "282.73", + "293.58", + "293.35", + "314.42", + "315.01", + "321.67", + "322.69", + "341.51", + "344.13", + "347.31", + "359.14", + "352.09", + "336.92", + "357.76", + "352.01", + "356.28", + "342.54", + "337.74", + "329.64", + "307.20", + "309.96", + "298.97", + "285.33", + "277.63", + "257.40", + "270.14", + "261.73", + "282.49", + "272.26", + "276.80", + "274.16", + "285.34", + "294.08", + "303.09", + "330.60", + "332.03", + "343.62", + "382.15", + "413.77", + "423.20", + "466.91", + "494.51", + "476.82", + "540.85", + "540.27", + "520.95", + "520.65", + "492.03", + "484.33", + "446.35", + "413.34", + "409.51", + "385.05", + "353.17", + "342.82", + "344.63", + "326.79", + "304.37", + "304.06", + "301.48", + "296.09", + "277.56", + "284.31", + "291.28" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-21", + "weekend": true, + "load_mw": [ + "30.675", + "32.262", + "29.517", + "29.882", + "29.127", + "29.083", + "29.145", + "26.896", + "26.629", + "26.520", + "27.077", + "26.136", + "24.859", + "26.741", + "27.051", + "27.787", + "27.004", + "28.142", + "27.810", + "29.132", + "29.976", + "29.990", + "30.943", + "30.859", + "33.408", + "33.648", + "33.583", + "34.851", + "35.757", + "37.137", + "38.931", + "39.725", + "41.174", + "43.395", + "41.962", + "43.199", + "46.102", + "45.893", + "46.839", + "49.173", + "51.252", + "49.537", + "54.381", + "51.568", + "53.049", + "52.123", + "52.184", + "51.455", + "50.574", + "47.508", + "48.777", + "48.319", + "47.397", + "44.754", + "44.449", + "43.360", + "42.202", + "41.649", + "39.978", + "40.485", + "39.310", + "38.044", + "38.789", + "39.729", + "38.274", + "41.419", + "42.354", + "42.528", + "44.352", + "45.737", + "45.733", + "50.118", + "52.862", + "53.856", + "55.995", + "56.714", + "59.583", + "58.010", + "58.965", + "57.953", + "58.515", + "57.280", + "55.450", + "52.135", + "52.747", + "49.405", + "46.773", + "45.513", + "44.340", + "42.626", + "40.909", + "39.591", + "39.475", + "37.498", + "37.758", + "37.069" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.434", + "1.244", + "2.081", + "3.095", + "4.055", + "5.463", + "6.361", + "7.766", + "9.301", + "9.804", + "12.508", + "13.883", + "13.587", + "14.401", + "16.779", + "18.044", + "19.126", + "19.838", + "20.001", + "21.377", + "21.890", + "21.238", + "24.482", + "21.997", + "22.435", + "21.617", + "20.716", + "21.897", + "21.416", + "19.414", + "19.855", + "18.063", + "18.254", + "19.211", + "15.098", + "15.602", + "14.565", + "12.208", + "11.647", + "10.075", + "9.810", + "7.517", + "6.282", + "5.776", + "4.146", + "3.207", + "1.969", + "1.182", + "0.454", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "229.89", + "238.73", + "213.42", + "212.80", + "203.12", + "201.70", + "203.84", + "190.72", + "175.72", + "173.39", + "175.84", + "160.63", + "156.87", + "166.54", + "171.89", + "157.57", + "178.15", + "170.14", + "176.16", + "176.05", + "181.93", + "196.73", + "200.62", + "200.41", + "224.56", + "218.83", + "243.99", + "242.42", + "243.26", + "253.46", + "278.64", + "278.62", + "269.77", + "284.50", + "302.64", + "288.11", + "319.97", + "315.53", + "341.03", + "332.58", + "351.70", + "343.13", + "359.61", + "346.69", + "346.52", + "363.07", + "355.02", + "323.22", + "334.33", + "317.11", + "321.17", + "309.84", + "289.09", + "295.86", + "300.75", + "267.52", + "291.41", + "276.82", + "263.69", + "258.18", + "264.52", + "268.50", + "274.07", + "279.81", + "280.82", + "297.92", + "305.36", + "337.63", + "363.43", + "385.65", + "398.42", + "442.20", + "459.54", + "502.30", + "485.08", + "516.84", + "534.52", + "495.85", + "528.73", + "501.33", + "482.83", + "450.43", + "449.73", + "417.74", + "385.86", + "352.70", + "359.75", + "321.26", + "329.73", + "306.83", + "311.01", + "285.13", + "294.06", + "277.86", + "275.92", + "272.69" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-22", + "weekend": true, + "load_mw": [ + "34.438", + "32.310", + "31.910", + "30.661", + "30.759", + "30.032", + "28.947", + "28.398", + "28.803", + "27.816", + "27.628", + "27.156", + "27.989", + "26.255", + "27.061", + "27.965", + "27.870", + "28.820", + "28.913", + "30.881", + "32.127", + "31.441", + "32.325", + "33.763", + "33.860", + "35.009", + "36.167", + "35.194", + "37.370", + "37.805", + "40.674", + "42.930", + "42.176", + "42.154", + "46.069", + "47.393", + "48.537", + "50.630", + "49.643", + "51.593", + "52.254", + "52.944", + "52.841", + "53.210", + "56.197", + "54.997", + "56.212", + "52.082", + "52.462", + "51.913", + "50.054", + "49.138", + "47.688", + "48.041", + "45.755", + "43.742", + "43.614", + "42.314", + "42.582", + "40.519", + "41.447", + "39.507", + "42.242", + "39.512", + "41.669", + "42.107", + "42.801", + "45.975", + "45.680", + "48.473", + "50.805", + "53.476", + "54.847", + "54.505", + "57.143", + "59.617", + "59.808", + "61.332", + "60.310", + "61.653", + "59.656", + "57.302", + "57.803", + "55.684", + "53.879", + "53.966", + "50.893", + "48.228", + "46.216", + "44.587", + "41.819", + "41.607", + "39.746", + "40.092", + "39.565", + "38.480" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.472", + "1.294", + "2.024", + "3.072", + "3.845", + "5.315", + "6.833", + "8.747", + "9.259", + "9.598", + "10.794", + "12.218", + "12.749", + "15.523", + "15.834", + "15.980", + "19.204", + "19.122", + "19.628", + "22.396", + "22.753", + "20.700", + "22.540", + "22.151", + "22.370", + "23.195", + "21.720", + "22.326", + "22.216", + "20.597", + "19.127", + "20.322", + "20.691", + "18.546", + "16.628", + "15.260", + "14.419", + "12.639", + "10.816", + "10.705", + "9.243", + "7.661", + "6.800", + "5.384", + "4.449", + "3.088", + "2.007", + "1.078", + "0.481", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "241.54", + "229.16", + "218.78", + "220.99", + "210.15", + "199.47", + "197.83", + "195.25", + "174.05", + "177.27", + "185.24", + "160.19", + "171.44", + "157.89", + "152.59", + "171.95", + "164.02", + "160.09", + "176.18", + "179.59", + "200.94", + "196.53", + "200.01", + "206.16", + "214.87", + "232.59", + "247.71", + "232.32", + "246.02", + "250.30", + "270.98", + "272.29", + "265.91", + "289.90", + "297.41", + "316.81", + "326.85", + "328.13", + "331.88", + "351.48", + "350.49", + "359.90", + "354.66", + "353.42", + "367.52", + "360.01", + "345.92", + "339.36", + "337.45", + "318.20", + "329.57", + "307.55", + "290.38", + "305.48", + "279.12", + "286.12", + "278.21", + "266.01", + "261.78", + "243.60", + "266.71", + "263.60", + "274.17", + "280.98", + "269.71", + "312.04", + "308.90", + "333.61", + "355.70", + "377.63", + "427.82", + "407.65", + "502.06", + "482.42", + "495.72", + "530.69", + "513.86", + "523.65", + "493.79", + "515.98", + "473.40", + "431.21", + "441.58", + "386.68", + "384.25", + "361.15", + "332.48", + "333.89", + "334.40", + "299.42", + "289.82", + "287.20", + "293.02", + "290.46", + "294.06", + "281.02" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-23", + "weekend": false, + "load_mw": [ + "41.132", + "40.381", + "39.481", + "38.242", + "37.985", + "36.274", + "34.778", + "34.942", + "34.284", + "33.457", + "32.529", + "33.890", + "33.064", + "33.474", + "33.988", + "34.668", + "34.042", + "36.227", + "35.882", + "35.159", + "37.417", + "38.977", + "38.996", + "41.161", + "41.461", + "42.667", + "44.244", + "44.611", + "45.401", + "47.730", + "47.919", + "49.161", + "52.172", + "53.117", + "52.653", + "56.899", + "56.518", + "58.362", + "59.132", + "62.587", + "63.603", + "66.943", + "63.328", + "65.936", + "68.680", + "64.883", + "65.874", + "65.003", + "64.640", + "64.534", + "59.254", + "59.835", + "57.906", + "57.515", + "54.953", + "55.041", + "53.672", + "52.508", + "50.391", + "50.022", + "49.945", + "50.784", + "50.497", + "51.341", + "50.482", + "50.951", + "52.585", + "53.987", + "57.204", + "59.618", + "60.461", + "62.882", + "63.977", + "67.115", + "69.020", + "70.307", + "72.409", + "74.255", + "71.799", + "76.149", + "72.292", + "70.463", + "68.690", + "68.076", + "66.844", + "62.254", + "61.974", + "58.469", + "56.076", + "53.764", + "53.720", + "49.512", + "47.536", + "50.088", + "47.394", + "45.922" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.417", + "1.207", + "2.069", + "2.911", + "4.302", + "4.890", + "6.093", + "7.647", + "9.135", + "9.458", + "11.619", + "13.005", + "13.393", + "14.488", + "17.304", + "16.700", + "19.174", + "19.723", + "18.275", + "20.262", + "21.598", + "23.348", + "19.364", + "22.042", + "21.923", + "22.041", + "19.297", + "21.551", + "22.815", + "20.293", + "16.694", + "18.360", + "17.149", + "17.087", + "14.879", + "15.815", + "12.745", + "13.083", + "12.205", + "10.184", + "8.820", + "7.061", + "6.390", + "5.598", + "4.314", + "3.240", + "1.981", + "1.203", + "0.462", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "230.75", + "230.97", + "212.54", + "205.53", + "205.89", + "190.62", + "180.72", + "192.90", + "166.70", + "171.74", + "158.63", + "162.30", + "160.39", + "150.39", + "156.42", + "157.61", + "162.45", + "169.05", + "172.66", + "177.07", + "183.77", + "192.49", + "193.33", + "211.60", + "221.21", + "222.43", + "227.74", + "233.09", + "251.12", + "244.79", + "270.73", + "278.79", + "271.27", + "298.21", + "302.53", + "324.56", + "302.39", + "320.78", + "336.58", + "338.79", + "368.96", + "362.49", + "348.24", + "374.38", + "404.58", + "361.62", + "361.82", + "356.65", + "343.57", + "332.76", + "314.96", + "307.57", + "305.59", + "292.20", + "283.23", + "284.06", + "265.09", + "280.79", + "283.42", + "278.31", + "267.94", + "264.10", + "271.89", + "287.95", + "289.90", + "298.81", + "323.61", + "327.01", + "365.31", + "362.58", + "403.69", + "448.75", + "476.56", + "501.72", + "506.81", + "529.17", + "534.64", + "514.32", + "505.23", + "507.66", + "464.63", + "447.99", + "431.46", + "397.11", + "395.45", + "341.49", + "366.31", + "327.92", + "324.02", + "318.21", + "304.10", + "291.40", + "292.43", + "290.39", + "277.70", + "268.85" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-24", + "weekend": false, + "load_mw": [ + "39.974", + "39.243", + "38.609", + "38.133", + "37.140", + "36.035", + "35.595", + "33.708", + "34.084", + "34.633", + "33.060", + "31.431", + "32.787", + "33.841", + "33.876", + "33.818", + "33.433", + "34.476", + "35.456", + "36.454", + "36.830", + "37.752", + "40.422", + "38.571", + "39.387", + "44.238", + "44.843", + "42.966", + "45.846", + "48.934", + "48.647", + "48.152", + "48.806", + "51.006", + "54.113", + "57.404", + "58.242", + "58.630", + "62.144", + "63.373", + "62.764", + "63.640", + "65.578", + "64.917", + "67.586", + "66.091", + "65.436", + "63.690", + "61.332", + "63.007", + "61.877", + "58.967", + "57.148", + "56.886", + "53.791", + "53.091", + "51.720", + "49.799", + "51.548", + "48.396", + "48.337", + "49.532", + "49.498", + "46.994", + "50.250", + "52.351", + "51.191", + "54.594", + "54.647", + "58.854", + "61.278", + "62.277", + "62.434", + "68.822", + "68.812", + "74.334", + "73.019", + "72.866", + "75.065", + "73.050", + "74.368", + "72.243", + "70.365", + "69.338", + "63.552", + "61.406", + "58.742", + "56.664", + "57.275", + "52.727", + "51.296", + "49.571", + "50.290", + "46.137", + "47.486", + "47.818" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.366", + "0.968", + "1.538", + "2.198", + "3.378", + "4.289", + "5.108", + "6.339", + "7.961", + "7.835", + "9.240", + "9.990", + "11.723", + "12.509", + "13.672", + "14.643", + "14.935", + "16.239", + "16.152", + "16.249", + "17.484", + "16.325", + "17.870", + "17.993", + "18.797", + "18.767", + "15.181", + "17.738", + "16.588", + "17.388", + "15.974", + "14.382", + "13.146", + "13.227", + "12.681", + "11.785", + "10.655", + "11.196", + "9.057", + "8.171", + "6.751", + "5.636", + "5.232", + "4.379", + "3.227", + "2.555", + "1.651", + "1.035", + "0.353", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "239.71", + "228.18", + "230.87", + "212.09", + "184.77", + "197.95", + "188.18", + "172.90", + "178.56", + "163.03", + "170.85", + "160.15", + "151.06", + "155.89", + "157.41", + "156.19", + "164.03", + "172.95", + "169.47", + "176.33", + "181.97", + "182.73", + "198.72", + "192.47", + "213.05", + "212.17", + "230.63", + "236.47", + "252.06", + "269.36", + "254.83", + "256.75", + "266.79", + "273.88", + "309.06", + "313.22", + "309.81", + "323.16", + "348.41", + "366.05", + "338.99", + "360.52", + "373.22", + "362.05", + "367.34", + "362.76", + "356.13", + "356.15", + "337.65", + "348.77", + "344.05", + "311.81", + "306.95", + "296.11", + "286.19", + "276.99", + "270.58", + "279.65", + "281.87", + "259.02", + "272.32", + "271.41", + "257.72", + "284.58", + "306.72", + "309.25", + "329.81", + "351.47", + "350.61", + "372.67", + "411.27", + "476.36", + "484.92", + "473.68", + "513.30", + "506.54", + "528.98", + "520.95", + "554.13", + "529.38", + "455.97", + "451.36", + "423.56", + "399.61", + "375.49", + "343.38", + "358.28", + "328.33", + "337.21", + "288.47", + "313.93", + "296.09", + "280.45", + "255.55", + "276.74", + "284.40" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-25", + "weekend": false, + "load_mw": [ + "40.000", + "39.203", + "38.199", + "38.012", + "38.408", + "36.425", + "34.576", + "33.729", + "33.732", + "34.435", + "34.069", + "32.655", + "33.255", + "32.945", + "32.723", + "34.116", + "34.045", + "34.601", + "35.746", + "35.084", + "37.258", + "39.158", + "38.639", + "39.454", + "41.272", + "41.806", + "42.781", + "45.008", + "46.576", + "45.816", + "49.811", + "49.460", + "50.751", + "52.063", + "53.885", + "56.011", + "58.511", + "58.136", + "61.195", + "62.081", + "64.754", + "64.620", + "65.481", + "67.245", + "66.002", + "65.961", + "67.476", + "64.890", + "63.963", + "62.509", + "61.426", + "58.641", + "57.462", + "55.675", + "55.130", + "51.789", + "50.544", + "52.108", + "51.856", + "50.983", + "48.548", + "49.271", + "48.704", + "49.281", + "49.492", + "52.078", + "51.811", + "55.054", + "55.796", + "59.793", + "59.479", + "64.035", + "65.319", + "67.894", + "69.683", + "73.058", + "73.499", + "72.532", + "73.649", + "74.764", + "72.425", + "71.810", + "67.130", + "67.847", + "66.112", + "61.346", + "59.555", + "56.270", + "55.347", + "53.880", + "51.901", + "50.157", + "48.011", + "48.248", + "47.645", + "47.234" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.482", + "1.140", + "2.023", + "2.909", + "3.947", + "5.443", + "6.213", + "8.089", + "9.035", + "10.534", + "11.263", + "11.808", + "12.886", + "15.604", + "17.071", + "17.172", + "18.458", + "18.721", + "18.925", + "20.486", + "20.588", + "20.666", + "21.739", + "21.190", + "20.338", + "21.230", + "21.214", + "21.342", + "18.706", + "20.520", + "18.167", + "17.150", + "17.213", + "15.582", + "16.786", + "13.839", + "12.860", + "11.417", + "10.307", + "10.156", + "8.282", + "7.734", + "6.391", + "5.323", + "4.093", + "2.868", + "2.221", + "1.290", + "0.419", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "245.19", + "233.90", + "215.76", + "220.39", + "206.52", + "206.37", + "188.02", + "182.67", + "172.22", + "177.38", + "165.93", + "167.20", + "153.16", + "144.95", + "164.33", + "153.55", + "159.42", + "162.03", + "160.44", + "172.03", + "179.27", + "182.26", + "186.42", + "206.13", + "211.39", + "219.52", + "228.69", + "244.53", + "240.13", + "253.73", + "267.57", + "272.01", + "274.91", + "293.38", + "292.90", + "311.62", + "315.77", + "322.35", + "335.47", + "347.79", + "361.53", + "355.88", + "362.25", + "358.31", + "357.78", + "360.78", + "348.77", + "336.15", + "347.58", + "316.88", + "336.64", + "319.85", + "309.96", + "297.74", + "278.70", + "269.61", + "271.20", + "274.70", + "271.38", + "272.11", + "273.88", + "271.75", + "281.51", + "290.15", + "286.90", + "295.22", + "307.31", + "349.96", + "347.88", + "404.25", + "407.14", + "441.26", + "455.93", + "493.61", + "483.39", + "533.17", + "526.26", + "498.03", + "507.16", + "504.15", + "448.80", + "464.20", + "429.88", + "391.34", + "389.10", + "368.28", + "350.12", + "328.16", + "296.26", + "323.49", + "291.03", + "297.48", + "291.60", + "284.20", + "295.48", + "275.57" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-26", + "weekend": false, + "load_mw": [ + "40.036", + "38.682", + "38.862", + "37.150", + "37.130", + "35.754", + "35.485", + "35.162", + "34.619", + "33.270", + "33.585", + "33.247", + "31.986", + "33.437", + "31.765", + "33.009", + "33.704", + "33.894", + "35.470", + "33.817", + "37.727", + "37.755", + "38.033", + "37.700", + "41.604", + "41.449", + "43.067", + "43.293", + "45.011", + "46.811", + "46.270", + "50.076", + "50.798", + "51.697", + "52.724", + "54.863", + "57.473", + "59.379", + "57.927", + "60.648", + "62.016", + "62.382", + "65.734", + "64.815", + "63.925", + "66.728", + "64.185", + "64.861", + "62.747", + "60.792", + "60.350", + "59.119", + "55.212", + "56.646", + "53.769", + "52.445", + "52.718", + "51.115", + "49.111", + "48.344", + "50.360", + "49.459", + "48.023", + "48.892", + "48.528", + "49.747", + "51.895", + "52.830", + "55.381", + "58.083", + "59.627", + "61.395", + "64.612", + "67.419", + "68.148", + "69.253", + "72.041", + "71.813", + "72.452", + "71.540", + "73.236", + "71.134", + "71.084", + "65.542", + "65.462", + "61.584", + "58.229", + "56.796", + "54.559", + "52.350", + "49.569", + "50.209", + "48.227", + "47.178", + "47.754", + "45.217" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.528", + "1.229", + "2.239", + "3.409", + "4.430", + "6.181", + "7.607", + "8.347", + "9.695", + "11.019", + "12.866", + "12.891", + "15.762", + "16.957", + "17.343", + "17.433", + "20.669", + "20.237", + "23.586", + "20.103", + "23.353", + "26.166", + "22.875", + "22.054", + "24.772", + "24.377", + "23.003", + "25.154", + "21.339", + "22.145", + "22.763", + "18.970", + "19.958", + "17.251", + "18.708", + "16.754", + "15.210", + "13.338", + "13.535", + "11.401", + "10.309", + "8.641", + "7.844", + "5.945", + "4.943", + "3.703", + "2.326", + "1.373", + "0.532", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "238.21", + "228.19", + "228.21", + "209.46", + "204.10", + "200.53", + "185.43", + "177.03", + "168.90", + "170.77", + "175.88", + "155.80", + "155.96", + "159.36", + "155.48", + "161.59", + "163.53", + "171.70", + "165.30", + "181.51", + "185.83", + "196.70", + "199.68", + "207.82", + "211.57", + "225.49", + "232.37", + "245.55", + "246.15", + "262.36", + "266.51", + "267.07", + "284.75", + "266.59", + "292.53", + "309.56", + "319.30", + "320.43", + "341.14", + "336.91", + "337.72", + "364.61", + "355.10", + "350.37", + "351.85", + "349.70", + "367.37", + "348.51", + "341.38", + "343.69", + "323.29", + "307.09", + "305.01", + "278.37", + "266.34", + "272.00", + "272.35", + "264.80", + "262.85", + "268.88", + "280.32", + "266.34", + "270.16", + "260.68", + "285.40", + "313.25", + "310.80", + "354.25", + "356.33", + "386.30", + "413.40", + "433.46", + "451.26", + "512.52", + "507.73", + "530.03", + "539.13", + "494.12", + "530.02", + "513.48", + "475.12", + "459.66", + "442.65", + "407.38", + "398.39", + "353.53", + "355.18", + "319.60", + "335.83", + "312.30", + "315.51", + "294.88", + "292.47", + "278.62", + "286.70", + "282.65" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-27", + "weekend": false, + "load_mw": [ + "39.455", + "38.617", + "38.069", + "37.682", + "37.595", + "35.679", + "34.843", + "34.611", + "33.152", + "32.748", + "33.054", + "33.461", + "33.857", + "32.396", + "33.281", + "32.657", + "33.892", + "34.716", + "35.465", + "36.790", + "38.315", + "38.379", + "38.463", + "42.212", + "42.178", + "42.108", + "44.214", + "43.552", + "44.696", + "45.062", + "48.092", + "48.017", + "49.644", + "52.506", + "53.156", + "54.883", + "57.369", + "58.689", + "58.256", + "60.925", + "63.518", + "65.711", + "63.388", + "66.131", + "62.862", + "67.002", + "66.800", + "64.291", + "62.202", + "64.167", + "61.204", + "58.376", + "54.671", + "56.353", + "54.449", + "54.806", + "51.617", + "50.060", + "50.379", + "49.874", + "49.856", + "49.058", + "48.340", + "48.738", + "50.533", + "51.192", + "53.361", + "52.500", + "57.282", + "56.755", + "60.966", + "64.103", + "65.831", + "67.496", + "70.869", + "72.945", + "71.217", + "71.762", + "70.094", + "71.483", + "72.866", + "71.406", + "68.537", + "68.087", + "67.097", + "62.855", + "58.505", + "55.855", + "54.380", + "52.452", + "50.945", + "49.013", + "48.530", + "47.094", + "46.262", + "45.896" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.490", + "1.306", + "2.262", + "3.498", + "4.561", + "6.165", + "7.056", + "8.474", + "10.048", + "11.091", + "12.731", + "13.709", + "15.174", + "18.588", + "17.105", + "19.400", + "17.373", + "19.633", + "21.505", + "21.568", + "24.126", + "23.619", + "24.748", + "24.758", + "22.615", + "24.131", + "22.313", + "21.990", + "24.719", + "23.873", + "20.115", + "21.563", + "19.439", + "20.433", + "17.159", + "16.586", + "16.821", + "14.908", + "12.318", + "10.934", + "10.406", + "9.348", + "7.229", + "6.694", + "4.546", + "3.577", + "2.381", + "1.407", + "0.515", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "227.71", + "224.83", + "216.30", + "212.26", + "208.95", + "203.07", + "199.87", + "195.14", + "169.40", + "171.49", + "170.26", + "162.18", + "171.21", + "157.54", + "159.51", + "161.87", + "160.23", + "166.98", + "171.34", + "184.86", + "177.61", + "194.29", + "191.51", + "205.84", + "213.66", + "224.77", + "241.84", + "236.78", + "241.64", + "260.76", + "275.22", + "279.08", + "270.45", + "288.28", + "282.61", + "307.37", + "307.78", + "322.57", + "324.97", + "344.35", + "350.75", + "349.33", + "365.38", + "370.46", + "350.80", + "359.39", + "379.77", + "343.76", + "336.19", + "358.86", + "338.19", + "317.60", + "291.58", + "293.98", + "282.32", + "292.72", + "261.39", + "273.82", + "268.05", + "247.40", + "275.17", + "257.51", + "277.71", + "257.64", + "275.94", + "310.01", + "310.59", + "323.15", + "361.64", + "380.66", + "412.16", + "449.45", + "444.80", + "504.77", + "503.25", + "527.02", + "542.38", + "530.22", + "518.01", + "551.48", + "489.86", + "492.19", + "439.05", + "428.84", + "415.13", + "365.34", + "341.14", + "319.61", + "303.45", + "290.59", + "319.03", + "288.88", + "298.87", + "287.09", + "284.81", + "285.41" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-02-28", + "weekend": true, + "load_mw": [ + "31.963", + "31.267", + "31.585", + "30.471", + "29.798", + "28.262", + "29.310", + "27.648", + "26.322", + "27.066", + "26.655", + "26.434", + "25.984", + "26.731", + "25.713", + "27.387", + "27.885", + "27.598", + "29.291", + "30.176", + "29.589", + "31.668", + "31.664", + "32.714", + "32.710", + "33.796", + "35.265", + "35.322", + "38.447", + "37.278", + "38.702", + "39.926", + "40.044", + "42.111", + "43.246", + "44.495", + "45.586", + "47.398", + "49.937", + "49.478", + "49.566", + "50.315", + "53.762", + "52.038", + "52.397", + "51.610", + "51.102", + "49.503", + "48.501", + "49.743", + "47.603", + "46.562", + "45.721", + "44.977", + "42.710", + "41.715", + "42.194", + "42.047", + "40.179", + "39.685", + "39.001", + "40.450", + "38.472", + "40.202", + "40.018", + "41.264", + "41.795", + "42.886", + "44.948", + "46.488", + "48.782", + "50.174", + "53.256", + "54.603", + "55.759", + "56.135", + "59.962", + "57.853", + "58.997", + "58.178", + "57.736", + "55.737", + "56.084", + "55.212", + "52.450", + "50.607", + "47.898", + "45.377", + "44.689", + "43.281", + "41.329", + "40.241", + "39.532", + "39.182", + "37.166", + "37.833" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.432", + "1.205", + "1.942", + "3.130", + "4.183", + "5.267", + "6.341", + "7.567", + "9.184", + "9.830", + "11.009", + "13.162", + "13.204", + "14.028", + "15.871", + "17.512", + "17.456", + "19.414", + "20.086", + "18.652", + "18.008", + "20.509", + "18.863", + "22.266", + "20.390", + "21.803", + "19.956", + "20.841", + "21.108", + "20.916", + "16.600", + "17.273", + "17.584", + "17.100", + "16.735", + "14.534", + "13.039", + "12.699", + "11.061", + "10.528", + "8.968", + "7.650", + "6.114", + "5.399", + "4.085", + "2.681", + "1.737", + "1.137", + "0.420", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "247.25", + "248.57", + "235.48", + "212.93", + "204.53", + "205.59", + "194.23", + "185.83", + "183.16", + "170.03", + "178.21", + "165.66", + "164.82", + "164.45", + "156.06", + "166.78", + "163.66", + "172.37", + "182.29", + "168.30", + "193.39", + "185.99", + "205.66", + "210.72", + "222.25", + "237.37", + "236.31", + "244.21", + "244.78", + "261.75", + "252.22", + "267.84", + "279.00", + "298.75", + "304.25", + "314.98", + "303.00", + "318.77", + "322.40", + "350.47", + "347.87", + "358.59", + "359.53", + "339.03", + "369.16", + "341.25", + "362.53", + "349.63", + "337.09", + "326.29", + "314.76", + "320.46", + "312.16", + "294.37", + "292.73", + "280.78", + "272.33", + "290.02", + "263.73", + "261.75", + "261.71", + "271.83", + "266.80", + "285.37", + "290.72", + "300.69", + "338.95", + "332.88", + "352.46", + "360.01", + "426.68", + "441.19", + "446.07", + "495.16", + "497.25", + "491.73", + "538.27", + "533.03", + "515.84", + "531.22", + "460.19", + "439.74", + "411.75", + "426.30", + "377.84", + "363.59", + "352.37", + "316.88", + "331.46", + "316.86", + "292.98", + "288.72", + "288.65", + "280.36", + "282.83", + "303.98" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-01", + "weekend": true, + "load_mw": [ + "33.223", + "32.736", + "32.131", + "30.199", + "30.523", + "29.886", + "29.878", + "29.246", + "28.040", + "27.947", + "27.600", + "26.421", + "25.921", + "27.073", + "27.685", + "27.437", + "27.818", + "28.466", + "30.416", + "29.384", + "31.103", + "31.560", + "31.754", + "33.975", + "33.461", + "34.863", + "36.240", + "36.562", + "38.073", + "38.328", + "39.482", + "40.315", + "42.157", + "43.561", + "45.277", + "46.323", + "47.010", + "48.342", + "51.271", + "53.244", + "52.958", + "53.815", + "54.552", + "53.685", + "55.017", + "53.382", + "53.840", + "51.849", + "52.747", + "51.009", + "53.009", + "48.113", + "48.651", + "48.523", + "45.267", + "43.661", + "43.961", + "41.827", + "41.877", + "40.810", + "41.801", + "40.117", + "39.773", + "40.754", + "40.950", + "41.903", + "44.134", + "45.425", + "45.222", + "46.869", + "50.426", + "53.442", + "55.496", + "55.011", + "57.925", + "59.543", + "60.223", + "63.902", + "59.802", + "60.689", + "59.141", + "59.295", + "58.875", + "55.995", + "51.637", + "50.567", + "49.749", + "46.637", + "46.014", + "45.814", + "42.910", + "41.147", + "41.522", + "39.719", + "38.220", + "38.058" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.468", + "1.241", + "2.178", + "2.894", + "4.053", + "5.046", + "6.807", + "8.107", + "9.138", + "10.194", + "11.659", + "12.582", + "14.559", + "16.558", + "16.818", + "16.302", + "18.697", + "18.692", + "19.732", + "19.018", + "20.430", + "24.407", + "21.847", + "23.879", + "18.771", + "20.806", + "19.914", + "23.562", + "20.093", + "20.707", + "20.993", + "18.404", + "18.638", + "18.869", + "17.629", + "15.662", + "13.644", + "12.460", + "11.070", + "10.775", + "8.945", + "7.532", + "6.975", + "4.886", + "4.170", + "3.283", + "2.053", + "1.282", + "0.486", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "246.69", + "235.72", + "225.86", + "213.38", + "202.25", + "205.31", + "206.67", + "190.55", + "177.79", + "177.22", + "179.15", + "167.13", + "164.11", + "170.64", + "159.99", + "155.07", + "163.16", + "177.89", + "175.52", + "177.49", + "191.32", + "185.22", + "202.43", + "210.30", + "216.61", + "230.22", + "233.75", + "243.93", + "257.18", + "257.61", + "267.08", + "266.52", + "273.71", + "275.07", + "292.72", + "321.68", + "294.86", + "312.23", + "327.43", + "341.72", + "337.09", + "344.31", + "346.15", + "374.12", + "366.00", + "343.06", + "359.14", + "352.32", + "332.97", + "332.23", + "315.11", + "303.95", + "312.14", + "289.70", + "281.48", + "287.96", + "276.33", + "266.59", + "267.15", + "257.21", + "256.74", + "267.27", + "258.25", + "285.02", + "288.87", + "294.08", + "313.37", + "316.75", + "338.06", + "389.13", + "430.11", + "436.14", + "448.13", + "489.95", + "492.46", + "502.74", + "487.88", + "513.62", + "495.10", + "483.73", + "485.57", + "459.01", + "442.18", + "408.58", + "385.04", + "350.77", + "334.78", + "331.00", + "313.74", + "290.69", + "305.34", + "284.59", + "303.66", + "285.26", + "276.67", + "284.79" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-02", + "weekend": false, + "load_mw": [ + "36.741", + "36.553", + "34.976", + "34.458", + "34.023", + "32.848", + "32.170", + "31.823", + "30.973", + "29.573", + "30.417", + "31.168", + "31.251", + "30.295", + "31.624", + "30.145", + "30.161", + "31.898", + "31.379", + "33.170", + "35.037", + "34.117", + "35.850", + "35.846", + "37.510", + "37.329", + "38.443", + "40.368", + "42.036", + "43.617", + "43.956", + "43.398", + "45.708", + "47.535", + "49.109", + "49.908", + "52.867", + "55.732", + "55.173", + "58.486", + "58.958", + "59.750", + "62.539", + "59.726", + "61.447", + "59.934", + "59.306", + "61.391", + "58.944", + "55.478", + "54.235", + "56.236", + "51.805", + "50.683", + "50.118", + "48.429", + "48.644", + "46.025", + "45.458", + "46.557", + "44.913", + "45.745", + "45.438", + "45.532", + "46.196", + "47.460", + "46.996", + "50.319", + "50.668", + "53.590", + "57.124", + "57.502", + "58.397", + "61.808", + "63.739", + "63.526", + "67.813", + "68.391", + "69.158", + "66.369", + "66.176", + "65.355", + "62.517", + "62.037", + "57.924", + "57.282", + "54.048", + "54.044", + "52.489", + "49.559", + "46.820", + "43.834", + "44.575", + "44.372", + "42.154", + "41.991" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.481", + "1.216", + "2.172", + "3.499", + "4.177", + "5.168", + "7.351", + "7.662", + "9.357", + "11.077", + "12.012", + "13.194", + "14.658", + "14.885", + "17.368", + "19.262", + "19.481", + "19.275", + "18.638", + "20.816", + "22.052", + "23.618", + "22.842", + "20.184", + "21.513", + "22.070", + "23.635", + "21.504", + "21.497", + "19.875", + "19.460", + "20.644", + "19.266", + "16.560", + "15.560", + "15.723", + "14.928", + "13.720", + "11.961", + "11.251", + "8.987", + "8.101", + "6.601", + "5.564", + "4.558", + "3.233", + "2.100", + "1.331", + "0.491", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "241.79", + "227.40", + "221.02", + "208.16", + "220.86", + "209.72", + "190.79", + "191.25", + "161.85", + "165.34", + "170.52", + "172.78", + "166.55", + "158.48", + "155.61", + "156.13", + "171.58", + "171.10", + "173.49", + "170.36", + "183.13", + "187.85", + "198.62", + "198.88", + "211.70", + "226.25", + "237.51", + "246.66", + "236.83", + "262.29", + "253.16", + "260.57", + "275.04", + "277.54", + "295.49", + "296.39", + "320.20", + "325.42", + "324.33", + "345.84", + "357.02", + "351.01", + "354.33", + "348.52", + "370.27", + "379.40", + "366.18", + "335.44", + "330.82", + "310.40", + "333.63", + "315.25", + "313.89", + "271.37", + "289.13", + "283.36", + "280.66", + "280.35", + "259.05", + "274.04", + "270.46", + "266.63", + "275.49", + "268.39", + "292.11", + "296.11", + "301.90", + "337.29", + "362.14", + "392.45", + "432.29", + "448.28", + "445.98", + "478.67", + "508.72", + "513.94", + "512.08", + "531.60", + "497.11", + "503.43", + "471.68", + "466.35", + "416.58", + "405.63", + "381.58", + "359.80", + "345.34", + "328.00", + "309.39", + "324.17", + "302.91", + "293.66", + "280.38", + "284.78", + "293.25", + "285.79" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-03", + "weekend": false, + "load_mw": [ + "36.058", + "34.469", + "34.859", + "33.938", + "33.340", + "32.125", + "32.326", + "31.315", + "30.225", + "29.484", + "28.850", + "30.000", + "29.718", + "29.871", + "29.356", + "30.671", + "30.441", + "30.731", + "30.863", + "32.319", + "33.301", + "34.802", + "35.742", + "36.630", + "37.789", + "36.432", + "38.166", + "38.986", + "41.012", + "43.687", + "43.404", + "44.415", + "45.611", + "46.710", + "48.961", + "50.938", + "51.281", + "52.338", + "55.119", + "56.184", + "55.705", + "57.618", + "59.750", + "59.652", + "60.344", + "59.763", + "58.301", + "57.677", + "57.959", + "54.780", + "54.198", + "54.251", + "50.763", + "51.496", + "47.868", + "48.410", + "46.218", + "46.069", + "44.763", + "44.472", + "43.942", + "43.070", + "42.701", + "43.636", + "45.200", + "46.231", + "45.704", + "47.066", + "48.663", + "52.902", + "54.417", + "54.839", + "56.845", + "60.657", + "62.675", + "63.619", + "63.726", + "65.841", + "68.392", + "67.188", + "65.783", + "66.045", + "60.840", + "60.884", + "61.067", + "55.189", + "52.680", + "50.313", + "50.346", + "45.928", + "46.885", + "45.312", + "43.684", + "44.144", + "42.182", + "41.313" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.399", + "1.233", + "2.029", + "3.045", + "4.113", + "5.336", + "6.199", + "7.214", + "8.259", + "9.433", + "10.671", + "11.364", + "12.925", + "14.232", + "14.923", + "15.831", + "16.990", + "16.831", + "18.812", + "18.829", + "17.870", + "20.613", + "20.526", + "21.756", + "21.740", + "19.458", + "20.875", + "20.768", + "20.308", + "19.300", + "17.060", + "16.319", + "16.384", + "15.845", + "14.142", + "14.069", + "13.741", + "11.694", + "10.736", + "8.414", + "8.506", + "7.525", + "6.012", + "4.929", + "4.222", + "2.921", + "1.859", + "1.082", + "0.431", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "225.15", + "230.00", + "221.69", + "213.20", + "207.41", + "204.02", + "190.37", + "184.44", + "177.67", + "171.88", + "163.74", + "170.52", + "163.09", + "163.77", + "161.13", + "168.00", + "160.96", + "165.31", + "167.05", + "170.50", + "178.90", + "192.38", + "200.50", + "208.15", + "220.50", + "212.18", + "219.76", + "225.90", + "245.37", + "266.41", + "265.52", + "266.77", + "279.01", + "271.41", + "292.12", + "301.15", + "313.95", + "325.37", + "346.56", + "337.47", + "364.94", + "360.12", + "366.32", + "350.60", + "374.85", + "361.35", + "365.68", + "338.21", + "345.10", + "339.48", + "307.58", + "317.67", + "312.68", + "298.78", + "281.29", + "271.07", + "265.32", + "275.18", + "258.34", + "286.61", + "273.54", + "269.49", + "275.50", + "273.65", + "288.02", + "308.45", + "315.52", + "351.11", + "352.79", + "366.73", + "436.74", + "453.16", + "469.71", + "485.68", + "526.66", + "528.11", + "505.70", + "539.68", + "524.89", + "514.16", + "491.01", + "460.72", + "427.57", + "395.16", + "406.69", + "368.50", + "367.14", + "336.76", + "337.19", + "298.09", + "296.91", + "294.15", + "300.54", + "293.42", + "291.49", + "274.53" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-04", + "weekend": false, + "load_mw": [ + "34.891", + "34.903", + "33.881", + "33.375", + "32.911", + "30.935", + "29.700", + "30.113", + "28.285", + "29.017", + "29.237", + "28.634", + "28.705", + "28.124", + "29.849", + "29.067", + "30.033", + "30.442", + "31.576", + "30.931", + "32.714", + "32.167", + "34.458", + "34.370", + "35.747", + "36.143", + "37.608", + "38.543", + "40.635", + "41.251", + "40.689", + "42.875", + "42.025", + "46.450", + "46.947", + "48.600", + "50.628", + "52.290", + "51.997", + "53.847", + "57.102", + "56.159", + "56.459", + "57.761", + "60.814", + "58.368", + "57.696", + "57.298", + "55.935", + "52.832", + "52.695", + "51.860", + "51.421", + "48.360", + "47.810", + "46.601", + "45.628", + "44.175", + "44.137", + "44.296", + "42.935", + "42.290", + "43.331", + "43.094", + "42.826", + "45.851", + "45.069", + "48.124", + "48.439", + "49.746", + "51.883", + "55.647", + "55.262", + "58.011", + "62.141", + "62.285", + "62.816", + "62.548", + "67.330", + "66.624", + "64.663", + "62.734", + "62.218", + "61.071", + "55.492", + "53.174", + "51.820", + "50.599", + "49.428", + "44.978", + "44.351", + "43.469", + "42.615", + "42.255", + "40.836", + "41.098" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.440", + "1.187", + "2.023", + "2.605", + "3.483", + "4.779", + "5.881", + "6.731", + "8.358", + "9.378", + "11.573", + "12.252", + "13.233", + "14.217", + "16.224", + "16.182", + "16.954", + "17.787", + "17.538", + "18.840", + "19.720", + "19.367", + "18.811", + "21.127", + "19.783", + "19.785", + "17.272", + "19.139", + "22.104", + "19.981", + "18.571", + "17.340", + "16.362", + "17.693", + "14.851", + "14.025", + "12.514", + "10.430", + "10.770", + "8.683", + "8.616", + "7.380", + "6.149", + "4.835", + "3.977", + "3.002", + "2.177", + "1.260", + "0.396", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "228.59", + "236.32", + "215.50", + "214.33", + "220.90", + "194.45", + "196.60", + "178.59", + "177.83", + "171.76", + "166.38", + "162.84", + "163.51", + "154.33", + "172.86", + "154.19", + "156.50", + "164.44", + "187.75", + "179.24", + "189.25", + "195.54", + "203.93", + "208.74", + "209.94", + "227.06", + "236.72", + "242.91", + "245.84", + "252.97", + "256.49", + "270.16", + "281.65", + "288.70", + "296.14", + "311.31", + "309.60", + "309.84", + "337.58", + "356.82", + "350.17", + "351.74", + "352.08", + "365.69", + "364.98", + "366.38", + "351.76", + "357.48", + "342.84", + "334.87", + "324.93", + "315.58", + "304.48", + "295.47", + "284.46", + "269.88", + "270.41", + "274.37", + "256.58", + "271.34", + "255.63", + "264.76", + "259.04", + "270.09", + "263.69", + "295.88", + "328.21", + "346.15", + "343.50", + "366.24", + "403.43", + "447.36", + "450.61", + "484.73", + "487.39", + "517.37", + "519.92", + "503.34", + "522.41", + "507.59", + "491.96", + "468.93", + "434.40", + "411.58", + "381.02", + "365.60", + "353.09", + "326.67", + "321.42", + "317.35", + "277.32", + "287.96", + "274.49", + "288.27", + "267.30", + "285.51" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-05", + "weekend": false, + "load_mw": [ + "37.085", + "36.588", + "35.727", + "33.763", + "34.381", + "32.596", + "32.924", + "32.456", + "30.147", + "31.202", + "29.307", + "29.624", + "30.306", + "30.210", + "31.163", + "29.262", + "31.576", + "32.991", + "33.167", + "33.260", + "34.894", + "34.304", + "36.022", + "36.688", + "37.387", + "38.104", + "39.536", + "40.802", + "41.169", + "42.419", + "44.608", + "45.181", + "47.933", + "46.892", + "49.481", + "52.319", + "51.061", + "53.600", + "53.421", + "55.229", + "58.955", + "57.502", + "58.260", + "62.483", + "60.309", + "57.999", + "59.851", + "58.564", + "57.416", + "56.492", + "56.281", + "54.554", + "51.952", + "51.646", + "50.333", + "47.825", + "47.649", + "46.801", + "44.364", + "44.994", + "43.595", + "45.465", + "43.987", + "44.747", + "46.269", + "46.198", + "46.912", + "49.077", + "49.287", + "52.475", + "55.274", + "56.179", + "57.719", + "60.760", + "64.094", + "65.484", + "64.425", + "68.263", + "66.695", + "64.776", + "65.167", + "66.443", + "63.379", + "60.480", + "60.183", + "57.593", + "54.937", + "52.020", + "48.971", + "48.953", + "47.402", + "44.876", + "45.287", + "42.591", + "42.850", + "41.703" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.361", + "0.952", + "1.685", + "2.616", + "3.522", + "4.398", + "5.717", + "6.409", + "7.531", + "8.286", + "9.291", + "9.877", + "10.777", + "12.543", + "12.576", + "14.465", + "13.563", + "16.082", + "16.629", + "15.800", + "17.220", + "17.448", + "16.516", + "18.251", + "17.259", + "16.986", + "17.470", + "16.970", + "16.713", + "16.693", + "15.512", + "17.234", + "15.110", + "13.687", + "13.452", + "11.865", + "10.719", + "10.260", + "9.737", + "8.258", + "7.662", + "5.690", + "5.254", + "3.908", + "3.693", + "2.444", + "1.629", + "0.981", + "0.349", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "249.73", + "235.31", + "217.07", + "218.12", + "206.62", + "199.56", + "196.39", + "187.51", + "175.49", + "171.08", + "174.08", + "159.32", + "154.03", + "165.54", + "160.34", + "159.03", + "159.87", + "174.15", + "174.99", + "193.12", + "179.41", + "191.74", + "202.15", + "204.02", + "205.07", + "224.86", + "237.49", + "228.62", + "239.40", + "253.80", + "265.52", + "275.64", + "291.17", + "286.08", + "301.57", + "313.38", + "307.91", + "320.96", + "332.91", + "347.06", + "343.57", + "378.15", + "362.65", + "371.02", + "357.73", + "358.16", + "347.90", + "356.32", + "344.26", + "331.32", + "329.40", + "335.56", + "324.47", + "287.72", + "282.37", + "285.08", + "286.25", + "268.02", + "267.73", + "262.93", + "272.13", + "282.09", + "281.24", + "286.28", + "284.38", + "305.28", + "321.81", + "334.77", + "337.31", + "391.95", + "417.99", + "424.02", + "477.97", + "465.11", + "511.74", + "522.78", + "525.53", + "515.11", + "498.54", + "498.36", + "459.91", + "477.69", + "443.48", + "379.43", + "384.32", + "356.44", + "346.44", + "340.83", + "308.31", + "313.94", + "297.13", + "281.85", + "287.16", + "286.86", + "274.05", + "283.67" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-06", + "weekend": false, + "load_mw": [ + "35.118", + "35.599", + "32.259", + "33.467", + "33.377", + "31.939", + "29.654", + "31.479", + "31.513", + "30.635", + "28.623", + "28.583", + "28.474", + "28.925", + "28.624", + "29.405", + "29.990", + "30.701", + "30.310", + "31.494", + "33.721", + "33.688", + "34.045", + "35.123", + "36.525", + "36.497", + "38.242", + "37.125", + "40.943", + "41.697", + "42.011", + "42.867", + "44.921", + "45.652", + "47.140", + "48.686", + "51.949", + "51.812", + "52.280", + "53.999", + "56.539", + "55.810", + "56.981", + "57.290", + "56.785", + "58.369", + "57.520", + "56.637", + "51.804", + "56.393", + "52.664", + "51.317", + "52.361", + "49.400", + "48.575", + "47.897", + "46.138", + "45.675", + "44.762", + "43.294", + "41.661", + "42.132", + "41.504", + "43.387", + "43.667", + "44.921", + "45.843", + "46.756", + "48.219", + "50.836", + "51.089", + "55.773", + "56.405", + "57.951", + "59.721", + "62.506", + "63.976", + "66.264", + "66.635", + "64.139", + "61.783", + "63.300", + "62.173", + "58.443", + "58.333", + "55.553", + "51.990", + "50.520", + "49.790", + "46.040", + "44.268", + "43.670", + "41.900", + "41.412", + "42.707", + "41.151" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.403", + "1.137", + "2.004", + "2.930", + "4.174", + "5.559", + "6.379", + "7.730", + "8.741", + "10.075", + "11.424", + "11.767", + "13.499", + "15.174", + "15.902", + "18.266", + "17.387", + "17.895", + "19.256", + "19.779", + "22.036", + "21.008", + "22.852", + "21.195", + "21.090", + "22.487", + "20.768", + "21.155", + "21.765", + "18.683", + "17.371", + "16.955", + "18.907", + "16.564", + "15.231", + "13.859", + "13.532", + "12.293", + "11.836", + "10.399", + "8.624", + "7.690", + "6.529", + "5.435", + "4.280", + "3.065", + "1.953", + "1.129", + "0.427", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "234.70", + "224.76", + "217.28", + "218.67", + "210.62", + "193.55", + "198.08", + "194.21", + "176.80", + "169.48", + "170.05", + "160.51", + "164.04", + "163.37", + "159.54", + "160.85", + "162.76", + "165.69", + "182.70", + "182.68", + "179.29", + "194.47", + "190.66", + "203.86", + "224.36", + "222.29", + "234.22", + "240.80", + "247.95", + "252.20", + "273.11", + "271.51", + "289.88", + "281.74", + "287.73", + "326.32", + "311.38", + "319.63", + "346.71", + "334.54", + "370.10", + "342.99", + "352.83", + "353.91", + "363.37", + "355.43", + "361.92", + "353.60", + "316.57", + "341.23", + "321.88", + "318.03", + "292.54", + "306.26", + "290.04", + "275.63", + "288.63", + "267.58", + "274.76", + "258.34", + "266.64", + "262.38", + "290.24", + "258.08", + "291.47", + "289.02", + "320.96", + "330.21", + "338.98", + "383.35", + "395.58", + "442.88", + "476.69", + "471.34", + "478.70", + "495.93", + "491.78", + "512.11", + "492.81", + "501.86", + "479.03", + "477.90", + "424.98", + "396.23", + "389.38", + "359.32", + "329.15", + "318.26", + "312.76", + "307.78", + "317.87", + "281.43", + "301.21", + "275.39", + "274.09", + "264.52" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-07", + "weekend": true, + "load_mw": [ + "28.761", + "28.944", + "30.016", + "27.744", + "27.357", + "26.498", + "26.382", + "24.521", + "25.322", + "24.490", + "24.421", + "24.249", + "24.233", + "23.759", + "24.249", + "24.688", + "24.875", + "25.027", + "26.175", + "26.649", + "27.109", + "26.860", + "29.130", + "29.287", + "29.758", + "31.428", + "31.246", + "33.498", + "33.334", + "33.908", + "33.807", + "35.612", + "38.044", + "39.173", + "39.829", + "40.262", + "42.684", + "43.859", + "43.778", + "44.107", + "46.900", + "47.935", + "47.380", + "46.913", + "48.749", + "47.277", + "47.568", + "47.451", + "48.086", + "45.422", + "45.792", + "42.896", + "42.332", + "42.795", + "41.245", + "38.568", + "38.524", + "37.656", + "37.335", + "35.390", + "36.211", + "34.329", + "37.078", + "35.482", + "34.820", + "37.047", + "40.213", + "41.157", + "41.675", + "41.975", + "45.062", + "45.990", + "47.656", + "50.745", + "49.574", + "52.314", + "56.040", + "55.864", + "54.278", + "55.009", + "54.745", + "51.876", + "51.547", + "50.532", + "47.871", + "46.189", + "45.726", + "42.583", + "42.018", + "38.982", + "36.726", + "35.428", + "36.499", + "35.163", + "34.831", + "33.940" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.452", + "1.229", + "1.978", + "2.866", + "3.733", + "4.988", + "6.354", + "7.517", + "8.617", + "9.899", + "11.052", + "12.594", + "13.509", + "15.120", + "15.515", + "15.368", + "17.889", + "17.559", + "18.821", + "20.356", + "17.849", + "19.207", + "20.402", + "19.646", + "19.688", + "18.860", + "19.463", + "21.439", + "18.621", + "19.695", + "18.049", + "19.080", + "17.249", + "17.032", + "17.017", + "13.115", + "13.846", + "11.616", + "10.748", + "10.197", + "7.939", + "7.107", + "6.278", + "5.254", + "3.764", + "2.832", + "2.038", + "1.015", + "0.449", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "236.96", + "230.95", + "237.29", + "220.01", + "219.45", + "216.19", + "188.11", + "189.25", + "184.91", + "182.98", + "174.07", + "182.92", + "168.96", + "173.77", + "159.40", + "164.98", + "169.23", + "180.06", + "195.75", + "184.76", + "184.01", + "186.01", + "203.16", + "210.69", + "222.32", + "221.80", + "223.38", + "250.48", + "255.17", + "249.18", + "256.10", + "259.20", + "276.51", + "281.44", + "296.41", + "318.53", + "327.70", + "326.88", + "329.11", + "343.59", + "352.68", + "346.01", + "352.59", + "336.59", + "351.80", + "357.13", + "350.96", + "322.91", + "347.74", + "321.97", + "322.33", + "315.39", + "316.09", + "305.13", + "281.90", + "283.06", + "278.10", + "273.37", + "250.92", + "267.85", + "257.64", + "268.19", + "270.40", + "281.33", + "305.78", + "282.90", + "322.68", + "316.78", + "341.11", + "371.79", + "408.15", + "441.48", + "855.06", + "963.71", + "903.00", + "986.89", + "981.17", + "995.66", + "970.91", + "955.20", + "882.23", + "862.20", + "815.51", + "780.37", + "743.31", + "687.40", + "660.54", + "635.00", + "306.49", + "293.92", + "281.13", + "297.30", + "288.99", + "294.86", + "301.07", + "285.66" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-08", + "weekend": true, + "load_mw": [ + "30.181", + "29.130", + "28.609", + "29.339", + "27.528", + "27.807", + "25.737", + "26.317", + "25.960", + "24.768", + "24.938", + "24.864", + "25.008", + "25.188", + "25.535", + "25.287", + "26.119", + "25.715", + "27.127", + "26.416", + "28.371", + "28.859", + "29.509", + "29.215", + "31.969", + "31.663", + "33.355", + "32.878", + "35.305", + "35.180", + "36.402", + "37.910", + "38.361", + "40.840", + "41.330", + "41.061", + "42.700", + "43.385", + "46.017", + "45.071", + "48.486", + "48.657", + "49.933", + "48.845", + "49.119", + "49.578", + "49.827", + "47.087", + "47.862", + "45.878", + "46.046", + "43.836", + "44.051", + "42.292", + "41.216", + "39.484", + "39.241", + "38.928", + "37.373", + "37.964", + "37.230", + "36.739", + "37.238", + "36.115", + "37.988", + "38.716", + "38.198", + "40.263", + "40.839", + "42.032", + "44.803", + "47.565", + "48.547", + "48.905", + "52.048", + "53.162", + "56.116", + "55.578", + "56.587", + "56.384", + "58.544", + "53.235", + "52.488", + "52.151", + "49.337", + "48.146", + "43.744", + "44.761", + "42.257", + "41.531", + "39.258", + "37.258", + "36.948", + "35.879", + "34.954", + "35.308" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.418", + "1.207", + "2.022", + "3.026", + "3.673", + "4.963", + "6.404", + "7.314", + "9.729", + "9.974", + "10.608", + "12.301", + "13.796", + "14.393", + "15.353", + "15.987", + "17.029", + "18.605", + "19.342", + "19.524", + "19.842", + "19.554", + "19.990", + "20.637", + "20.838", + "21.357", + "22.534", + "22.529", + "20.848", + "18.779", + "18.541", + "18.266", + "18.588", + "15.887", + "15.212", + "14.782", + "13.964", + "12.703", + "10.533", + "10.548", + "8.009", + "7.455", + "6.187", + "5.025", + "4.213", + "2.845", + "1.947", + "1.071", + "0.388", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "229.52", + "224.74", + "220.32", + "224.28", + "211.61", + "188.66", + "199.24", + "190.90", + "186.97", + "184.93", + "178.75", + "170.08", + "160.09", + "173.56", + "165.74", + "161.79", + "179.26", + "172.94", + "170.35", + "184.59", + "194.94", + "188.89", + "198.40", + "207.15", + "221.90", + "231.87", + "227.56", + "240.51", + "259.17", + "242.69", + "262.23", + "260.67", + "282.43", + "296.63", + "289.81", + "295.85", + "320.86", + "330.16", + "327.14", + "331.50", + "340.17", + "347.66", + "376.29", + "345.42", + "368.64", + "351.61", + "353.18", + "354.69", + "347.99", + "323.27", + "317.72", + "312.31", + "306.90", + "299.73", + "279.04", + "269.54", + "269.49", + "265.13", + "277.98", + "280.28", + "264.09", + "268.50", + "281.93", + "283.91", + "292.44", + "326.10", + "318.96", + "344.67", + "336.29", + "372.29", + "425.65", + "435.86", + "473.64", + "483.03", + "527.27", + "497.32", + "505.04", + "524.67", + "517.91", + "502.31", + "509.94", + "452.32", + "431.31", + "403.51", + "375.66", + "359.31", + "340.21", + "336.44", + "312.72", + "303.77", + "295.73", + "283.39", + "282.75", + "296.51", + "279.23", + "274.46" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-09", + "weekend": false, + "load_mw": [ + "33.943", + "34.371", + "33.069", + "33.106", + "30.633", + "30.666", + "29.328", + "29.519", + "29.285", + "28.783", + "27.909", + "27.638", + "28.252", + "28.611", + "28.689", + "28.750", + "29.465", + "30.241", + "29.852", + "30.610", + "30.350", + "33.105", + "33.984", + "34.560", + "36.061", + "36.080", + "36.860", + "38.133", + "38.072", + "40.370", + "41.103", + "42.586", + "43.484", + "44.520", + "47.428", + "46.741", + "48.341", + "48.616", + "51.069", + "51.800", + "54.102", + "55.330", + "56.484", + "54.746", + "56.586", + "56.272", + "56.000", + "56.265", + "54.082", + "52.278", + "51.760", + "50.744", + "48.615", + "49.082", + "46.722", + "43.938", + "45.194", + "44.531", + "42.474", + "43.645", + "41.294", + "40.994", + "40.638", + "41.349", + "43.300", + "42.031", + "44.854", + "47.787", + "46.939", + "50.437", + "50.860", + "53.646", + "54.526", + "58.571", + "60.681", + "59.652", + "63.124", + "60.967", + "61.668", + "63.926", + "61.337", + "61.077", + "59.022", + "57.040", + "55.639", + "53.884", + "51.103", + "50.200", + "46.121", + "43.394", + "44.658", + "43.183", + "43.311", + "41.247", + "40.471", + "38.244" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.482", + "1.267", + "2.134", + "3.566", + "4.648", + "5.885", + "6.532", + "8.221", + "9.937", + "10.673", + "12.526", + "12.979", + "14.463", + "15.464", + "16.859", + "17.846", + "20.865", + "20.875", + "19.811", + "20.950", + "23.119", + "23.515", + "23.156", + "22.530", + "21.947", + "23.179", + "23.716", + "22.618", + "22.130", + "22.866", + "21.116", + "22.575", + "19.073", + "17.092", + "16.857", + "15.072", + "15.014", + "14.068", + "13.144", + "10.987", + "9.620", + "7.499", + "6.377", + "5.578", + "4.413", + "3.364", + "2.135", + "1.242", + "0.467", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.03", + "236.69", + "226.69", + "215.23", + "211.97", + "210.99", + "191.80", + "195.25", + "188.95", + "174.20", + "174.83", + "161.14", + "173.99", + "164.03", + "167.39", + "156.86", + "167.52", + "169.73", + "166.25", + "184.66", + "188.46", + "192.45", + "206.30", + "219.01", + "219.95", + "231.32", + "235.80", + "232.21", + "240.02", + "266.56", + "272.81", + "267.10", + "285.70", + "276.99", + "299.19", + "298.61", + "317.99", + "323.56", + "310.79", + "336.74", + "353.43", + "330.88", + "343.23", + "351.20", + "371.36", + "365.32", + "353.52", + "348.09", + "343.99", + "324.37", + "335.25", + "319.28", + "281.19", + "293.96", + "283.64", + "273.12", + "280.38", + "264.37", + "274.38", + "266.77", + "259.00", + "270.81", + "282.96", + "271.92", + "296.35", + "277.75", + "316.32", + "359.21", + "350.44", + "391.22", + "413.09", + "433.95", + "452.54", + "470.63", + "521.58", + "512.84", + "525.95", + "545.47", + "497.82", + "516.29", + "458.17", + "454.52", + "438.59", + "396.09", + "379.71", + "348.07", + "326.81", + "300.24", + "306.81", + "308.80", + "304.99", + "298.50", + "288.55", + "289.41", + "277.90", + "272.13" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-10", + "weekend": false, + "load_mw": [ + "38.749", + "37.555", + "38.312", + "35.783", + "36.948", + "33.716", + "31.971", + "32.848", + "33.540", + "32.693", + "31.719", + "30.253", + "30.130", + "31.215", + "31.362", + "30.861", + "32.895", + "33.093", + "34.212", + "33.738", + "34.362", + "36.180", + "36.319", + "36.567", + "39.666", + "41.384", + "40.071", + "41.128", + "42.035", + "46.331", + "46.319", + "45.800", + "47.044", + "49.749", + "52.933", + "54.767", + "55.538", + "56.100", + "56.908", + "61.045", + "61.025", + "61.548", + "60.111", + "63.898", + "64.482", + "61.271", + "62.986", + "60.834", + "58.168", + "58.512", + "56.473", + "55.102", + "54.964", + "53.823", + "52.173", + "50.649", + "48.680", + "47.313", + "47.985", + "47.974", + "44.407", + "46.765", + "45.534", + "46.035", + "47.124", + "46.831", + "47.996", + "51.832", + "52.063", + "53.578", + "57.302", + "59.296", + "62.188", + "64.465", + "68.846", + "66.347", + "70.797", + "71.516", + "70.153", + "69.502", + "66.630", + "69.166", + "61.492", + "62.155", + "60.081", + "59.334", + "56.732", + "55.187", + "52.711", + "51.127", + "49.699", + "47.617", + "45.537", + "44.789", + "43.583", + "44.518" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.433", + "1.152", + "2.010", + "2.791", + "3.884", + "5.494", + "6.286", + "6.644", + "9.325", + "10.225", + "10.787", + "12.345", + "11.698", + "14.565", + "15.786", + "16.611", + "16.806", + "17.266", + "17.935", + "17.283", + "21.203", + "19.853", + "19.909", + "21.115", + "21.540", + "20.038", + "19.495", + "19.198", + "19.551", + "17.580", + "16.540", + "20.166", + "18.358", + "15.162", + "16.527", + "14.572", + "12.530", + "12.312", + "11.203", + "9.002", + "8.355", + "7.441", + "6.194", + "5.242", + "3.699", + "3.139", + "1.994", + "1.089", + "0.413", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "237.29", + "243.21", + "233.48", + "210.26", + "205.98", + "198.07", + "187.09", + "183.47", + "180.27", + "177.49", + "172.51", + "157.63", + "157.70", + "159.18", + "164.32", + "161.05", + "164.77", + "175.30", + "164.09", + "181.85", + "173.08", + "187.19", + "191.18", + "192.95", + "212.74", + "235.17", + "227.86", + "250.98", + "255.22", + "258.69", + "260.67", + "267.74", + "286.53", + "285.93", + "300.00", + "320.93", + "324.58", + "333.94", + "321.39", + "358.60", + "341.14", + "373.20", + "353.28", + "368.37", + "375.25", + "358.72", + "356.42", + "351.01", + "359.03", + "328.80", + "339.32", + "316.88", + "308.28", + "296.54", + "279.46", + "285.33", + "281.55", + "279.75", + "263.99", + "274.02", + "254.58", + "255.82", + "269.69", + "290.70", + "266.27", + "300.80", + "316.90", + "346.06", + "345.41", + "401.79", + "410.02", + "462.57", + "483.94", + "463.28", + "540.77", + "545.60", + "509.64", + "538.28", + "515.21", + "522.10", + "459.58", + "471.22", + "429.32", + "402.08", + "372.78", + "351.30", + "339.00", + "334.50", + "317.13", + "324.01", + "302.30", + "308.09", + "287.45", + "275.59", + "295.00", + "290.25" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-11", + "weekend": false, + "load_mw": [ + "36.120", + "34.813", + "34.531", + "34.266", + "32.494", + "32.581", + "30.992", + "30.210", + "29.972", + "29.829", + "29.301", + "28.551", + "29.013", + "29.759", + "30.162", + "29.178", + "30.537", + "31.004", + "32.057", + "33.528", + "34.726", + "33.730", + "35.236", + "34.479", + "36.149", + "38.230", + "39.752", + "40.603", + "41.539", + "40.634", + "42.454", + "43.388", + "45.380", + "48.482", + "47.732", + "51.342", + "49.331", + "51.482", + "53.971", + "53.684", + "56.180", + "57.252", + "56.714", + "59.166", + "58.566", + "58.474", + "58.182", + "58.627", + "57.199", + "55.009", + "52.616", + "52.678", + "51.781", + "51.701", + "47.365", + "45.956", + "46.584", + "45.264", + "45.452", + "44.609", + "43.228", + "42.788", + "43.915", + "43.043", + "44.506", + "46.111", + "46.285", + "47.210", + "49.662", + "51.483", + "53.162", + "56.442", + "59.204", + "60.864", + "63.074", + "63.511", + "63.532", + "67.428", + "65.907", + "65.586", + "63.880", + "63.224", + "60.347", + "58.792", + "59.198", + "57.622", + "52.793", + "50.743", + "48.772", + "47.641", + "45.408", + "44.491", + "43.927", + "42.944", + "42.565", + "41.725" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.479", + "1.152", + "2.119", + "2.990", + "3.705", + "4.994", + "6.464", + "7.393", + "8.286", + "9.467", + "10.216", + "11.261", + "14.190", + "15.524", + "15.861", + "15.957", + "16.545", + "16.422", + "18.814", + "19.623", + "18.260", + "20.446", + "20.344", + "19.472", + "21.920", + "20.437", + "19.710", + "20.771", + "20.612", + "17.971", + "19.094", + "18.347", + "17.072", + "16.923", + "15.425", + "14.497", + "12.393", + "12.027", + "11.177", + "10.015", + "8.418", + "7.542", + "6.345", + "4.788", + "4.003", + "3.060", + "2.196", + "1.247", + "0.468", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "237.29", + "234.02", + "213.77", + "220.14", + "198.92", + "198.11", + "182.14", + "187.28", + "182.55", + "171.51", + "168.48", + "156.43", + "156.83", + "157.80", + "156.56", + "170.21", + "171.82", + "164.68", + "174.26", + "184.32", + "187.88", + "189.50", + "207.88", + "201.20", + "222.77", + "223.35", + "241.17", + "233.29", + "253.24", + "252.52", + "268.31", + "284.72", + "268.10", + "294.92", + "298.42", + "319.20", + "307.81", + "329.00", + "337.34", + "325.43", + "332.35", + "354.06", + "355.84", + "371.27", + "360.16", + "355.65", + "350.21", + "359.56", + "332.81", + "321.62", + "334.12", + "297.24", + "325.51", + "293.67", + "266.49", + "290.93", + "272.69", + "283.40", + "262.00", + "285.38", + "245.26", + "273.01", + "271.83", + "286.36", + "289.65", + "288.11", + "321.37", + "317.24", + "351.03", + "373.67", + "420.26", + "428.92", + "455.73", + "501.87", + "532.46", + "523.76", + "546.82", + "504.14", + "527.77", + "525.35", + "443.86", + "469.00", + "437.20", + "389.73", + "397.81", + "369.73", + "353.45", + "324.95", + "307.32", + "308.74", + "297.79", + "303.71", + "293.41", + "285.16", + "280.55", + "278.13" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-12", + "weekend": false, + "load_mw": [ + "35.519", + "35.431", + "34.660", + "34.453", + "32.402", + "31.784", + "31.960", + "30.757", + "30.041", + "29.579", + "28.602", + "29.700", + "29.043", + "29.539", + "28.715", + "29.561", + "30.156", + "31.086", + "31.720", + "32.002", + "34.804", + "33.670", + "34.728", + "34.653", + "36.090", + "37.619", + "38.756", + "39.565", + "41.322", + "41.719", + "42.130", + "44.733", + "46.129", + "45.839", + "49.282", + "49.099", + "50.230", + "51.834", + "52.865", + "54.768", + "55.069", + "56.178", + "57.271", + "57.580", + "58.129", + "57.201", + "59.735", + "58.403", + "56.213", + "53.979", + "51.986", + "52.395", + "49.317", + "49.980", + "48.145", + "48.209", + "45.473", + "44.637", + "43.630", + "44.377", + "43.305", + "41.726", + "44.002", + "45.221", + "44.411", + "44.608", + "46.714", + "47.159", + "51.311", + "50.597", + "54.300", + "53.092", + "57.994", + "59.005", + "64.708", + "64.439", + "64.000", + "65.193", + "63.383", + "67.047", + "64.060", + "62.717", + "59.469", + "61.885", + "58.050", + "53.866", + "52.114", + "51.710", + "47.928", + "47.388", + "45.157", + "45.286", + "43.908", + "43.654", + "41.331", + "40.227" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.475", + "1.295", + "2.298", + "3.513", + "4.806", + "5.712", + "7.090", + "8.971", + "10.677", + "10.845", + "11.852", + "13.387", + "15.226", + "16.310", + "16.846", + "19.911", + "19.203", + "20.374", + "18.304", + "22.738", + "23.623", + "23.093", + "25.036", + "26.876", + "23.238", + "21.081", + "22.259", + "23.220", + "22.653", + "22.129", + "22.373", + "19.338", + "20.065", + "18.337", + "17.902", + "17.261", + "14.149", + "13.572", + "13.199", + "11.811", + "10.178", + "9.122", + "6.881", + "5.715", + "4.520", + "3.170", + "2.378", + "1.344", + "0.504", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "240.11", + "226.05", + "230.53", + "217.83", + "218.55", + "202.82", + "207.19", + "185.56", + "169.90", + "166.37", + "166.54", + "166.90", + "162.82", + "159.67", + "170.62", + "171.61", + "161.60", + "178.30", + "179.92", + "190.11", + "190.39", + "189.62", + "200.11", + "204.57", + "226.22", + "219.13", + "239.68", + "240.55", + "247.47", + "262.62", + "263.35", + "273.56", + "273.48", + "265.52", + "294.43", + "304.27", + "317.95", + "321.01", + "332.87", + "340.52", + "358.38", + "341.47", + "358.38", + "363.36", + "354.71", + "346.66", + "368.59", + "336.23", + "340.05", + "323.00", + "299.85", + "288.46", + "303.56", + "298.04", + "288.88", + "266.64", + "268.19", + "273.47", + "269.79", + "243.00", + "269.19", + "254.19", + "275.34", + "285.08", + "278.46", + "287.08", + "323.90", + "337.68", + "359.68", + "386.61", + "413.54", + "440.72", + "468.79", + "507.27", + "508.68", + "533.34", + "514.80", + "502.86", + "496.74", + "508.56", + "477.56", + "475.22", + "453.07", + "441.53", + "388.75", + "360.01", + "314.14", + "332.15", + "320.84", + "323.52", + "294.71", + "314.40", + "300.93", + "279.12", + "280.16", + "283.49" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-13", + "weekend": false, + "load_mw": [ + "35.560", + "34.973", + "34.041", + "33.904", + "32.647", + "32.742", + "31.306", + "30.652", + "30.181", + "29.888", + "28.134", + "29.194", + "29.111", + "28.825", + "29.806", + "28.662", + "29.531", + "31.018", + "30.725", + "31.915", + "32.619", + "32.120", + "34.525", + "34.176", + "37.295", + "36.783", + "38.273", + "39.073", + "40.382", + "43.098", + "41.100", + "44.395", + "43.631", + "45.233", + "47.157", + "48.735", + "49.107", + "50.598", + "51.634", + "52.878", + "54.264", + "56.225", + "56.648", + "57.431", + "57.393", + "56.777", + "55.961", + "55.970", + "54.771", + "55.562", + "54.329", + "50.769", + "50.991", + "50.898", + "49.144", + "46.020", + "45.575", + "45.225", + "44.455", + "43.270", + "43.228", + "43.181", + "42.100", + "43.246", + "42.974", + "44.651", + "47.357", + "46.634", + "48.821", + "49.552", + "51.642", + "54.308", + "57.022", + "56.444", + "62.570", + "62.240", + "66.067", + "62.368", + "65.920", + "63.474", + "61.683", + "61.069", + "59.420", + "58.277", + "57.310", + "53.730", + "51.768", + "50.705", + "48.691", + "47.747", + "44.180", + "44.226", + "42.170", + "42.278", + "41.389", + "41.562" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.465", + "1.328", + "2.063", + "3.215", + "4.597", + "5.449", + "6.974", + "8.933", + "9.424", + "10.321", + "12.503", + "14.859", + "15.649", + "16.226", + "19.164", + "19.414", + "19.435", + "19.401", + "20.552", + "21.192", + "24.423", + "22.362", + "22.794", + "25.434", + "23.127", + "20.850", + "25.278", + "21.881", + "23.525", + "20.436", + "21.640", + "20.818", + "19.508", + "18.338", + "18.337", + "17.120", + "15.333", + "13.572", + "12.566", + "11.461", + "9.926", + "7.956", + "7.502", + "5.687", + "4.566", + "3.616", + "2.353", + "1.330", + "0.485", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "226.88", + "229.66", + "226.78", + "221.49", + "210.68", + "208.63", + "181.58", + "189.17", + "177.34", + "179.89", + "170.27", + "169.29", + "166.74", + "158.06", + "162.63", + "173.98", + "180.29", + "165.67", + "170.45", + "181.13", + "189.35", + "192.93", + "199.49", + "208.39", + "226.28", + "217.64", + "219.86", + "232.98", + "252.26", + "248.35", + "274.97", + "269.28", + "281.15", + "281.74", + "300.73", + "303.98", + "317.50", + "306.26", + "328.93", + "325.96", + "350.13", + "341.97", + "334.44", + "347.87", + "368.33", + "352.97", + "354.55", + "352.63", + "346.97", + "332.34", + "326.50", + "288.80", + "308.81", + "289.60", + "283.08", + "266.86", + "268.79", + "255.57", + "262.83", + "264.43", + "253.10", + "259.27", + "273.84", + "272.33", + "285.39", + "297.67", + "322.48", + "325.21", + "354.27", + "395.41", + "406.37", + "422.04", + "467.38", + "478.51", + "483.39", + "520.44", + "515.77", + "524.96", + "529.55", + "516.95", + "480.63", + "452.04", + "429.94", + "416.46", + "391.09", + "354.89", + "358.39", + "334.50", + "335.04", + "311.92", + "288.60", + "285.32", + "285.17", + "296.21", + "284.21", + "264.50" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-14", + "weekend": true, + "load_mw": [ + "33.133", + "32.610", + "31.126", + "29.975", + "31.407", + "29.850", + "28.872", + "29.214", + "28.174", + "27.572", + "28.365", + "27.224", + "27.301", + "27.270", + "26.002", + "28.177", + "28.535", + "29.719", + "30.199", + "31.059", + "30.784", + "31.894", + "33.213", + "32.869", + "34.170", + "36.509", + "35.933", + "36.660", + "38.062", + "39.009", + "39.753", + "40.191", + "43.337", + "44.182", + "44.380", + "45.114", + "47.306", + "49.258", + "51.623", + "52.768", + "51.061", + "53.506", + "54.571", + "53.917", + "55.792", + "56.213", + "54.944", + "51.654", + "54.284", + "51.197", + "51.711", + "47.029", + "46.801", + "47.546", + "43.855", + "45.044", + "44.257", + "42.301", + "43.087", + "41.514", + "41.672", + "39.946", + "41.498", + "41.097", + "41.078", + "43.300", + "43.350", + "43.705", + "46.547", + "46.514", + "51.832", + "51.188", + "53.627", + "55.864", + "58.467", + "57.097", + "59.686", + "61.004", + "60.375", + "61.126", + "58.964", + "60.085", + "59.467", + "57.101", + "54.394", + "50.791", + "48.317", + "48.190", + "46.425", + "44.161", + "43.520", + "43.821", + "41.655", + "39.294", + "39.652", + "39.477" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.475", + "1.131", + "2.274", + "3.586", + "4.429", + "5.692", + "6.890", + "7.918", + "9.504", + "10.799", + "12.641", + "13.101", + "13.875", + "14.839", + "17.175", + "19.232", + "18.727", + "20.997", + "21.409", + "21.467", + "20.659", + "20.822", + "25.293", + "22.194", + "23.888", + "24.588", + "22.393", + "22.224", + "23.013", + "21.495", + "18.700", + "19.410", + "19.355", + "16.314", + "18.624", + "15.837", + "14.397", + "14.442", + "11.664", + "11.059", + "8.764", + "7.688", + "6.828", + "5.582", + "4.064", + "3.318", + "1.987", + "1.209", + "0.459", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "243.84", + "233.58", + "228.50", + "219.92", + "205.85", + "201.92", + "187.79", + "190.34", + "194.11", + "176.90", + "177.23", + "169.74", + "174.99", + "168.84", + "168.67", + "165.08", + "168.40", + "169.96", + "182.74", + "185.96", + "188.61", + "198.39", + "209.89", + "202.90", + "211.07", + "237.49", + "229.80", + "261.12", + "244.52", + "258.02", + "257.02", + "271.49", + "293.07", + "292.86", + "290.10", + "291.93", + "308.09", + "297.93", + "327.06", + "342.46", + "341.56", + "356.21", + "360.61", + "355.67", + "337.86", + "374.62", + "352.88", + "321.73", + "356.06", + "326.26", + "331.63", + "317.30", + "307.78", + "302.81", + "279.72", + "284.92", + "268.32", + "270.98", + "268.66", + "264.38", + "273.56", + "272.45", + "275.43", + "279.24", + "274.70", + "309.77", + "310.22", + "338.82", + "339.56", + "367.71", + "396.03", + "412.59", + "476.55", + "473.86", + "534.24", + "507.72", + "518.95", + "497.23", + "491.72", + "497.66", + "456.59", + "478.34", + "438.29", + "415.16", + "389.31", + "357.51", + "336.93", + "330.07", + "328.43", + "313.65", + "302.09", + "310.77", + "295.71", + "304.93", + "272.94", + "275.09" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-15", + "weekend": true, + "load_mw": [ + "33.421", + "32.928", + "31.812", + "31.017", + "29.644", + "30.104", + "29.777", + "29.025", + "27.819", + "27.468", + "27.270", + "27.529", + "26.767", + "27.277", + "27.499", + "27.252", + "28.883", + "28.702", + "28.463", + "29.073", + "30.612", + "30.921", + "31.432", + "33.922", + "34.106", + "34.172", + "34.242", + "35.220", + "36.198", + "38.674", + "40.206", + "40.370", + "42.205", + "42.766", + "44.054", + "46.058", + "46.576", + "50.071", + "49.974", + "50.480", + "51.196", + "53.540", + "53.341", + "55.171", + "56.713", + "52.296", + "53.243", + "53.587", + "53.528", + "50.930", + "50.223", + "47.681", + "49.162", + "45.815", + "43.150", + "42.960", + "43.136", + "42.561", + "40.734", + "41.264", + "38.984", + "40.425", + "38.903", + "40.463", + "42.656", + "42.385", + "44.016", + "43.362", + "46.910", + "47.497", + "48.659", + "51.797", + "53.862", + "55.190", + "56.947", + "58.489", + "59.355", + "60.451", + "58.852", + "60.684", + "60.057", + "60.587", + "57.929", + "55.298", + "52.803", + "52.296", + "51.149", + "47.438", + "45.751", + "44.906", + "44.128", + "41.369", + "39.956", + "40.631", + "40.453", + "38.969" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.426", + "1.168", + "1.790", + "2.947", + "3.878", + "5.174", + "6.180", + "7.490", + "8.834", + "9.695", + "11.028", + "12.368", + "13.188", + "14.217", + "14.505", + "15.003", + "17.789", + "18.272", + "16.206", + "19.939", + "20.080", + "20.757", + "21.511", + "21.819", + "19.513", + "21.000", + "20.794", + "19.901", + "19.509", + "18.397", + "18.372", + "19.540", + "15.473", + "16.552", + "16.699", + "13.559", + "13.019", + "12.294", + "11.233", + "10.283", + "9.038", + "7.137", + "6.045", + "5.262", + "4.500", + "2.998", + "2.052", + "1.142", + "0.419", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "249.66", + "240.79", + "230.59", + "190.22", + "207.65", + "206.45", + "203.16", + "189.43", + "183.73", + "172.62", + "176.99", + "175.68", + "160.62", + "171.12", + "161.57", + "160.53", + "172.99", + "170.32", + "178.88", + "185.02", + "185.78", + "191.68", + "198.26", + "207.35", + "226.49", + "226.40", + "227.08", + "246.19", + "254.02", + "261.34", + "268.88", + "272.76", + "272.50", + "292.97", + "290.64", + "314.88", + "309.94", + "332.03", + "314.54", + "335.54", + "356.72", + "345.03", + "353.90", + "348.09", + "375.82", + "343.28", + "348.56", + "352.83", + "349.93", + "328.01", + "325.92", + "299.97", + "309.18", + "304.46", + "275.53", + "263.74", + "294.00", + "273.39", + "263.98", + "272.69", + "270.45", + "251.13", + "266.75", + "297.95", + "282.94", + "301.42", + "318.07", + "337.87", + "369.97", + "386.16", + "398.19", + "450.21", + "449.69", + "475.65", + "515.29", + "519.94", + "504.70", + "528.80", + "523.69", + "505.01", + "479.27", + "455.11", + "433.86", + "421.79", + "372.64", + "340.51", + "328.82", + "311.71", + "322.55", + "300.55", + "295.71", + "293.69", + "284.05", + "285.26", + "297.37", + "282.99" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-16", + "weekend": false, + "load_mw": [ + "36.712", + "35.446", + "34.651", + "34.380", + "32.742", + "33.572", + "33.051", + "30.880", + "31.820", + "30.595", + "30.705", + "30.709", + "30.544", + "30.106", + "30.593", + "30.946", + "31.769", + "32.214", + "32.487", + "33.723", + "33.800", + "34.001", + "34.684", + "37.444", + "38.499", + "40.140", + "40.538", + "41.335", + "42.557", + "44.472", + "45.250", + "45.391", + "47.425", + "47.869", + "50.634", + "49.958", + "51.515", + "53.969", + "55.307", + "57.051", + "59.492", + "58.687", + "60.167", + "59.757", + "62.074", + "60.276", + "61.409", + "60.778", + "58.012", + "56.304", + "56.863", + "53.932", + "52.485", + "51.246", + "51.905", + "48.713", + "47.384", + "47.552", + "46.030", + "43.911", + "43.112", + "45.078", + "43.624", + "44.648", + "46.929", + "46.009", + "47.799", + "48.141", + "51.490", + "53.744", + "56.321", + "56.413", + "59.461", + "61.859", + "62.197", + "67.032", + "64.886", + "67.023", + "67.402", + "70.114", + "67.768", + "64.878", + "63.799", + "60.134", + "59.280", + "57.376", + "52.366", + "52.993", + "51.698", + "47.037", + "47.375", + "44.258", + "45.639", + "44.067", + "44.416", + "42.973" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.409", + "1.198", + "2.053", + "3.342", + "4.146", + "5.424", + "6.733", + "8.003", + "10.324", + "10.727", + "11.420", + "12.668", + "15.294", + "16.050", + "16.990", + "18.155", + "18.429", + "18.436", + "19.847", + "20.320", + "19.513", + "21.962", + "22.135", + "22.392", + "23.479", + "20.541", + "22.782", + "21.837", + "20.695", + "21.466", + "20.534", + "21.566", + "18.891", + "17.555", + "16.465", + "15.548", + "14.869", + "12.766", + "12.155", + "10.805", + "9.120", + "7.551", + "6.820", + "5.575", + "4.174", + "2.928", + "2.231", + "1.267", + "0.518", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "244.55", + "229.99", + "219.31", + "225.02", + "201.65", + "205.90", + "193.69", + "177.62", + "182.67", + "170.70", + "177.49", + "169.06", + "165.60", + "164.23", + "162.03", + "162.77", + "164.22", + "167.17", + "165.14", + "175.93", + "189.89", + "190.02", + "180.63", + "209.79", + "219.24", + "229.69", + "229.34", + "237.79", + "247.59", + "253.65", + "261.04", + "262.91", + "264.55", + "289.25", + "296.61", + "302.36", + "317.73", + "320.74", + "322.28", + "341.39", + "352.57", + "359.04", + "367.79", + "362.52", + "340.50", + "363.98", + "366.39", + "353.17", + "352.74", + "335.54", + "325.51", + "303.29", + "317.70", + "298.14", + "283.52", + "267.41", + "262.14", + "261.17", + "265.88", + "269.42", + "261.31", + "266.64", + "275.99", + "287.30", + "286.59", + "297.28", + "322.23", + "302.33", + "357.54", + "389.62", + "432.40", + "429.52", + "468.34", + "486.03", + "502.94", + "515.44", + "503.43", + "499.77", + "527.87", + "503.27", + "469.59", + "449.09", + "436.85", + "395.83", + "379.18", + "377.70", + "339.53", + "328.17", + "317.54", + "315.33", + "296.67", + "299.20", + "302.78", + "286.21", + "272.40", + "293.33" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-17", + "weekend": false, + "load_mw": [ + "35.400", + "34.874", + "34.051", + "33.835", + "32.310", + "31.681", + "32.357", + "30.710", + "30.582", + "30.530", + "29.654", + "29.518", + "29.653", + "28.436", + "29.776", + "29.304", + "30.104", + "30.937", + "32.064", + "32.277", + "33.014", + "33.571", + "35.419", + "35.833", + "36.160", + "37.196", + "38.550", + "38.994", + "40.589", + "42.305", + "43.646", + "44.586", + "44.623", + "47.563", + "48.562", + "49.322", + "52.182", + "51.742", + "55.130", + "54.685", + "56.984", + "57.417", + "58.449", + "56.941", + "59.195", + "59.833", + "57.060", + "57.628", + "56.120", + "55.403", + "54.612", + "51.861", + "53.924", + "48.257", + "46.597", + "48.199", + "46.594", + "44.758", + "44.375", + "44.501", + "46.610", + "45.236", + "44.122", + "45.915", + "46.232", + "45.691", + "46.223", + "46.630", + "51.454", + "49.772", + "52.992", + "54.301", + "58.548", + "61.604", + "61.350", + "63.901", + "66.057", + "64.518", + "63.777", + "66.745", + "66.860", + "64.475", + "60.551", + "58.372", + "57.988", + "56.720", + "52.860", + "51.456", + "48.013", + "47.210", + "45.828", + "44.516", + "44.142", + "43.244", + "43.252", + "40.872" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.504", + "1.414", + "2.498", + "3.494", + "5.216", + "6.138", + "7.581", + "9.157", + "10.872", + "12.655", + "14.193", + "14.459", + "16.524", + "16.331", + "17.904", + "20.572", + "19.599", + "20.441", + "24.431", + "23.550", + "24.428", + "23.593", + "24.597", + "26.932", + "24.947", + "25.941", + "25.829", + "25.729", + "25.018", + "25.206", + "24.121", + "23.642", + "22.034", + "20.705", + "19.333", + "17.322", + "17.263", + "16.224", + "14.707", + "12.767", + "10.526", + "8.896", + "7.845", + "6.608", + "4.417", + "3.527", + "2.507", + "1.447", + "0.553", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "245.83", + "227.99", + "222.31", + "202.40", + "218.59", + "207.00", + "190.01", + "188.17", + "180.19", + "182.47", + "172.81", + "171.08", + "173.25", + "161.20", + "160.59", + "161.66", + "174.43", + "167.61", + "180.12", + "182.11", + "193.59", + "191.00", + "199.60", + "201.20", + "216.83", + "236.85", + "229.08", + "243.06", + "251.32", + "244.76", + "261.01", + "275.10", + "275.44", + "289.81", + "297.37", + "314.89", + "316.92", + "330.61", + "335.48", + "334.03", + "356.19", + "356.83", + "357.48", + "355.24", + "360.85", + "347.38", + "335.60", + "360.58", + "334.16", + "328.65", + "325.87", + "294.10", + "295.57", + "298.70", + "286.83", + "279.56", + "263.87", + "269.66", + "262.88", + "259.13", + "287.47", + "262.74", + "261.12", + "255.99", + "279.40", + "311.50", + "299.03", + "332.60", + "366.76", + "377.49", + "394.86", + "456.90", + "453.49", + "480.81", + "523.96", + "509.75", + "520.38", + "524.88", + "513.30", + "518.18", + "475.82", + "463.43", + "456.89", + "401.82", + "403.47", + "377.29", + "336.25", + "335.86", + "297.69", + "301.11", + "292.14", + "297.32", + "292.83", + "296.29", + "288.98", + "281.63" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-18", + "weekend": false, + "load_mw": [ + "37.256", + "34.469", + "34.997", + "35.015", + "33.661", + "32.180", + "32.064", + "30.957", + "29.871", + "30.395", + "29.094", + "29.697", + "29.871", + "28.619", + "29.817", + "30.749", + "30.026", + "31.399", + "31.226", + "31.479", + "34.668", + "33.602", + "35.040", + "35.818", + "38.556", + "38.251", + "39.092", + "39.439", + "40.565", + "42.655", + "43.850", + "43.210", + "45.283", + "46.689", + "47.777", + "49.232", + "51.523", + "53.868", + "54.579", + "55.493", + "58.417", + "57.993", + "59.626", + "59.817", + "58.246", + "58.661", + "59.162", + "58.634", + "57.377", + "54.963", + "55.534", + "53.012", + "50.759", + "50.070", + "50.355", + "48.118", + "45.737", + "44.769", + "46.873", + "43.897", + "42.787", + "44.124", + "42.864", + "44.861", + "45.497", + "46.954", + "46.130", + "49.157", + "49.992", + "51.013", + "54.891", + "56.199", + "57.624", + "60.177", + "61.937", + "64.282", + "64.076", + "66.158", + "66.414", + "66.445", + "68.321", + "64.297", + "62.368", + "59.364", + "60.425", + "57.697", + "55.055", + "50.637", + "49.952", + "47.324", + "46.009", + "45.070", + "45.177", + "41.538", + "42.174", + "41.807" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.538", + "1.417", + "2.919", + "3.709", + "5.178", + "6.503", + "8.201", + "9.756", + "10.573", + "13.078", + "13.834", + "15.501", + "17.341", + "18.072", + "19.497", + "20.518", + "22.763", + "22.993", + "24.467", + "22.339", + "25.233", + "27.515", + "27.732", + "27.389", + "28.602", + "25.764", + "26.064", + "24.805", + "24.029", + "24.877", + "24.161", + "20.905", + "20.672", + "20.390", + "19.249", + "18.403", + "16.881", + "15.529", + "14.978", + "11.890", + "10.672", + "9.056", + "7.797", + "6.278", + "4.897", + "3.395", + "2.329", + "1.478", + "0.568", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "249.34", + "224.13", + "225.76", + "217.60", + "211.70", + "202.20", + "202.66", + "183.65", + "183.52", + "178.78", + "165.81", + "165.93", + "171.37", + "170.17", + "163.43", + "157.93", + "169.74", + "178.55", + "167.43", + "183.16", + "196.53", + "201.00", + "197.83", + "220.47", + "223.37", + "214.51", + "237.23", + "259.97", + "249.76", + "255.41", + "273.73", + "277.56", + "283.52", + "276.21", + "285.16", + "309.30", + "304.95", + "319.77", + "336.09", + "338.39", + "333.60", + "351.49", + "354.23", + "362.47", + "335.74", + "335.87", + "344.75", + "332.84", + "320.48", + "321.17", + "309.39", + "307.76", + "288.60", + "294.29", + "297.32", + "275.52", + "282.93", + "254.65", + "259.06", + "272.24", + "254.68", + "254.43", + "268.51", + "279.75", + "292.90", + "279.74", + "307.60", + "335.29", + "369.05", + "366.24", + "421.29", + "407.47", + "1067.80", + "1154.44", + "1109.22", + "1194.40", + "1168.43", + "1253.34", + "1204.02", + "1140.49", + "1071.48", + "1029.71", + "1018.05", + "959.49", + "901.50", + "853.06", + "807.49", + "751.86", + "307.70", + "293.95", + "301.40", + "282.85", + "283.48", + "286.01", + "299.11", + "270.99" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-19", + "weekend": false, + "load_mw": [ + "36.349", + "35.524", + "35.930", + "34.040", + "34.170", + "33.815", + "31.442", + "31.869", + "30.674", + "31.030", + "29.509", + "29.581", + "30.517", + "29.921", + "29.915", + "31.646", + "30.289", + "30.963", + "33.654", + "33.592", + "33.680", + "34.735", + "36.355", + "37.628", + "39.075", + "38.996", + "39.655", + "41.042", + "42.216", + "44.436", + "43.749", + "45.236", + "47.625", + "49.550", + "48.595", + "51.837", + "50.875", + "53.212", + "57.297", + "59.314", + "60.281", + "59.806", + "60.796", + "59.263", + "60.967", + "58.442", + "59.337", + "56.916", + "59.965", + "57.312", + "55.496", + "52.948", + "53.648", + "53.392", + "51.021", + "48.826", + "47.324", + "46.808", + "46.498", + "47.112", + "44.090", + "44.235", + "46.706", + "46.241", + "44.688", + "47.073", + "46.537", + "49.486", + "51.875", + "51.092", + "54.663", + "59.556", + "59.686", + "59.675", + "63.717", + "64.353", + "67.313", + "68.320", + "67.652", + "66.938", + "69.288", + "65.931", + "63.318", + "65.123", + "59.666", + "58.558", + "54.819", + "52.839", + "50.474", + "47.787", + "45.747", + "45.876", + "45.321", + "43.841", + "44.797", + "42.159" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.506", + "1.391", + "2.700", + "3.847", + "5.167", + "6.323", + "7.570", + "8.380", + "10.450", + "12.968", + "12.835", + "13.922", + "17.073", + "17.856", + "18.354", + "19.969", + "22.576", + "23.782", + "24.315", + "25.089", + "24.181", + "25.603", + "27.398", + "26.934", + "25.479", + "23.958", + "25.869", + "24.290", + "25.657", + "24.959", + "22.228", + "23.788", + "20.124", + "20.401", + "17.445", + "19.094", + "18.757", + "16.104", + "13.189", + "13.363", + "11.541", + "9.230", + "7.143", + "6.087", + "4.982", + "3.533", + "2.563", + "1.486", + "0.548", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "243.47", + "216.30", + "220.78", + "221.01", + "201.58", + "210.63", + "200.39", + "182.86", + "181.49", + "175.33", + "161.31", + "166.21", + "162.47", + "156.27", + "161.99", + "164.93", + "162.33", + "176.04", + "179.15", + "174.77", + "185.52", + "196.48", + "212.01", + "198.90", + "220.54", + "222.66", + "242.91", + "246.99", + "261.10", + "256.36", + "265.26", + "278.38", + "287.46", + "297.79", + "301.13", + "294.88", + "317.15", + "330.87", + "324.18", + "343.42", + "367.13", + "355.13", + "353.18", + "369.27", + "350.27", + "346.69", + "353.50", + "338.99", + "322.41", + "336.66", + "322.83", + "312.96", + "300.29", + "314.64", + "270.82", + "264.07", + "242.42", + "265.90", + "249.94", + "270.13", + "270.31", + "259.68", + "279.92", + "262.97", + "270.79", + "315.29", + "296.28", + "339.94", + "366.14", + "361.78", + "426.81", + "441.44", + "478.73", + "500.08", + "498.27", + "493.95", + "514.00", + "520.99", + "525.07", + "503.31", + "491.35", + "435.02", + "439.22", + "417.82", + "397.48", + "364.41", + "338.80", + "326.91", + "322.87", + "314.33", + "309.53", + "296.02", + "309.94", + "286.78", + "295.53", + "295.47" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-20", + "weekend": false, + "load_mw": [ + "37.118", + "36.506", + "35.435", + "35.604", + "34.758", + "33.299", + "32.882", + "31.493", + "33.008", + "30.998", + "30.823", + "29.911", + "31.419", + "30.611", + "30.756", + "31.407", + "31.483", + "32.357", + "33.268", + "35.315", + "33.363", + "36.078", + "35.646", + "37.968", + "36.715", + "39.290", + "41.204", + "40.866", + "44.123", + "45.128", + "44.435", + "46.927", + "48.576", + "49.209", + "51.135", + "52.333", + "51.258", + "53.302", + "55.984", + "59.643", + "57.149", + "60.182", + "60.372", + "59.163", + "63.171", + "60.350", + "62.910", + "60.018", + "59.696", + "58.506", + "55.579", + "54.273", + "52.903", + "52.652", + "51.223", + "47.775", + "48.950", + "46.024", + "45.763", + "47.043", + "45.080", + "45.499", + "46.608", + "46.614", + "46.673", + "47.409", + "49.540", + "49.767", + "52.338", + "53.164", + "56.043", + "56.784", + "59.578", + "61.161", + "65.062", + "66.596", + "67.694", + "67.503", + "68.756", + "67.673", + "66.123", + "65.309", + "65.969", + "62.593", + "60.209", + "58.911", + "56.917", + "53.460", + "50.882", + "49.248", + "46.424", + "46.948", + "46.521", + "45.944", + "44.931", + "43.324" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.490", + "1.199", + "2.080", + "2.986", + "4.347", + "5.739", + "6.945", + "8.044", + "9.208", + "10.397", + "12.484", + "13.046", + "14.506", + "15.990", + "16.903", + "17.064", + "19.315", + "19.484", + "21.064", + "20.132", + "22.621", + "21.816", + "21.268", + "23.731", + "21.698", + "22.470", + "22.223", + "21.197", + "22.203", + "20.333", + "20.889", + "19.109", + "16.760", + "18.623", + "17.070", + "16.818", + "14.639", + "13.545", + "11.158", + "11.224", + "9.629", + "8.750", + "7.054", + "5.998", + "4.469", + "3.457", + "2.278", + "1.237", + "0.480", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.98", + "233.95", + "235.61", + "213.14", + "206.63", + "199.00", + "206.57", + "174.92", + "180.00", + "170.25", + "166.65", + "159.41", + "158.71", + "159.70", + "164.92", + "164.89", + "158.28", + "171.66", + "167.78", + "183.62", + "178.72", + "198.68", + "196.72", + "206.96", + "204.88", + "226.51", + "237.05", + "249.82", + "261.10", + "260.46", + "250.21", + "276.45", + "308.08", + "288.88", + "292.53", + "321.87", + "319.39", + "302.96", + "329.78", + "327.24", + "339.83", + "357.27", + "359.79", + "350.27", + "378.24", + "348.05", + "370.67", + "355.40", + "330.95", + "335.63", + "315.07", + "301.13", + "294.64", + "306.45", + "280.28", + "286.54", + "278.46", + "251.82", + "268.85", + "269.07", + "249.62", + "280.52", + "282.56", + "293.01", + "291.41", + "296.99", + "312.69", + "359.55", + "352.86", + "373.42", + "395.34", + "420.50", + "448.87", + "491.02", + "507.92", + "523.88", + "546.05", + "514.03", + "525.91", + "511.00", + "471.62", + "467.47", + "460.99", + "404.35", + "381.47", + "355.83", + "358.44", + "337.74", + "305.15", + "295.56", + "294.41", + "293.72", + "283.08", + "291.07", + "291.01", + "285.14" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-21", + "weekend": true, + "load_mw": [ + "30.137", + "30.631", + "29.645", + "29.710", + "28.793", + "26.941", + "27.852", + "26.268", + "26.580", + "26.783", + "26.067", + "26.478", + "26.012", + "25.244", + "26.253", + "26.120", + "26.968", + "27.362", + "28.285", + "28.562", + "29.390", + "30.250", + "30.924", + "31.591", + "31.966", + "32.028", + "32.909", + "34.718", + "35.074", + "37.107", + "36.201", + "39.022", + "40.241", + "41.288", + "40.880", + "43.882", + "45.542", + "46.040", + "47.349", + "48.200", + "48.347", + "51.267", + "50.151", + "49.414", + "53.429", + "50.625", + "50.328", + "51.876", + "49.490", + "49.504", + "48.251", + "46.466", + "44.568", + "44.254", + "42.137", + "42.307", + "40.644", + "39.396", + "39.814", + "38.269", + "38.263", + "37.493", + "37.952", + "38.747", + "39.686", + "40.056", + "40.518", + "41.285", + "43.170", + "45.447", + "47.359", + "49.752", + "51.004", + "52.416", + "55.896", + "56.557", + "57.946", + "57.525", + "58.404", + "57.254", + "55.505", + "54.842", + "53.584", + "53.461", + "51.729", + "47.267", + "46.282", + "45.298", + "43.416", + "42.824", + "39.917", + "38.949", + "40.190", + "37.423", + "37.003", + "36.755" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.442", + "1.082", + "2.060", + "3.018", + "4.084", + "5.443", + "6.820", + "7.906", + "8.590", + "8.526", + "11.510", + "12.532", + "13.354", + "14.142", + "15.400", + "16.910", + "18.660", + "18.154", + "18.381", + "19.552", + "21.081", + "18.800", + "21.475", + "20.547", + "20.789", + "22.333", + "21.316", + "19.595", + "19.906", + "19.145", + "19.333", + "19.055", + "18.393", + "16.370", + "15.952", + "14.420", + "13.883", + "12.495", + "11.305", + "11.291", + "8.072", + "7.046", + "6.276", + "5.084", + "4.283", + "3.020", + "2.206", + "1.141", + "0.424", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "244.91", + "228.34", + "224.53", + "222.22", + "212.89", + "191.34", + "189.76", + "190.17", + "187.63", + "178.87", + "172.60", + "172.19", + "164.57", + "168.81", + "162.78", + "168.39", + "163.17", + "164.59", + "176.31", + "176.50", + "184.30", + "201.08", + "208.77", + "211.90", + "215.51", + "213.08", + "233.28", + "244.55", + "252.22", + "260.73", + "263.06", + "271.37", + "276.02", + "281.80", + "302.04", + "297.92", + "321.29", + "324.03", + "327.27", + "351.73", + "344.41", + "358.69", + "342.68", + "345.36", + "345.23", + "352.32", + "343.10", + "350.42", + "349.91", + "323.50", + "314.26", + "313.50", + "291.28", + "285.51", + "297.47", + "283.90", + "254.45", + "274.66", + "273.42", + "270.06", + "271.26", + "259.86", + "277.07", + "286.55", + "287.02", + "299.62", + "316.71", + "326.92", + "366.21", + "389.19", + "398.98", + "421.11", + "460.22", + "478.91", + "492.14", + "506.88", + "513.68", + "526.85", + "513.36", + "525.66", + "483.70", + "464.04", + "430.01", + "402.41", + "364.56", + "362.72", + "344.63", + "332.88", + "322.27", + "302.94", + "298.86", + "279.68", + "288.52", + "286.70", + "276.17", + "268.74" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-22", + "weekend": true, + "load_mw": [ + "31.493", + "30.580", + "30.753", + "29.486", + "28.510", + "28.763", + "28.495", + "27.258", + "27.760", + "25.288", + "25.928", + "25.605", + "25.897", + "26.661", + "26.020", + "26.663", + "26.594", + "27.182", + "28.908", + "28.482", + "29.110", + "30.144", + "30.869", + "30.890", + "31.506", + "32.231", + "32.762", + "35.325", + "35.506", + "36.640", + "37.985", + "38.853", + "39.243", + "40.389", + "41.870", + "43.851", + "43.718", + "46.381", + "47.898", + "47.563", + "48.597", + "49.121", + "52.850", + "50.733", + "51.952", + "52.378", + "51.647", + "51.323", + "51.057", + "48.161", + "47.017", + "46.145", + "46.146", + "44.336", + "43.138", + "42.198", + "40.799", + "40.490", + "37.732", + "39.184", + "39.710", + "38.271", + "37.899", + "38.088", + "38.821", + "40.289", + "39.824", + "41.841", + "43.408", + "45.113", + "47.545", + "48.946", + "51.971", + "53.748", + "54.608", + "57.005", + "57.585", + "59.654", + "56.338", + "58.042", + "56.931", + "54.933", + "56.623", + "51.797", + "49.230", + "49.444", + "48.202", + "46.481", + "43.996", + "41.489", + "40.778", + "39.672", + "39.215", + "38.082", + "37.599", + "36.656" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.350", + "0.984", + "1.796", + "2.391", + "3.265", + "4.404", + "4.834", + "6.545", + "7.439", + "7.714", + "9.913", + "10.133", + "11.333", + "11.074", + "13.143", + "13.583", + "14.417", + "14.222", + "15.608", + "15.822", + "16.793", + "17.532", + "17.797", + "16.099", + "17.618", + "18.491", + "18.042", + "16.812", + "17.168", + "16.761", + "16.640", + "15.187", + "12.449", + "13.713", + "13.123", + "12.949", + "10.591", + "11.289", + "8.390", + "7.285", + "7.489", + "6.466", + "5.776", + "3.990", + "3.310", + "2.429", + "1.748", + "0.957", + "0.347", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "236.83", + "230.87", + "228.23", + "227.85", + "202.31", + "201.45", + "200.69", + "186.10", + "187.75", + "172.13", + "166.83", + "166.45", + "162.56", + "166.25", + "156.98", + "163.29", + "159.12", + "168.76", + "178.24", + "180.57", + "179.75", + "190.16", + "195.87", + "210.42", + "221.97", + "219.03", + "229.20", + "241.70", + "250.36", + "244.38", + "257.70", + "269.25", + "280.82", + "282.05", + "310.06", + "312.50", + "316.66", + "315.76", + "336.01", + "358.56", + "327.28", + "356.52", + "341.60", + "383.41", + "362.25", + "348.61", + "354.34", + "349.08", + "341.02", + "321.66", + "331.53", + "327.49", + "287.18", + "306.66", + "299.59", + "289.64", + "277.91", + "293.44", + "264.54", + "271.62", + "267.15", + "273.89", + "260.76", + "278.30", + "281.14", + "298.14", + "315.61", + "338.70", + "365.16", + "379.97", + "426.85", + "455.68", + "432.82", + "467.68", + "503.55", + "517.75", + "511.68", + "513.72", + "498.11", + "499.20", + "465.34", + "443.75", + "428.58", + "409.43", + "369.64", + "341.47", + "333.26", + "335.23", + "324.58", + "307.10", + "283.54", + "308.83", + "282.89", + "300.88", + "281.42", + "291.21" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-23", + "weekend": false, + "load_mw": [ + "38.566", + "38.346", + "36.524", + "34.920", + "34.905", + "33.646", + "33.714", + "32.230", + "31.585", + "31.763", + "30.519", + "31.341", + "30.444", + "31.052", + "32.038", + "31.525", + "33.302", + "33.235", + "34.317", + "34.290", + "34.871", + "35.590", + "36.647", + "38.220", + "40.980", + "39.889", + "39.697", + "41.621", + "43.990", + "43.633", + "45.570", + "47.336", + "48.462", + "47.938", + "51.971", + "52.527", + "53.895", + "54.686", + "58.203", + "59.577", + "57.848", + "58.953", + "61.589", + "60.715", + "62.561", + "60.655", + "60.107", + "59.185", + "59.025", + "60.328", + "57.988", + "55.319", + "54.847", + "53.471", + "51.365", + "52.069", + "48.461", + "47.944", + "46.360", + "45.815", + "45.216", + "47.056", + "45.143", + "46.358", + "46.420", + "47.165", + "49.506", + "49.983", + "53.172", + "56.547", + "56.585", + "58.898", + "62.121", + "62.714", + "66.046", + "67.781", + "69.673", + "70.003", + "70.720", + "71.067", + "68.878", + "66.653", + "64.950", + "63.115", + "60.947", + "59.516", + "57.673", + "55.498", + "50.375", + "51.138", + "49.371", + "47.951", + "45.562", + "46.992", + "44.089", + "43.672" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.401", + "1.017", + "1.882", + "2.602", + "3.565", + "5.271", + "6.458", + "7.361", + "8.192", + "8.884", + "11.175", + "12.052", + "12.508", + "13.887", + "15.771", + "16.287", + "16.168", + "16.054", + "19.113", + "18.793", + "18.941", + "20.435", + "18.393", + "20.049", + "20.936", + "18.518", + "18.895", + "19.503", + "17.973", + "18.867", + "18.238", + "18.395", + "16.945", + "16.731", + "14.710", + "14.337", + "13.697", + "12.614", + "11.743", + "9.288", + "7.915", + "7.828", + "6.482", + "5.035", + "3.826", + "2.699", + "2.093", + "1.268", + "0.415", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "220.55", + "230.54", + "226.45", + "219.70", + "194.49", + "201.60", + "186.17", + "187.51", + "172.11", + "167.03", + "172.60", + "166.32", + "154.66", + "165.06", + "168.09", + "157.55", + "152.38", + "171.47", + "169.37", + "173.17", + "172.02", + "190.80", + "196.52", + "201.91", + "224.61", + "224.70", + "228.30", + "244.68", + "245.86", + "253.82", + "263.00", + "276.82", + "290.67", + "286.81", + "287.16", + "302.62", + "309.11", + "316.16", + "352.13", + "354.51", + "337.13", + "360.38", + "366.39", + "365.91", + "371.34", + "357.19", + "355.53", + "346.50", + "341.65", + "336.17", + "338.09", + "333.73", + "303.90", + "298.02", + "288.26", + "296.60", + "276.49", + "265.48", + "265.56", + "262.87", + "260.47", + "287.62", + "256.68", + "283.05", + "296.31", + "307.65", + "319.34", + "328.46", + "356.63", + "348.94", + "411.49", + "443.13", + "459.45", + "500.60", + "500.43", + "533.88", + "562.21", + "509.99", + "530.14", + "497.76", + "478.08", + "455.30", + "429.61", + "413.37", + "392.22", + "346.42", + "346.97", + "343.29", + "316.20", + "295.67", + "302.70", + "313.41", + "286.61", + "286.75", + "277.79", + "295.89" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-24", + "weekend": false, + "load_mw": [ + "37.150", + "36.114", + "35.864", + "34.621", + "32.870", + "32.928", + "32.547", + "32.475", + "31.488", + "30.713", + "30.517", + "30.889", + "30.798", + "30.168", + "31.372", + "30.345", + "32.044", + "33.004", + "33.094", + "32.865", + "34.303", + "35.243", + "36.330", + "37.868", + "38.097", + "39.047", + "39.571", + "41.618", + "42.154", + "43.543", + "44.953", + "44.651", + "49.089", + "47.129", + "49.955", + "52.610", + "53.899", + "54.326", + "57.611", + "55.545", + "61.435", + "59.134", + "60.804", + "62.129", + "59.780", + "62.844", + "62.265", + "59.625", + "59.216", + "57.408", + "56.355", + "53.763", + "53.474", + "52.245", + "50.710", + "48.485", + "48.845", + "46.776", + "46.149", + "46.679", + "45.279", + "45.086", + "44.771", + "44.316", + "46.508", + "46.462", + "49.539", + "49.552", + "51.259", + "53.546", + "53.853", + "56.953", + "60.364", + "62.897", + "63.024", + "65.772", + "68.416", + "69.771", + "68.816", + "68.046", + "70.405", + "64.403", + "63.738", + "62.603", + "61.619", + "58.683", + "56.342", + "52.599", + "51.647", + "49.512", + "48.526", + "44.683", + "44.603", + "43.102", + "42.872", + "44.148" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.431", + "1.269", + "2.238", + "3.361", + "3.978", + "5.653", + "6.808", + "8.500", + "9.700", + "11.892", + "11.662", + "13.269", + "15.761", + "17.076", + "17.476", + "17.696", + "20.042", + "18.767", + "21.311", + "22.348", + "23.026", + "22.526", + "24.033", + "23.165", + "22.035", + "22.494", + "22.893", + "23.825", + "21.274", + "21.021", + "21.860", + "21.784", + "19.749", + "17.910", + "18.012", + "15.974", + "14.806", + "14.776", + "13.075", + "10.944", + "9.764", + "8.380", + "7.451", + "5.647", + "4.399", + "3.199", + "2.228", + "1.298", + "0.490", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "248.44", + "224.76", + "226.45", + "211.85", + "201.45", + "198.01", + "201.31", + "177.45", + "180.13", + "173.79", + "174.75", + "171.31", + "156.77", + "153.14", + "168.42", + "167.61", + "162.27", + "163.46", + "171.56", + "188.69", + "177.04", + "187.49", + "191.13", + "213.47", + "216.14", + "230.60", + "235.83", + "240.99", + "249.81", + "253.91", + "257.74", + "268.86", + "285.44", + "296.97", + "287.48", + "319.69", + "314.35", + "309.45", + "317.33", + "316.09", + "332.78", + "352.48", + "370.07", + "381.42", + "355.03", + "374.45", + "351.16", + "344.48", + "341.66", + "332.42", + "323.49", + "324.35", + "325.59", + "293.82", + "286.57", + "280.20", + "273.93", + "268.82", + "268.96", + "270.55", + "272.75", + "270.09", + "257.80", + "285.47", + "298.27", + "308.47", + "340.05", + "332.16", + "360.82", + "392.96", + "409.70", + "439.61", + "451.90", + "493.68", + "506.43", + "501.08", + "513.24", + "513.48", + "530.94", + "485.79", + "494.51", + "455.97", + "448.74", + "432.90", + "390.57", + "367.65", + "359.77", + "325.53", + "313.07", + "305.18", + "304.23", + "277.07", + "297.95", + "290.82", + "288.19", + "287.55" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-25", + "weekend": false, + "load_mw": [ + "38.824", + "37.374", + "37.306", + "35.793", + "35.149", + "35.140", + "34.612", + "33.926", + "32.944", + "31.905", + "30.085", + "30.522", + "31.722", + "32.143", + "31.203", + "32.781", + "31.839", + "32.917", + "34.146", + "33.586", + "34.899", + "36.448", + "37.404", + "37.802", + "39.554", + "40.555", + "40.718", + "42.643", + "42.666", + "43.772", + "45.681", + "46.556", + "48.046", + "50.114", + "50.501", + "53.457", + "54.923", + "57.357", + "58.123", + "59.355", + "60.823", + "61.761", + "63.017", + "61.664", + "63.109", + "62.989", + "58.885", + "60.387", + "58.053", + "58.042", + "58.481", + "54.934", + "55.560", + "52.145", + "52.873", + "50.389", + "49.185", + "48.238", + "47.601", + "46.736", + "46.816", + "46.580", + "44.733", + "46.845", + "47.067", + "48.289", + "48.724", + "51.025", + "52.163", + "54.690", + "58.722", + "59.371", + "62.708", + "60.960", + "67.768", + "67.595", + "70.075", + "71.069", + "70.434", + "71.424", + "67.065", + "67.067", + "66.086", + "64.616", + "61.739", + "61.670", + "56.526", + "53.097", + "52.318", + "49.028", + "46.463", + "46.367", + "47.056", + "47.211", + "44.615", + "42.459" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.522", + "1.419", + "2.445", + "4.007", + "4.394", + "5.673", + "6.990", + "8.923", + "9.294", + "11.469", + "13.496", + "13.363", + "16.686", + "16.260", + "18.413", + "20.384", + "20.054", + "21.758", + "21.375", + "22.817", + "22.086", + "21.286", + "23.250", + "25.346", + "24.165", + "24.249", + "23.557", + "23.053", + "22.473", + "23.543", + "23.418", + "21.473", + "21.039", + "17.410", + "19.052", + "17.707", + "16.880", + "13.982", + "12.714", + "12.330", + "9.990", + "9.093", + "6.799", + "6.341", + "4.524", + "3.547", + "2.257", + "1.339", + "0.546", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "243.78", + "219.58", + "217.60", + "216.21", + "214.53", + "210.23", + "194.23", + "183.57", + "174.54", + "174.47", + "168.95", + "171.58", + "165.80", + "163.74", + "163.09", + "162.52", + "171.15", + "167.58", + "177.39", + "181.48", + "190.26", + "189.28", + "203.12", + "203.89", + "230.50", + "214.70", + "233.49", + "236.21", + "247.06", + "273.18", + "269.43", + "266.65", + "269.40", + "283.56", + "287.17", + "309.61", + "305.91", + "330.47", + "346.91", + "319.80", + "346.01", + "363.18", + "344.27", + "364.20", + "346.50", + "372.41", + "327.10", + "364.21", + "336.58", + "322.95", + "319.90", + "295.59", + "299.27", + "299.73", + "270.62", + "270.64", + "279.57", + "273.34", + "269.85", + "251.49", + "259.67", + "261.90", + "269.73", + "281.96", + "282.26", + "296.75", + "311.21", + "326.23", + "346.65", + "373.16", + "402.09", + "434.44", + "462.39", + "467.38", + "507.76", + "524.40", + "530.38", + "522.67", + "513.46", + "505.11", + "484.59", + "445.69", + "464.24", + "407.10", + "396.30", + "377.54", + "365.11", + "333.60", + "333.07", + "320.61", + "287.00", + "285.22", + "306.54", + "281.14", + "301.28", + "286.61" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-26", + "weekend": false, + "load_mw": [ + "40.375", + "40.357", + "38.464", + "37.909", + "38.281", + "35.716", + "34.116", + "34.129", + "35.215", + "33.085", + "32.367", + "32.125", + "33.105", + "33.222", + "31.720", + "33.164", + "34.311", + "33.010", + "36.219", + "34.853", + "37.504", + "40.214", + "38.098", + "39.198", + "39.997", + "41.786", + "42.055", + "44.341", + "44.872", + "46.360", + "46.682", + "48.197", + "50.713", + "52.803", + "54.730", + "54.958", + "57.143", + "58.964", + "60.421", + "60.586", + "62.902", + "62.938", + "64.201", + "63.701", + "66.021", + "66.379", + "67.134", + "61.784", + "62.473", + "61.524", + "62.468", + "59.286", + "54.950", + "55.971", + "55.189", + "52.478", + "52.705", + "49.968", + "52.088", + "49.157", + "48.611", + "49.313", + "48.269", + "47.940", + "48.881", + "48.017", + "51.583", + "52.603", + "54.607", + "58.417", + "58.628", + "61.170", + "64.032", + "67.300", + "68.701", + "70.152", + "75.432", + "73.814", + "74.055", + "73.788", + "74.532", + "69.627", + "68.739", + "67.190", + "65.671", + "61.667", + "61.436", + "57.173", + "54.924", + "54.294", + "52.430", + "49.738", + "48.813", + "47.820", + "46.395", + "47.107" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.557", + "1.414", + "2.647", + "3.379", + "5.303", + "6.653", + "7.648", + "9.678", + "10.106", + "11.588", + "13.997", + "14.775", + "17.730", + "18.213", + "19.847", + "21.095", + "23.386", + "23.282", + "24.372", + "24.159", + "26.814", + "25.487", + "26.153", + "23.431", + "25.390", + "27.491", + "23.532", + "24.702", + "25.450", + "23.653", + "25.337", + "22.576", + "21.802", + "20.527", + "20.424", + "17.692", + "16.497", + "14.785", + "14.110", + "12.520", + "11.665", + "10.039", + "7.879", + "7.010", + "4.788", + "3.384", + "2.373", + "1.397", + "0.542", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "245.50", + "225.80", + "231.15", + "216.58", + "208.04", + "205.47", + "192.05", + "190.88", + "185.60", + "169.18", + "170.61", + "162.93", + "149.64", + "166.19", + "158.10", + "160.31", + "170.91", + "172.29", + "168.88", + "190.11", + "190.66", + "203.01", + "191.44", + "226.60", + "221.58", + "217.42", + "238.06", + "244.18", + "260.77", + "257.91", + "254.96", + "263.96", + "268.00", + "292.06", + "306.75", + "310.32", + "307.67", + "327.66", + "354.11", + "309.50", + "342.32", + "356.47", + "354.05", + "354.88", + "338.23", + "368.40", + "365.38", + "337.82", + "337.13", + "339.37", + "315.68", + "304.10", + "312.17", + "294.00", + "284.97", + "273.09", + "270.67", + "257.57", + "268.33", + "252.22", + "271.68", + "260.37", + "273.84", + "265.80", + "270.56", + "296.39", + "315.54", + "334.32", + "358.68", + "398.34", + "408.95", + "446.35", + "470.99", + "480.90", + "519.76", + "538.03", + "514.48", + "552.80", + "542.98", + "474.20", + "477.94", + "455.07", + "417.38", + "418.34", + "402.28", + "339.85", + "355.09", + "321.67", + "327.02", + "320.09", + "300.45", + "302.64", + "292.60", + "289.92", + "278.94", + "283.99" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-27", + "weekend": false, + "load_mw": [ + "38.813", + "38.773", + "36.828", + "37.105", + "35.719", + "35.140", + "34.170", + "33.364", + "32.316", + "32.409", + "31.398", + "31.573", + "30.730", + "31.846", + "32.284", + "32.184", + "32.306", + "32.251", + "34.084", + "35.278", + "35.486", + "36.225", + "37.255", + "40.101", + "41.336", + "39.889", + "41.412", + "42.648", + "44.477", + "44.375", + "46.724", + "47.275", + "49.735", + "51.762", + "53.526", + "52.535", + "57.932", + "56.355", + "59.175", + "60.612", + "61.150", + "62.242", + "60.595", + "64.479", + "64.229", + "63.880", + "61.938", + "62.298", + "63.791", + "60.488", + "57.823", + "54.716", + "54.518", + "53.676", + "53.499", + "50.732", + "50.262", + "49.708", + "49.381", + "50.024", + "48.654", + "45.639", + "47.677", + "45.808", + "47.974", + "49.199", + "51.161", + "52.059", + "53.933", + "55.602", + "58.450", + "61.155", + "63.202", + "65.228", + "67.335", + "69.795", + "69.956", + "71.141", + "72.235", + "70.282", + "69.890", + "66.697", + "67.450", + "65.393", + "63.376", + "61.349", + "59.174", + "54.297", + "52.575", + "51.896", + "48.916", + "49.606", + "47.549", + "45.249", + "44.969", + "45.456" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.518", + "1.467", + "2.504", + "3.810", + "4.943", + "6.533", + "8.130", + "8.967", + "11.955", + "11.164", + "13.720", + "14.722", + "16.187", + "18.719", + "17.798", + "17.933", + "19.802", + "20.326", + "22.357", + "22.360", + "25.077", + "28.224", + "29.242", + "23.229", + "26.153", + "25.489", + "25.731", + "26.353", + "25.070", + "24.259", + "23.039", + "21.568", + "21.491", + "18.991", + "19.193", + "17.519", + "16.259", + "14.703", + "13.728", + "10.875", + "10.494", + "9.182", + "8.150", + "5.894", + "4.855", + "3.598", + "2.570", + "1.286", + "0.531", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "244.97", + "237.05", + "219.90", + "218.18", + "207.99", + "194.82", + "203.49", + "176.74", + "176.21", + "166.72", + "153.24", + "167.24", + "160.87", + "151.12", + "169.84", + "162.20", + "157.75", + "160.16", + "172.98", + "187.85", + "184.34", + "191.78", + "195.73", + "204.26", + "216.56", + "222.94", + "233.62", + "236.32", + "248.49", + "244.30", + "256.85", + "285.84", + "276.86", + "305.29", + "311.04", + "292.86", + "333.53", + "323.26", + "347.65", + "336.10", + "344.24", + "347.42", + "353.72", + "362.52", + "345.90", + "359.09", + "337.25", + "334.93", + "330.88", + "306.53", + "331.88", + "297.89", + "295.69", + "287.68", + "282.03", + "275.22", + "258.58", + "272.20", + "279.33", + "270.04", + "273.75", + "259.53", + "274.05", + "269.42", + "278.47", + "304.65", + "331.26", + "320.43", + "361.99", + "382.24", + "410.08", + "433.45", + "460.80", + "499.57", + "514.99", + "539.84", + "518.95", + "506.39", + "536.74", + "498.89", + "472.57", + "471.84", + "457.21", + "416.69", + "405.42", + "373.61", + "346.32", + "333.63", + "323.21", + "317.47", + "311.41", + "287.78", + "281.13", + "285.53", + "275.82", + "286.79" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-28", + "weekend": true, + "load_mw": [ + "35.758", + "33.743", + "33.748", + "32.742", + "31.866", + "30.900", + "30.762", + "28.629", + "30.533", + "28.542", + "27.819", + "28.238", + "27.116", + "27.597", + "28.205", + "28.747", + "29.626", + "29.308", + "30.446", + "32.464", + "31.998", + "32.936", + "33.531", + "36.416", + "34.586", + "35.062", + "38.607", + "38.667", + "39.728", + "39.328", + "40.005", + "43.555", + "44.609", + "43.967", + "46.474", + "46.288", + "49.929", + "49.374", + "52.196", + "52.084", + "54.152", + "55.214", + "57.016", + "56.047", + "56.583", + "56.772", + "55.651", + "54.241", + "52.670", + "55.666", + "53.933", + "49.946", + "50.766", + "48.842", + "46.343", + "45.010", + "45.800", + "45.125", + "43.698", + "44.016", + "40.804", + "42.557", + "42.019", + "40.471", + "43.282", + "44.197", + "45.273", + "47.013", + "48.460", + "48.805", + "48.944", + "53.860", + "56.228", + "55.747", + "60.398", + "61.229", + "61.267", + "64.393", + "64.600", + "63.604", + "63.994", + "61.297", + "59.376", + "57.451", + "54.515", + "55.832", + "51.705", + "50.861", + "47.610", + "44.745", + "43.680", + "44.152", + "41.235", + "40.556", + "41.314", + "40.734" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.449", + "1.175", + "2.215", + "2.855", + "4.208", + "5.631", + "6.459", + "8.141", + "7.871", + "10.146", + "12.421", + "12.234", + "12.445", + "14.946", + "16.141", + "14.487", + "18.378", + "19.552", + "19.836", + "19.175", + "20.360", + "21.259", + "19.987", + "23.607", + "21.994", + "19.887", + "21.518", + "22.901", + "19.913", + "20.313", + "19.161", + "18.984", + "18.888", + "17.027", + "16.689", + "15.164", + "13.645", + "12.319", + "11.509", + "9.996", + "9.104", + "8.183", + "6.511", + "5.027", + "3.993", + "3.144", + "2.083", + "1.133", + "0.419", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "250.64", + "231.17", + "222.60", + "209.65", + "210.31", + "198.27", + "182.85", + "185.12", + "175.69", + "183.07", + "171.29", + "164.16", + "159.06", + "158.04", + "172.96", + "165.92", + "176.23", + "171.44", + "169.73", + "187.97", + "184.26", + "195.88", + "202.88", + "202.84", + "224.41", + "217.05", + "238.12", + "238.56", + "250.77", + "253.04", + "255.66", + "277.36", + "271.94", + "303.90", + "306.74", + "282.60", + "314.58", + "308.30", + "332.22", + "338.52", + "312.86", + "349.72", + "348.45", + "375.55", + "374.96", + "347.19", + "357.21", + "333.52", + "340.31", + "331.53", + "335.05", + "315.98", + "289.99", + "308.23", + "282.76", + "280.93", + "276.24", + "273.51", + "261.26", + "272.09", + "259.75", + "268.53", + "279.52", + "281.45", + "281.15", + "294.48", + "305.21", + "341.39", + "360.68", + "376.56", + "406.61", + "455.14", + "452.19", + "477.12", + "515.14", + "513.42", + "527.46", + "518.23", + "509.16", + "528.69", + "465.20", + "493.99", + "428.71", + "413.27", + "385.89", + "387.39", + "330.79", + "335.57", + "313.57", + "309.77", + "301.30", + "287.90", + "292.17", + "281.89", + "267.23", + "290.20" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-29", + "weekend": true, + "load_mw": [ + "33.223", + "32.418", + "31.253", + "30.657", + "30.601", + "30.525", + "29.454", + "28.097", + "27.746", + "26.585", + "27.601", + "27.134", + "26.934", + "27.453", + "28.726", + "28.594", + "29.181", + "28.572", + "28.606", + "29.882", + "30.297", + "31.655", + "31.671", + "33.268", + "34.916", + "35.911", + "35.867", + "35.849", + "37.863", + "39.243", + "40.721", + "39.498", + "43.563", + "42.989", + "45.400", + "44.956", + "47.900", + "47.329", + "50.125", + "51.185", + "52.930", + "52.239", + "54.068", + "55.823", + "55.926", + "55.531", + "52.888", + "53.295", + "53.441", + "50.183", + "49.918", + "49.018", + "46.760", + "46.262", + "47.138", + "43.961", + "43.225", + "41.449", + "40.444", + "41.092", + "40.679", + "40.043", + "39.316", + "40.290", + "42.723", + "42.345", + "42.871", + "44.109", + "45.493", + "47.581", + "49.319", + "52.191", + "53.481", + "54.846", + "56.761", + "60.707", + "60.610", + "60.608", + "61.879", + "62.871", + "61.402", + "56.698", + "58.216", + "56.950", + "52.834", + "50.845", + "50.473", + "49.272", + "45.493", + "42.941", + "43.179", + "42.304", + "39.401", + "38.921", + "39.330", + "39.233" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.456", + "1.219", + "2.183", + "3.344", + "4.261", + "6.047", + "7.447", + "7.716", + "9.607", + "10.087", + "12.161", + "13.547", + "14.206", + "16.943", + "17.009", + "16.595", + "18.990", + "20.484", + "19.840", + "21.243", + "20.733", + "22.138", + "21.758", + "22.783", + "21.313", + "21.197", + "23.717", + "20.898", + "20.005", + "21.076", + "18.996", + "22.333", + "19.676", + "17.675", + "15.592", + "14.215", + "15.991", + "13.727", + "11.438", + "9.852", + "9.372", + "7.980", + "6.841", + "5.258", + "4.276", + "3.303", + "2.249", + "1.241", + "0.486", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "254.33", + "230.40", + "214.67", + "211.41", + "203.60", + "196.59", + "191.65", + "189.18", + "181.80", + "177.97", + "175.48", + "160.30", + "180.51", + "163.01", + "165.35", + "161.80", + "170.33", + "171.70", + "175.66", + "172.24", + "183.01", + "202.86", + "210.87", + "204.55", + "222.57", + "224.31", + "233.42", + "243.48", + "227.32", + "261.35", + "272.29", + "258.41", + "282.71", + "281.35", + "303.11", + "313.61", + "329.33", + "332.56", + "330.04", + "350.88", + "351.63", + "355.01", + "376.04", + "350.84", + "355.42", + "365.34", + "328.53", + "347.56", + "332.75", + "319.15", + "322.50", + "309.12", + "295.02", + "282.01", + "288.17", + "266.54", + "279.48", + "277.41", + "268.61", + "274.23", + "287.20", + "282.36", + "268.28", + "270.59", + "303.41", + "304.59", + "326.42", + "340.69", + "359.16", + "372.63", + "381.09", + "433.99", + "482.95", + "479.99", + "494.67", + "532.96", + "535.20", + "505.85", + "511.70", + "522.25", + "490.06", + "461.47", + "443.65", + "390.28", + "364.42", + "350.89", + "320.58", + "336.03", + "323.69", + "314.45", + "314.42", + "299.82", + "285.05", + "288.19", + "297.57", + "299.82" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-30", + "weekend": false, + "load_mw": [ + "39.717", + "37.944", + "37.677", + "37.866", + "37.001", + "34.800", + "34.054", + "32.659", + "31.989", + "34.063", + "32.363", + "32.558", + "31.648", + "31.073", + "31.672", + "33.748", + "32.338", + "34.361", + "34.732", + "36.093", + "34.944", + "37.261", + "39.069", + "39.363", + "41.208", + "41.064", + "42.861", + "44.555", + "43.092", + "45.526", + "46.784", + "49.508", + "49.283", + "52.026", + "51.717", + "53.782", + "56.552", + "58.253", + "61.066", + "59.987", + "61.869", + "64.425", + "66.480", + "63.600", + "63.310", + "64.621", + "63.179", + "62.882", + "58.460", + "61.514", + "57.683", + "58.650", + "58.193", + "56.346", + "53.616", + "51.007", + "51.322", + "49.596", + "49.576", + "49.215", + "49.886", + "46.368", + "46.486", + "49.150", + "50.642", + "51.240", + "49.830", + "52.306", + "52.330", + "55.867", + "60.105", + "62.111", + "65.071", + "65.702", + "68.803", + "69.326", + "69.795", + "73.642", + "72.260", + "70.936", + "71.057", + "69.255", + "66.169", + "67.569", + "63.692", + "61.452", + "58.507", + "57.098", + "53.956", + "50.673", + "49.782", + "50.992", + "46.961", + "48.025", + "47.109", + "45.824" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.424", + "1.090", + "2.004", + "2.887", + "4.202", + "4.926", + "6.518", + "8.081", + "8.280", + "9.679", + "10.930", + "12.531", + "13.123", + "15.691", + "14.896", + "15.627", + "19.243", + "19.094", + "18.765", + "19.047", + "19.896", + "21.223", + "19.240", + "21.771", + "20.847", + "21.035", + "22.194", + "20.926", + "19.458", + "18.252", + "17.866", + "19.000", + "17.434", + "16.723", + "14.921", + "14.419", + "12.721", + "13.425", + "10.210", + "9.044", + "8.331", + "7.044", + "6.559", + "4.708", + "4.029", + "3.089", + "2.028", + "1.048", + "0.419", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "234.58", + "225.70", + "211.75", + "209.21", + "210.22", + "200.81", + "186.61", + "176.34", + "180.96", + "173.06", + "158.37", + "163.26", + "154.78", + "157.32", + "154.85", + "157.19", + "157.19", + "161.76", + "166.62", + "172.98", + "187.35", + "198.50", + "196.01", + "226.57", + "210.27", + "237.74", + "236.11", + "239.96", + "250.67", + "259.79", + "251.65", + "273.47", + "259.00", + "293.09", + "290.32", + "309.51", + "316.47", + "335.03", + "336.09", + "371.04", + "350.58", + "349.61", + "360.52", + "348.41", + "369.71", + "380.83", + "352.66", + "359.95", + "325.42", + "357.00", + "307.25", + "312.67", + "307.48", + "303.21", + "288.83", + "280.82", + "278.28", + "268.88", + "265.89", + "265.40", + "292.74", + "263.83", + "273.76", + "289.98", + "306.43", + "313.30", + "298.92", + "324.33", + "345.27", + "366.50", + "411.61", + "463.87", + "944.15", + "1015.72", + "1003.51", + "1039.60", + "1031.34", + "1019.65", + "1048.43", + "1001.36", + "981.37", + "936.12", + "849.87", + "811.33", + "793.48", + "686.91", + "694.96", + "665.01", + "305.10", + "309.09", + "294.04", + "277.06", + "296.62", + "286.66", + "281.04", + "280.10" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-03-31", + "weekend": false, + "load_mw": [ + "39.422", + "37.157", + "37.165", + "37.026", + "36.115", + "34.403", + "34.432", + "33.338", + "34.047", + "31.082", + "32.798", + "31.964", + "30.909", + "31.521", + "32.454", + "31.906", + "33.490", + "34.151", + "34.394", + "35.224", + "35.221", + "36.350", + "37.613", + "38.583", + "39.965", + "39.975", + "43.056", + "42.421", + "45.234", + "45.361", + "47.626", + "47.724", + "50.512", + "53.372", + "53.440", + "53.684", + "54.457", + "58.365", + "59.957", + "58.386", + "61.904", + "63.891", + "63.184", + "64.135", + "63.958", + "63.428", + "62.366", + "58.959", + "59.779", + "61.803", + "59.306", + "57.237", + "56.242", + "54.482", + "53.869", + "50.705", + "50.486", + "50.865", + "47.236", + "47.783", + "46.463", + "46.752", + "48.747", + "49.112", + "50.018", + "49.715", + "51.196", + "51.907", + "53.982", + "57.423", + "56.849", + "61.096", + "65.243", + "63.794", + "68.379", + "68.270", + "73.346", + "68.426", + "72.896", + "72.606", + "69.291", + "69.337", + "66.045", + "65.160", + "61.860", + "57.833", + "59.226", + "56.027", + "54.241", + "52.759", + "50.785", + "48.730", + "48.233", + "47.472", + "45.306", + "45.890" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.379", + "1.058", + "1.957", + "2.631", + "3.654", + "4.701", + "5.976", + "7.306", + "7.782", + "8.504", + "11.269", + "11.378", + "14.071", + "13.423", + "13.469", + "14.499", + "16.104", + "16.151", + "15.884", + "17.103", + "17.817", + "18.109", + "18.979", + "18.026", + "18.060", + "20.188", + "17.785", + "18.499", + "20.142", + "20.319", + "17.880", + "14.992", + "14.493", + "15.269", + "15.204", + "13.426", + "12.895", + "10.599", + "9.153", + "9.855", + "7.702", + "6.924", + "5.944", + "4.638", + "3.637", + "2.595", + "1.847", + "1.065", + "0.394", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.66", + "232.28", + "220.96", + "218.57", + "208.06", + "201.49", + "194.73", + "188.88", + "170.25", + "176.02", + "170.73", + "158.69", + "149.50", + "162.00", + "161.67", + "156.70", + "161.09", + "161.99", + "168.25", + "175.92", + "186.69", + "185.99", + "201.33", + "206.10", + "204.15", + "217.32", + "237.82", + "231.91", + "241.37", + "254.10", + "270.08", + "273.14", + "277.15", + "284.01", + "311.59", + "298.63", + "313.23", + "322.45", + "339.15", + "351.81", + "341.00", + "357.28", + "357.64", + "355.79", + "368.59", + "364.52", + "359.21", + "335.70", + "339.51", + "339.90", + "319.87", + "307.74", + "306.89", + "299.24", + "301.08", + "282.77", + "289.82", + "280.73", + "275.06", + "269.09", + "280.39", + "262.71", + "274.49", + "272.50", + "281.13", + "319.97", + "323.01", + "342.97", + "338.81", + "366.10", + "398.11", + "452.23", + "473.58", + "481.98", + "492.10", + "485.56", + "538.02", + "522.88", + "524.71", + "479.54", + "486.41", + "431.02", + "422.69", + "397.87", + "368.78", + "348.34", + "347.96", + "345.92", + "315.30", + "315.85", + "290.73", + "309.37", + "282.00", + "273.42", + "282.47", + "289.87" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-01", + "weekend": false, + "load_mw": [ + "37.734", + "37.792", + "35.508", + "36.126", + "34.497", + "33.353", + "33.784", + "31.462", + "32.531", + "30.537", + "31.303", + "31.164", + "31.847", + "31.352", + "30.771", + "31.790", + "33.260", + "33.213", + "33.917", + "34.427", + "35.196", + "35.997", + "36.845", + "38.093", + "38.746", + "40.275", + "40.135", + "43.531", + "42.845", + "44.795", + "44.472", + "46.832", + "48.596", + "49.819", + "51.130", + "52.450", + "56.306", + "55.334", + "57.915", + "57.752", + "58.554", + "60.403", + "62.268", + "61.481", + "63.342", + "60.347", + "61.184", + "60.395", + "62.972", + "59.417", + "59.422", + "57.496", + "51.382", + "53.153", + "53.387", + "50.297", + "49.951", + "48.600", + "45.713", + "46.695", + "45.418", + "45.064", + "46.519", + "46.431", + "46.696", + "49.158", + "48.898", + "51.260", + "51.430", + "54.527", + "56.584", + "57.619", + "61.285", + "64.024", + "66.382", + "68.306", + "71.433", + "69.590", + "71.528", + "71.056", + "69.809", + "65.314", + "63.749", + "64.847", + "63.964", + "57.886", + "57.638", + "54.379", + "52.465", + "50.257", + "47.345", + "46.268", + "46.756", + "46.900", + "45.573", + "44.593" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.397", + "1.056", + "1.815", + "3.015", + "3.931", + "4.615", + "5.454", + "6.258", + "8.573", + "9.064", + "9.679", + "11.002", + "11.751", + "12.508", + "14.374", + "15.495", + "16.462", + "16.323", + "16.732", + "18.132", + "17.952", + "19.137", + "19.437", + "18.913", + "21.088", + "19.818", + "19.879", + "19.431", + "18.658", + "19.847", + "16.774", + "17.257", + "15.869", + "14.681", + "14.694", + "13.138", + "13.440", + "11.114", + "9.899", + "8.188", + "8.672", + "7.145", + "6.262", + "4.641", + "3.869", + "2.563", + "1.599", + "1.063", + "0.398", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "238.82", + "239.74", + "216.24", + "223.76", + "210.80", + "197.62", + "184.29", + "182.62", + "170.68", + "164.98", + "168.20", + "161.91", + "168.51", + "151.53", + "160.94", + "159.37", + "152.84", + "161.58", + "166.38", + "171.03", + "191.78", + "194.03", + "201.82", + "200.29", + "206.21", + "223.71", + "239.10", + "232.35", + "254.64", + "254.40", + "258.47", + "269.63", + "286.22", + "295.12", + "290.94", + "312.24", + "300.75", + "330.09", + "334.73", + "356.68", + "363.75", + "346.76", + "358.34", + "377.93", + "370.02", + "364.33", + "361.83", + "362.37", + "347.27", + "338.07", + "325.83", + "314.52", + "287.63", + "294.52", + "307.93", + "272.39", + "274.75", + "271.93", + "255.11", + "270.83", + "276.52", + "264.65", + "290.35", + "273.19", + "283.24", + "298.59", + "318.53", + "329.77", + "355.14", + "382.82", + "397.63", + "431.85", + "468.71", + "498.87", + "520.28", + "504.88", + "558.02", + "521.34", + "517.72", + "528.77", + "464.12", + "464.05", + "423.23", + "387.17", + "385.52", + "362.15", + "348.01", + "346.96", + "319.54", + "312.53", + "287.07", + "298.25", + "297.37", + "295.96", + "292.35", + "274.50" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-02", + "weekend": false, + "load_mw": [ + "35.895", + "35.206", + "34.484", + "34.221", + "33.026", + "32.623", + "32.068", + "31.136", + "31.115", + "31.030", + "29.120", + "29.478", + "30.147", + "29.953", + "29.731", + "30.280", + "31.717", + "30.154", + "31.866", + "32.846", + "34.094", + "34.796", + "35.127", + "35.133", + "37.849", + "38.184", + "38.479", + "39.937", + "39.530", + "43.695", + "42.365", + "45.226", + "44.507", + "46.630", + "47.405", + "50.302", + "52.356", + "55.062", + "56.191", + "56.641", + "57.631", + "59.542", + "59.288", + "59.728", + "58.702", + "60.396", + "60.261", + "56.193", + "59.315", + "55.764", + "54.721", + "53.397", + "50.437", + "50.064", + "47.698", + "47.897", + "46.831", + "47.409", + "45.038", + "45.054", + "42.410", + "43.775", + "44.620", + "42.467", + "45.122", + "46.166", + "48.222", + "49.180", + "50.158", + "53.968", + "55.390", + "55.632", + "57.903", + "61.417", + "61.242", + "64.813", + "64.587", + "67.781", + "63.099", + "66.644", + "63.470", + "66.545", + "62.188", + "62.048", + "58.164", + "54.853", + "54.712", + "51.383", + "47.070", + "47.388", + "46.793", + "46.659", + "45.420", + "42.480", + "42.075", + "42.465" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.425", + "0.939", + "1.932", + "2.825", + "3.477", + "4.359", + "5.706", + "6.684", + "7.720", + "8.899", + "9.792", + "10.447", + "13.786", + "13.358", + "13.526", + "15.400", + "13.004", + "16.508", + "17.137", + "17.696", + "18.827", + "19.322", + "19.273", + "19.137", + "18.590", + "19.927", + "19.088", + "20.088", + "16.844", + "18.639", + "16.771", + "15.295", + "15.364", + "14.292", + "14.537", + "14.553", + "12.795", + "11.851", + "10.876", + "8.949", + "7.279", + "6.920", + "5.626", + "4.713", + "3.639", + "2.839", + "1.992", + "0.978", + "0.397", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "225.57", + "234.82", + "221.91", + "222.06", + "210.15", + "191.85", + "195.25", + "177.93", + "176.32", + "182.57", + "159.67", + "160.88", + "161.72", + "151.30", + "156.67", + "164.16", + "167.02", + "174.41", + "168.67", + "169.95", + "182.87", + "204.35", + "203.10", + "216.93", + "229.02", + "218.61", + "251.94", + "242.37", + "232.12", + "268.03", + "252.66", + "266.38", + "259.22", + "279.21", + "299.85", + "299.73", + "304.45", + "336.83", + "332.46", + "344.27", + "352.14", + "368.46", + "354.53", + "354.34", + "333.46", + "358.19", + "356.73", + "336.18", + "342.21", + "327.94", + "310.40", + "315.34", + "298.82", + "298.21", + "294.25", + "291.16", + "275.16", + "282.80", + "277.61", + "263.32", + "277.24", + "276.23", + "275.96", + "282.21", + "283.67", + "285.71", + "324.31", + "332.39", + "384.83", + "388.79", + "418.22", + "436.70", + "436.44", + "476.81", + "511.42", + "540.87", + "510.73", + "529.39", + "498.10", + "506.05", + "459.52", + "476.04", + "457.14", + "413.46", + "383.10", + "354.13", + "339.35", + "305.85", + "314.84", + "311.11", + "304.94", + "305.52", + "298.94", + "285.96", + "281.12", + "272.13" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-03", + "weekend": false, + "load_mw": [ + "40.508", + "39.621", + "39.525", + "39.043", + "37.469", + "36.852", + "35.662", + "35.038", + "34.364", + "32.311", + "33.268", + "33.626", + "32.963", + "34.903", + "33.477", + "34.418", + "34.406", + "34.397", + "36.240", + "35.987", + "38.090", + "37.602", + "37.602", + "40.949", + "40.986", + "42.495", + "44.074", + "44.217", + "45.951", + "46.213", + "49.389", + "49.503", + "51.805", + "52.805", + "56.046", + "56.607", + "58.958", + "59.917", + "60.267", + "64.426", + "65.821", + "65.605", + "63.437", + "66.212", + "66.419", + "65.930", + "65.374", + "67.032", + "62.904", + "65.194", + "60.444", + "62.155", + "56.447", + "57.491", + "54.374", + "53.294", + "50.603", + "50.673", + "50.084", + "51.473", + "49.161", + "48.565", + "49.796", + "49.524", + "50.390", + "51.882", + "54.180", + "54.037", + "57.375", + "56.883", + "60.896", + "63.989", + "67.652", + "69.966", + "71.229", + "72.259", + "74.512", + "76.538", + "74.555", + "73.985", + "72.507", + "70.498", + "70.585", + "69.120", + "63.445", + "65.081", + "60.953", + "58.518", + "55.745", + "54.716", + "49.642", + "50.431", + "49.368", + "50.221", + "45.843", + "46.322" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.267", + "0.685", + "1.459", + "2.220", + "2.734", + "3.333", + "4.213", + "5.343", + "6.436", + "7.130", + "8.654", + "8.520", + "10.031", + "9.604", + "10.795", + "11.923", + "11.541", + "11.995", + "13.083", + "14.114", + "13.935", + "14.297", + "14.671", + "14.280", + "16.042", + "15.565", + "15.056", + "14.632", + "13.447", + "13.793", + "11.703", + "12.551", + "13.003", + "11.888", + "11.716", + "10.119", + "8.669", + "7.778", + "8.581", + "7.766", + "6.533", + "5.004", + "4.054", + "3.716", + "3.139", + "2.113", + "1.393", + "0.812", + "0.313", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.02", + "216.25", + "212.17", + "208.05", + "207.96", + "196.27", + "193.66", + "182.15", + "178.87", + "165.08", + "168.52", + "152.69", + "153.21", + "156.72", + "156.46", + "155.29", + "159.83", + "156.46", + "156.19", + "173.40", + "178.60", + "180.74", + "185.04", + "205.24", + "213.21", + "223.82", + "237.98", + "237.67", + "242.70", + "243.91", + "266.53", + "258.98", + "261.28", + "287.85", + "294.50", + "306.62", + "335.89", + "303.22", + "332.48", + "335.93", + "359.58", + "354.52", + "367.69", + "373.14", + "374.68", + "362.60", + "367.13", + "369.15", + "335.15", + "336.72", + "326.52", + "354.07", + "294.12", + "307.16", + "297.27", + "266.41", + "291.90", + "266.59", + "270.96", + "278.69", + "261.87", + "267.24", + "263.45", + "262.12", + "284.49", + "285.08", + "331.48", + "340.62", + "382.44", + "385.18", + "408.58", + "412.40", + "992.78", + "989.62", + "1038.46", + "1052.55", + "1047.52", + "1049.40", + "1014.53", + "1028.69", + "974.25", + "924.01", + "912.84", + "848.56", + "813.96", + "733.60", + "694.22", + "637.70", + "327.07", + "290.73", + "302.01", + "292.68", + "290.98", + "274.01", + "282.34", + "272.99" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-04", + "weekend": true, + "load_mw": [ + "34.343", + "34.152", + "32.762", + "30.690", + "30.217", + "31.444", + "30.095", + "28.218", + "28.151", + "27.647", + "28.736", + "28.282", + "27.466", + "28.203", + "29.077", + "27.938", + "28.936", + "29.863", + "30.016", + "29.723", + "32.274", + "32.734", + "33.917", + "33.879", + "35.020", + "34.748", + "35.980", + "37.854", + "37.843", + "39.752", + "39.835", + "39.683", + "42.536", + "44.406", + "46.473", + "46.185", + "49.633", + "50.422", + "53.319", + "51.419", + "53.630", + "52.372", + "55.023", + "55.041", + "56.944", + "55.788", + "53.584", + "54.908", + "54.373", + "49.627", + "52.919", + "51.147", + "50.079", + "47.823", + "46.308", + "45.050", + "44.115", + "41.966", + "42.267", + "42.661", + "42.323", + "40.590", + "39.463", + "41.096", + "40.916", + "42.648", + "43.468", + "45.112", + "45.889", + "49.151", + "50.111", + "52.800", + "55.540", + "56.158", + "57.723", + "58.846", + "62.884", + "63.242", + "61.414", + "62.876", + "61.235", + "61.222", + "58.278", + "55.401", + "55.503", + "53.406", + "49.683", + "49.993", + "45.849", + "45.241", + "44.258", + "42.296", + "41.569", + "38.575", + "38.999", + "39.106" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.331", + "0.897", + "1.475", + "2.310", + "3.004", + "4.052", + "4.842", + "6.114", + "6.347", + "7.289", + "9.011", + "8.999", + "10.544", + "10.767", + "12.045", + "12.362", + "13.536", + "13.763", + "13.341", + "15.997", + "14.681", + "15.992", + "15.965", + "16.321", + "15.074", + "15.392", + "15.663", + "15.775", + "14.661", + "15.499", + "15.169", + "11.754", + "12.833", + "11.065", + "11.919", + "10.398", + "9.461", + "9.556", + "8.539", + "7.092", + "7.165", + "6.050", + "5.172", + "4.102", + "2.644", + "2.480", + "1.556", + "0.828", + "0.342", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "245.64", + "221.19", + "218.50", + "211.91", + "209.81", + "203.06", + "193.44", + "182.75", + "179.73", + "171.22", + "174.40", + "170.40", + "158.76", + "158.62", + "157.63", + "152.26", + "164.31", + "171.48", + "177.04", + "184.23", + "190.49", + "183.86", + "208.31", + "206.98", + "220.09", + "222.04", + "225.98", + "234.77", + "237.53", + "259.24", + "273.88", + "273.76", + "263.20", + "287.56", + "302.64", + "285.70", + "320.44", + "331.62", + "327.87", + "335.35", + "340.24", + "368.17", + "374.55", + "355.38", + "348.61", + "368.89", + "357.22", + "348.85", + "330.07", + "327.72", + "339.81", + "324.44", + "319.29", + "302.36", + "285.51", + "289.68", + "279.77", + "281.20", + "272.11", + "289.01", + "274.11", + "259.88", + "280.35", + "292.18", + "293.32", + "310.32", + "313.45", + "343.99", + "354.93", + "394.10", + "404.71", + "433.93", + "465.77", + "441.06", + "503.08", + "518.52", + "526.44", + "540.06", + "484.91", + "488.02", + "462.71", + "458.99", + "447.61", + "405.84", + "376.73", + "362.55", + "348.41", + "331.23", + "324.12", + "315.43", + "292.94", + "289.12", + "298.44", + "291.27", + "282.68", + "281.85" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-05", + "weekend": true, + "load_mw": [ + "33.903", + "33.549", + "31.796", + "31.663", + "29.580", + "30.149", + "29.166", + "29.055", + "28.697", + "27.713", + "27.358", + "26.394", + "27.235", + "26.639", + "27.035", + "28.134", + "28.104", + "29.934", + "28.957", + "29.729", + "29.850", + "31.490", + "32.068", + "32.215", + "34.762", + "34.615", + "34.786", + "37.202", + "37.786", + "38.522", + "39.457", + "41.590", + "43.332", + "44.229", + "45.161", + "45.209", + "46.863", + "48.554", + "47.956", + "51.749", + "51.391", + "53.625", + "52.817", + "53.579", + "53.795", + "53.385", + "53.883", + "53.806", + "53.359", + "51.452", + "50.706", + "48.534", + "48.579", + "47.181", + "44.440", + "43.850", + "41.788", + "41.554", + "43.196", + "40.495", + "40.350", + "41.193", + "38.680", + "42.001", + "42.742", + "42.112", + "43.955", + "43.714", + "47.757", + "47.076", + "48.865", + "51.084", + "53.685", + "55.573", + "59.177", + "59.280", + "60.397", + "60.127", + "63.251", + "61.163", + "59.808", + "59.986", + "56.737", + "55.500", + "55.898", + "50.362", + "49.888", + "46.897", + "44.341", + "43.780", + "41.672", + "41.751", + "40.789", + "39.276", + "39.511", + "37.880" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.427", + "1.109", + "2.083", + "3.018", + "3.873", + "4.936", + "5.814", + "7.607", + "8.614", + "9.746", + "11.407", + "11.628", + "12.990", + "13.324", + "16.144", + "17.151", + "17.494", + "18.674", + "17.676", + "18.627", + "19.134", + "20.597", + "20.981", + "19.912", + "19.882", + "20.237", + "20.458", + "19.370", + "20.290", + "19.325", + "19.455", + "19.702", + "18.116", + "14.236", + "15.127", + "13.520", + "14.521", + "11.881", + "11.110", + "10.424", + "8.507", + "7.730", + "6.720", + "4.780", + "4.169", + "3.062", + "2.046", + "1.068", + "0.389", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "243.77", + "233.12", + "215.82", + "206.94", + "203.43", + "195.57", + "199.30", + "178.14", + "178.55", + "175.63", + "167.84", + "160.02", + "165.64", + "157.84", + "159.99", + "168.09", + "182.82", + "178.96", + "172.05", + "189.31", + "168.09", + "190.45", + "199.00", + "209.54", + "219.39", + "228.36", + "233.62", + "243.41", + "247.95", + "269.51", + "270.73", + "285.04", + "283.42", + "270.87", + "290.95", + "322.11", + "309.10", + "301.86", + "322.92", + "338.52", + "343.74", + "349.84", + "362.47", + "353.65", + "363.30", + "340.54", + "357.43", + "348.45", + "338.03", + "328.11", + "324.79", + "305.40", + "297.84", + "304.86", + "283.19", + "274.10", + "257.89", + "258.03", + "271.70", + "266.48", + "272.60", + "284.57", + "261.35", + "293.66", + "277.23", + "314.43", + "319.45", + "339.23", + "364.58", + "394.08", + "402.64", + "422.96", + "449.33", + "455.51", + "491.05", + "510.71", + "517.77", + "520.15", + "486.02", + "496.29", + "485.84", + "460.59", + "423.02", + "432.17", + "381.34", + "368.40", + "331.01", + "310.53", + "312.03", + "304.67", + "308.12", + "304.71", + "288.80", + "283.07", + "292.38", + "280.64" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-06", + "weekend": false, + "load_mw": [ + "39.097", + "38.029", + "37.649", + "38.596", + "36.640", + "34.279", + "34.510", + "32.327", + "32.552", + "33.133", + "32.137", + "31.691", + "33.157", + "32.016", + "32.211", + "31.599", + "34.815", + "35.160", + "33.886", + "35.364", + "36.843", + "37.485", + "39.099", + "39.786", + "39.698", + "39.978", + "42.546", + "42.090", + "46.090", + "44.404", + "47.231", + "47.831", + "48.419", + "52.468", + "53.045", + "55.460", + "56.512", + "55.375", + "58.014", + "58.091", + "62.874", + "60.378", + "64.144", + "65.141", + "60.368", + "64.513", + "64.319", + "61.615", + "59.828", + "58.680", + "59.221", + "60.726", + "56.943", + "54.587", + "53.084", + "49.908", + "51.560", + "51.682", + "47.502", + "48.558", + "49.027", + "46.819", + "46.159", + "46.149", + "49.844", + "51.041", + "49.842", + "53.170", + "56.470", + "57.461", + "58.370", + "59.273", + "61.717", + "64.051", + "67.065", + "68.049", + "72.762", + "72.995", + "71.449", + "70.225", + "72.060", + "70.850", + "66.794", + "64.287", + "63.741", + "61.793", + "57.251", + "54.420", + "52.597", + "50.035", + "50.540", + "48.023", + "47.660", + "46.680", + "46.247", + "44.032" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.382", + "0.888", + "1.851", + "2.572", + "3.581", + "4.418", + "5.309", + "6.700", + "7.894", + "9.271", + "10.576", + "10.738", + "11.349", + "12.860", + "12.912", + "14.713", + "14.915", + "15.412", + "16.410", + "16.290", + "17.860", + "17.388", + "17.783", + "17.521", + "17.560", + "17.945", + "17.737", + "18.484", + "17.204", + "16.374", + "17.108", + "14.187", + "16.249", + "14.411", + "13.544", + "12.078", + "11.832", + "10.407", + "9.976", + "8.493", + "7.447", + "6.226", + "5.195", + "4.658", + "3.463", + "2.662", + "1.726", + "0.915", + "0.353", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.14", + "235.34", + "216.90", + "209.71", + "213.56", + "189.15", + "192.73", + "181.81", + "178.23", + "169.88", + "168.80", + "159.10", + "165.61", + "163.80", + "161.98", + "163.58", + "154.82", + "176.84", + "167.38", + "179.25", + "180.48", + "190.13", + "198.39", + "202.80", + "207.15", + "219.33", + "228.89", + "243.64", + "251.61", + "254.97", + "259.84", + "262.47", + "264.20", + "301.06", + "298.72", + "298.07", + "326.33", + "322.03", + "348.91", + "338.40", + "354.60", + "358.18", + "365.81", + "361.54", + "351.23", + "363.54", + "361.24", + "362.99", + "338.64", + "336.66", + "337.83", + "331.99", + "321.69", + "283.78", + "304.18", + "270.28", + "286.71", + "273.21", + "274.32", + "270.94", + "272.80", + "269.68", + "270.74", + "269.83", + "295.10", + "304.87", + "329.34", + "330.36", + "344.73", + "399.08", + "404.18", + "422.75", + "472.44", + "510.23", + "526.06", + "497.37", + "531.18", + "525.98", + "516.90", + "512.18", + "504.57", + "487.88", + "439.31", + "414.31", + "377.18", + "371.37", + "345.88", + "329.48", + "302.05", + "297.58", + "300.06", + "304.28", + "280.04", + "277.99", + "280.95", + "270.79" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-07", + "weekend": false, + "load_mw": [ + "38.170", + "36.441", + "36.435", + "36.310", + "36.050", + "33.699", + "33.012", + "33.778", + "31.892", + "31.026", + "31.671", + "31.123", + "30.550", + "31.181", + "32.060", + "31.440", + "32.085", + "32.257", + "33.793", + "34.724", + "35.238", + "35.776", + "35.915", + "38.647", + "39.753", + "40.934", + "41.393", + "43.072", + "42.860", + "44.428", + "45.433", + "47.164", + "48.169", + "50.268", + "49.652", + "54.859", + "53.715", + "55.437", + "55.770", + "60.282", + "57.846", + "61.316", + "61.211", + "62.138", + "61.554", + "62.094", + "61.965", + "61.785", + "60.729", + "58.436", + "58.036", + "57.129", + "54.500", + "54.089", + "51.138", + "50.920", + "50.653", + "47.873", + "46.780", + "47.990", + "46.954", + "45.377", + "46.801", + "46.699", + "45.906", + "47.755", + "49.538", + "51.701", + "52.178", + "55.550", + "57.391", + "60.332", + "62.500", + "64.536", + "67.483", + "65.845", + "67.631", + "70.198", + "70.228", + "70.834", + "67.387", + "68.430", + "65.797", + "63.602", + "60.275", + "57.427", + "53.773", + "54.696", + "52.761", + "50.540", + "48.258", + "47.506", + "46.523", + "46.268", + "44.585", + "45.219" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.494", + "1.188", + "2.100", + "2.993", + "4.051", + "5.424", + "6.123", + "7.599", + "8.723", + "10.045", + "11.247", + "12.323", + "12.877", + "15.127", + "15.892", + "17.238", + "17.780", + "18.149", + "18.835", + "21.147", + "19.745", + "21.484", + "21.443", + "20.376", + "22.171", + "20.033", + "21.571", + "21.053", + "20.288", + "21.175", + "18.185", + "19.461", + "18.126", + "16.201", + "16.262", + "15.880", + "13.539", + "11.992", + "11.346", + "9.612", + "8.658", + "7.851", + "6.557", + "5.355", + "4.050", + "2.944", + "2.000", + "1.176", + "0.432", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "246.68", + "232.42", + "225.01", + "229.04", + "217.09", + "196.60", + "195.29", + "191.75", + "175.51", + "166.66", + "170.60", + "162.72", + "164.23", + "163.45", + "164.42", + "162.16", + "161.95", + "172.89", + "177.37", + "173.17", + "190.35", + "189.09", + "188.78", + "204.76", + "210.56", + "234.28", + "223.72", + "236.19", + "245.65", + "259.56", + "256.71", + "277.67", + "284.82", + "281.72", + "297.61", + "307.50", + "303.30", + "320.22", + "324.53", + "348.04", + "349.43", + "377.15", + "369.33", + "363.09", + "369.35", + "366.91", + "361.40", + "332.43", + "339.55", + "335.96", + "337.04", + "324.05", + "307.63", + "303.34", + "271.28", + "275.64", + "276.14", + "256.06", + "261.76", + "260.55", + "275.07", + "267.88", + "262.78", + "286.24", + "288.53", + "296.22", + "316.79", + "323.66", + "369.76", + "396.44", + "393.73", + "465.81", + "482.78", + "473.70", + "512.80", + "480.58", + "514.94", + "545.32", + "509.03", + "497.16", + "467.45", + "462.97", + "450.10", + "401.65", + "381.36", + "355.97", + "330.69", + "339.89", + "304.07", + "301.74", + "305.85", + "295.29", + "276.15", + "292.78", + "288.18", + "293.46" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-08", + "weekend": false, + "load_mw": [ + "39.183", + "39.365", + "37.891", + "37.788", + "36.369", + "36.165", + "34.370", + "33.789", + "33.717", + "34.536", + "32.837", + "32.824", + "32.524", + "33.105", + "32.631", + "31.678", + "33.382", + "35.085", + "34.315", + "36.561", + "35.386", + "37.582", + "39.846", + "39.567", + "41.598", + "41.576", + "43.007", + "42.872", + "44.592", + "45.642", + "46.600", + "49.759", + "50.260", + "51.835", + "53.492", + "53.475", + "57.149", + "57.163", + "57.984", + "62.014", + "61.591", + "63.093", + "65.420", + "63.529", + "64.318", + "65.123", + "65.032", + "63.047", + "60.401", + "62.694", + "61.591", + "57.884", + "58.331", + "55.274", + "54.248", + "55.085", + "48.959", + "50.091", + "50.406", + "50.024", + "47.201", + "47.287", + "50.238", + "48.102", + "50.054", + "52.141", + "51.417", + "53.775", + "54.446", + "56.820", + "59.692", + "62.419", + "61.460", + "66.847", + "66.826", + "70.748", + "71.918", + "73.681", + "79.074", + "72.977", + "70.035", + "69.838", + "66.931", + "67.263", + "62.769", + "60.609", + "59.708", + "58.110", + "55.737", + "52.133", + "51.301", + "50.654", + "48.200", + "47.745", + "46.656", + "46.674" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.383", + "1.016", + "1.703", + "2.755", + "3.602", + "4.378", + "5.212", + "6.259", + "7.559", + "8.536", + "9.848", + "10.924", + "11.055", + "11.868", + "14.532", + "14.527", + "15.171", + "15.272", + "17.600", + "16.513", + "15.754", + "18.405", + "18.184", + "17.458", + "18.310", + "18.107", + "18.698", + "16.779", + "17.427", + "16.417", + "17.821", + "17.169", + "15.679", + "15.068", + "14.445", + "11.907", + "11.679", + "11.184", + "9.181", + "8.924", + "7.888", + "6.405", + "5.514", + "4.535", + "3.461", + "2.814", + "1.789", + "0.953", + "0.381", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "218.32", + "230.42", + "202.48", + "212.34", + "209.10", + "187.73", + "194.93", + "173.39", + "166.48", + "166.21", + "161.23", + "162.98", + "152.13", + "151.97", + "157.80", + "150.47", + "159.27", + "167.98", + "165.51", + "182.09", + "175.72", + "193.82", + "212.52", + "205.53", + "207.01", + "217.19", + "220.87", + "242.26", + "243.88", + "246.68", + "246.46", + "278.03", + "284.18", + "282.10", + "309.66", + "316.17", + "310.94", + "332.84", + "333.39", + "363.82", + "358.75", + "365.02", + "373.14", + "354.67", + "357.99", + "365.87", + "361.23", + "365.83", + "346.13", + "335.85", + "347.13", + "317.47", + "305.55", + "298.69", + "291.23", + "286.73", + "270.42", + "264.10", + "279.17", + "274.46", + "262.05", + "253.57", + "266.23", + "272.87", + "295.52", + "312.35", + "316.12", + "357.37", + "370.25", + "364.75", + "415.63", + "421.91", + "485.05", + "479.26", + "503.82", + "500.32", + "514.48", + "521.80", + "506.42", + "524.13", + "446.36", + "451.33", + "441.80", + "398.21", + "395.83", + "384.71", + "344.22", + "326.66", + "320.36", + "300.28", + "311.81", + "299.52", + "277.60", + "287.54", + "290.36", + "299.67" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-09", + "weekend": false, + "load_mw": [ + "41.819", + "42.624", + "42.373", + "39.118", + "39.048", + "37.548", + "37.084", + "37.475", + "35.281", + "34.843", + "34.970", + "34.897", + "34.686", + "35.405", + "35.650", + "34.969", + "35.607", + "36.847", + "35.806", + "37.692", + "38.395", + "40.307", + "41.248", + "43.070", + "42.493", + "45.591", + "45.404", + "47.728", + "46.830", + "49.126", + "51.949", + "50.707", + "53.604", + "54.141", + "57.513", + "58.938", + "59.821", + "61.245", + "64.174", + "65.316", + "66.487", + "69.513", + "66.950", + "69.969", + "67.432", + "68.853", + "68.629", + "68.738", + "67.112", + "64.236", + "62.162", + "61.708", + "60.719", + "59.621", + "59.162", + "56.763", + "52.849", + "53.150", + "53.389", + "52.140", + "50.894", + "50.104", + "50.041", + "50.558", + "53.164", + "53.262", + "53.714", + "55.460", + "59.056", + "63.504", + "62.403", + "68.861", + "68.264", + "72.001", + "71.915", + "72.198", + "79.226", + "74.410", + "77.221", + "77.203", + "77.166", + "73.202", + "76.372", + "69.987", + "70.296", + "63.853", + "64.295", + "63.545", + "57.590", + "57.019", + "54.765", + "55.283", + "50.121", + "49.129", + "50.165", + "50.095" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.469", + "1.234", + "1.976", + "2.885", + "4.160", + "5.531", + "7.272", + "7.609", + "8.929", + "9.638", + "11.018", + "12.062", + "14.909", + "15.748", + "17.011", + "16.763", + "17.164", + "17.556", + "18.986", + "20.537", + "19.537", + "21.350", + "21.719", + "22.702", + "20.994", + "21.604", + "20.795", + "20.612", + "19.186", + "20.358", + "18.984", + "19.563", + "18.655", + "17.196", + "15.263", + "15.226", + "14.902", + "12.433", + "11.350", + "10.571", + "9.388", + "7.837", + "6.282", + "5.319", + "4.156", + "3.106", + "2.088", + "1.246", + "0.400", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "232.63", + "238.08", + "217.47", + "200.33", + "194.57", + "187.95", + "193.56", + "175.85", + "172.67", + "172.29", + "159.86", + "161.42", + "156.13", + "152.42", + "163.07", + "160.91", + "159.46", + "167.29", + "171.65", + "167.84", + "172.38", + "187.73", + "197.19", + "208.53", + "206.82", + "219.37", + "219.44", + "234.02", + "246.09", + "264.97", + "268.83", + "266.83", + "282.94", + "293.97", + "298.09", + "306.19", + "300.94", + "337.49", + "348.84", + "339.57", + "360.18", + "358.28", + "366.80", + "363.83", + "389.89", + "355.81", + "375.60", + "341.89", + "348.50", + "323.23", + "313.48", + "320.45", + "320.40", + "298.78", + "295.84", + "275.31", + "282.48", + "285.08", + "256.52", + "259.17", + "247.93", + "275.33", + "271.67", + "257.13", + "288.44", + "285.02", + "309.85", + "332.40", + "359.88", + "404.66", + "384.62", + "450.59", + "485.04", + "510.18", + "527.59", + "504.92", + "545.30", + "519.59", + "524.94", + "493.54", + "487.64", + "445.41", + "420.87", + "404.62", + "380.42", + "369.29", + "360.91", + "341.25", + "311.83", + "319.94", + "312.70", + "312.59", + "282.30", + "292.64", + "278.01", + "276.44" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-10", + "weekend": false, + "load_mw": [ + "38.310", + "37.795", + "37.054", + "36.203", + "34.791", + "33.524", + "35.018", + "33.510", + "33.279", + "32.832", + "32.614", + "31.551", + "32.505", + "31.299", + "32.911", + "32.554", + "33.474", + "34.327", + "34.418", + "34.638", + "35.213", + "37.230", + "37.886", + "39.174", + "39.225", + "41.067", + "41.100", + "42.189", + "43.527", + "44.855", + "45.613", + "48.488", + "49.201", + "51.577", + "52.327", + "52.978", + "55.044", + "56.908", + "58.835", + "59.690", + "59.726", + "63.705", + "62.168", + "61.950", + "61.510", + "65.279", + "63.475", + "61.984", + "61.350", + "61.217", + "59.372", + "57.525", + "55.322", + "54.440", + "53.308", + "51.356", + "48.202", + "48.796", + "47.216", + "46.983", + "48.012", + "47.534", + "46.560", + "48.306", + "48.850", + "50.520", + "49.889", + "51.887", + "55.494", + "54.762", + "59.986", + "61.758", + "62.985", + "66.515", + "70.480", + "69.744", + "71.563", + "73.853", + "69.844", + "71.561", + "71.299", + "69.014", + "68.079", + "64.370", + "62.286", + "59.989", + "59.970", + "57.516", + "55.829", + "52.055", + "51.304", + "49.272", + "46.501", + "46.848", + "45.825", + "44.591" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.498", + "1.333", + "2.190", + "3.429", + "4.497", + "5.155", + "7.530", + "8.903", + "10.188", + "10.687", + "12.070", + "14.344", + "15.437", + "17.410", + "16.364", + "19.745", + "20.855", + "19.772", + "20.472", + "22.381", + "22.464", + "22.978", + "23.495", + "25.302", + "23.470", + "24.381", + "24.458", + "24.125", + "22.349", + "21.155", + "21.651", + "19.318", + "18.317", + "18.536", + "18.379", + "15.874", + "14.774", + "14.428", + "12.494", + "11.561", + "10.821", + "8.529", + "6.956", + "5.535", + "4.495", + "3.547", + "2.058", + "1.401", + "0.465", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "222.62", + "231.81", + "210.74", + "220.09", + "202.01", + "205.58", + "195.74", + "183.51", + "187.36", + "170.15", + "177.34", + "168.75", + "162.90", + "159.78", + "159.65", + "168.11", + "161.56", + "176.51", + "176.76", + "178.56", + "186.00", + "191.11", + "208.60", + "206.80", + "210.61", + "223.43", + "238.21", + "251.73", + "257.38", + "252.42", + "276.88", + "274.39", + "288.05", + "295.41", + "286.92", + "296.98", + "300.30", + "312.13", + "345.18", + "347.14", + "335.99", + "355.56", + "340.15", + "342.39", + "360.04", + "361.32", + "347.69", + "356.89", + "331.98", + "325.44", + "311.45", + "307.06", + "299.36", + "294.49", + "276.61", + "276.87", + "273.17", + "269.51", + "274.44", + "261.25", + "267.18", + "273.40", + "262.68", + "268.25", + "283.63", + "299.86", + "300.76", + "347.57", + "361.32", + "349.99", + "423.36", + "462.09", + "474.41", + "483.59", + "508.84", + "520.31", + "537.87", + "517.95", + "520.13", + "513.19", + "491.93", + "465.83", + "430.92", + "431.91", + "390.55", + "367.19", + "354.31", + "337.83", + "330.57", + "300.98", + "313.98", + "288.54", + "292.41", + "273.35", + "294.74", + "281.79" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-11", + "weekend": true, + "load_mw": [ + "32.316", + "31.040", + "31.154", + "29.984", + "29.396", + "28.908", + "27.457", + "27.782", + "26.937", + "26.918", + "26.118", + "25.997", + "26.592", + "25.598", + "27.931", + "26.909", + "27.138", + "27.170", + "28.120", + "28.783", + "29.980", + "29.828", + "30.761", + "32.738", + "32.409", + "33.785", + "33.940", + "35.403", + "36.026", + "37.545", + "38.477", + "38.372", + "40.449", + "41.183", + "43.916", + "44.967", + "45.813", + "46.899", + "48.906", + "48.841", + "50.292", + "51.408", + "51.732", + "50.598", + "52.202", + "52.185", + "50.723", + "49.801", + "50.549", + "48.120", + "48.958", + "46.535", + "46.731", + "44.644", + "41.788", + "40.594", + "41.234", + "40.837", + "40.655", + "39.864", + "38.401", + "39.864", + "38.010", + "39.228", + "39.343", + "40.989", + "41.286", + "43.149", + "45.370", + "45.307", + "46.492", + "51.342", + "52.403", + "55.481", + "56.143", + "57.746", + "58.224", + "56.596", + "57.220", + "58.457", + "60.453", + "57.719", + "54.464", + "54.044", + "52.569", + "50.436", + "50.345", + "44.686", + "43.351", + "42.914", + "42.402", + "40.021", + "38.593", + "38.459", + "38.172", + "37.684" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.473", + "1.216", + "1.956", + "3.147", + "3.999", + "5.818", + "6.520", + "7.391", + "10.043", + "11.158", + "11.971", + "13.135", + "14.502", + "14.601", + "17.094", + "16.936", + "19.143", + "19.423", + "20.633", + "22.235", + "23.748", + "20.334", + "24.103", + "19.421", + "23.510", + "22.409", + "20.894", + "20.335", + "19.980", + "20.509", + "17.227", + "19.967", + "18.396", + "17.802", + "17.379", + "16.029", + "14.595", + "13.121", + "11.316", + "10.808", + "8.893", + "8.376", + "6.226", + "5.597", + "4.398", + "3.379", + "2.086", + "1.238", + "0.438", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "249.33", + "236.98", + "224.61", + "233.02", + "213.84", + "208.06", + "196.02", + "191.19", + "190.61", + "181.21", + "176.53", + "171.12", + "171.25", + "164.40", + "170.58", + "166.62", + "170.70", + "171.35", + "177.58", + "178.93", + "192.84", + "190.08", + "208.88", + "214.29", + "222.56", + "225.63", + "231.61", + "248.10", + "249.26", + "236.36", + "280.18", + "264.91", + "280.01", + "288.91", + "298.50", + "302.35", + "309.16", + "317.61", + "336.68", + "340.92", + "363.27", + "344.28", + "363.59", + "353.96", + "338.33", + "359.30", + "343.98", + "326.87", + "350.32", + "320.15", + "315.40", + "294.36", + "303.46", + "282.21", + "303.75", + "279.29", + "261.17", + "282.86", + "262.85", + "258.21", + "268.74", + "264.10", + "259.43", + "284.36", + "288.96", + "314.17", + "322.22", + "335.76", + "352.42", + "382.89", + "396.13", + "431.02", + "486.56", + "496.30", + "524.83", + "519.20", + "518.28", + "513.42", + "494.84", + "480.28", + "493.93", + "459.58", + "409.05", + "409.08", + "382.09", + "345.75", + "350.81", + "330.22", + "339.20", + "298.82", + "307.68", + "294.25", + "296.41", + "287.52", + "294.16", + "284.85" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-12", + "weekend": true, + "load_mw": [ + "32.532", + "31.899", + "31.166", + "30.763", + "29.048", + "29.276", + "28.615", + "27.678", + "27.432", + "26.942", + "27.907", + "26.385", + "27.522", + "27.302", + "27.539", + "25.706", + "27.137", + "28.887", + "29.500", + "29.654", + "30.003", + "31.180", + "31.107", + "33.054", + "31.932", + "33.453", + "33.356", + "36.066", + "36.392", + "37.491", + "37.013", + "39.586", + "42.020", + "40.970", + "44.190", + "45.708", + "45.844", + "48.188", + "49.785", + "48.907", + "51.470", + "52.450", + "53.434", + "54.222", + "55.671", + "53.469", + "52.709", + "53.356", + "53.729", + "50.437", + "47.841", + "47.571", + "45.729", + "46.280", + "43.793", + "44.481", + "41.672", + "41.278", + "40.647", + "40.874", + "39.311", + "39.234", + "39.352", + "40.236", + "40.416", + "41.460", + "42.136", + "43.423", + "44.812", + "45.745", + "48.004", + "49.502", + "51.117", + "54.279", + "56.830", + "59.524", + "58.687", + "61.870", + "62.038", + "59.610", + "59.308", + "57.994", + "55.901", + "58.129", + "52.134", + "49.981", + "47.991", + "46.656", + "43.708", + "45.176", + "42.439", + "40.715", + "39.514", + "38.885", + "39.697", + "37.186" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.461", + "1.271", + "2.059", + "3.316", + "4.484", + "5.975", + "6.637", + "8.264", + "9.609", + "10.336", + "11.153", + "13.730", + "13.276", + "16.661", + "16.797", + "17.871", + "17.223", + "20.295", + "20.665", + "20.834", + "23.042", + "21.836", + "22.466", + "23.342", + "24.257", + "22.475", + "21.889", + "22.435", + "21.685", + "21.200", + "21.882", + "20.180", + "18.412", + "16.116", + "16.200", + "15.784", + "14.608", + "13.589", + "12.861", + "10.081", + "9.139", + "8.159", + "7.365", + "5.796", + "3.964", + "3.321", + "2.080", + "1.273", + "0.472", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "228.19", + "237.02", + "223.55", + "221.73", + "216.52", + "206.94", + "202.88", + "190.28", + "183.07", + "181.73", + "171.35", + "174.46", + "162.57", + "174.02", + "162.23", + "161.53", + "169.62", + "175.52", + "167.36", + "185.84", + "193.03", + "189.76", + "197.75", + "212.14", + "219.18", + "223.84", + "227.42", + "239.22", + "249.00", + "254.69", + "260.39", + "279.58", + "276.02", + "289.94", + "303.66", + "312.23", + "300.93", + "343.60", + "323.64", + "340.41", + "332.36", + "359.80", + "345.58", + "370.18", + "359.37", + "340.10", + "345.22", + "352.54", + "342.31", + "326.58", + "323.56", + "312.97", + "304.29", + "284.49", + "280.00", + "281.66", + "259.31", + "255.70", + "256.40", + "267.68", + "248.31", + "265.49", + "265.60", + "276.21", + "297.63", + "298.15", + "319.66", + "327.73", + "357.63", + "364.98", + "401.98", + "427.49", + "429.75", + "486.84", + "474.80", + "498.72", + "551.75", + "520.78", + "509.68", + "492.40", + "446.63", + "435.46", + "425.52", + "413.06", + "387.78", + "377.13", + "338.85", + "308.44", + "323.49", + "296.71", + "298.02", + "299.65", + "290.34", + "294.52", + "290.86", + "296.34" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-13", + "weekend": false, + "load_mw": [ + "43.165", + "42.338", + "39.828", + "40.591", + "38.101", + "38.314", + "37.053", + "36.015", + "35.021", + "34.636", + "35.204", + "36.195", + "34.726", + "34.899", + "34.680", + "36.522", + "36.610", + "36.754", + "38.411", + "38.685", + "39.977", + "41.012", + "40.450", + "42.069", + "42.639", + "43.855", + "45.826", + "45.737", + "48.641", + "49.456", + "49.830", + "52.705", + "53.718", + "55.207", + "57.555", + "59.485", + "60.842", + "63.496", + "64.480", + "67.336", + "66.903", + "68.411", + "68.352", + "71.401", + "68.789", + "70.436", + "68.024", + "69.843", + "68.196", + "67.272", + "63.971", + "63.975", + "61.740", + "61.037", + "57.887", + "58.412", + "55.630", + "53.342", + "54.186", + "51.853", + "51.828", + "51.379", + "50.599", + "50.881", + "54.429", + "54.460", + "54.447", + "57.954", + "61.143", + "61.935", + "63.248", + "68.350", + "67.200", + "71.041", + "74.669", + "76.773", + "76.010", + "79.680", + "78.143", + "76.741", + "75.652", + "76.440", + "73.884", + "70.613", + "68.363", + "65.470", + "63.518", + "61.432", + "59.625", + "56.980", + "53.493", + "54.737", + "53.745", + "51.711", + "50.029", + "48.744" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.418", + "1.191", + "1.940", + "2.994", + "4.181", + "5.601", + "6.141", + "7.508", + "8.708", + "9.555", + "11.422", + "13.126", + "14.669", + "14.451", + "16.526", + "15.928", + "17.374", + "16.719", + "17.863", + "19.350", + "19.504", + "20.063", + "19.374", + "22.556", + "22.112", + "19.619", + "21.788", + "22.433", + "21.486", + "21.344", + "17.711", + "19.301", + "16.178", + "16.506", + "15.371", + "12.628", + "13.132", + "12.045", + "11.426", + "9.471", + "8.285", + "7.009", + "5.912", + "4.885", + "3.480", + "2.926", + "2.140", + "1.149", + "0.419", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "226.85", + "225.20", + "216.57", + "202.71", + "202.83", + "195.77", + "188.41", + "179.05", + "174.07", + "173.75", + "163.74", + "152.02", + "158.76", + "153.38", + "159.12", + "153.90", + "153.48", + "156.83", + "166.83", + "174.54", + "190.17", + "179.82", + "195.05", + "197.76", + "207.98", + "225.07", + "228.22", + "232.82", + "243.46", + "255.44", + "259.46", + "276.34", + "273.90", + "282.71", + "301.67", + "303.60", + "322.52", + "339.48", + "342.55", + "345.16", + "360.40", + "344.77", + "364.31", + "350.83", + "369.49", + "370.77", + "347.19", + "351.31", + "327.19", + "324.84", + "314.83", + "315.24", + "299.26", + "303.95", + "282.38", + "276.15", + "255.79", + "269.95", + "276.22", + "268.22", + "266.62", + "260.73", + "277.06", + "285.04", + "283.17", + "299.10", + "307.49", + "343.66", + "373.27", + "395.48", + "411.64", + "437.01", + "451.27", + "485.09", + "537.00", + "524.33", + "513.71", + "543.14", + "507.98", + "497.47", + "483.72", + "461.88", + "438.32", + "423.50", + "393.71", + "354.12", + "353.01", + "335.28", + "327.39", + "301.47", + "295.00", + "282.72", + "299.62", + "291.26", + "286.43", + "281.05" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-14", + "weekend": false, + "load_mw": [ + "41.113", + "38.960", + "38.033", + "37.349", + "36.111", + "36.606", + "34.657", + "34.606", + "33.363", + "33.797", + "32.718", + "32.957", + "33.041", + "32.410", + "34.466", + "33.483", + "33.539", + "35.790", + "36.555", + "36.031", + "36.521", + "36.936", + "38.757", + "39.180", + "41.019", + "40.276", + "42.241", + "43.916", + "43.412", + "46.637", + "48.672", + "49.310", + "50.595", + "51.096", + "54.125", + "54.592", + "57.364", + "58.239", + "59.674", + "63.538", + "62.865", + "62.343", + "64.870", + "64.794", + "63.737", + "68.899", + "62.980", + "65.980", + "63.132", + "61.446", + "58.480", + "58.853", + "56.570", + "54.309", + "55.148", + "54.049", + "51.251", + "49.311", + "49.034", + "47.230", + "49.089", + "49.198", + "49.146", + "48.883", + "49.577", + "51.154", + "52.286", + "53.097", + "55.134", + "56.919", + "59.787", + "59.713", + "65.415", + "66.423", + "68.794", + "70.724", + "73.390", + "71.767", + "72.723", + "71.678", + "73.328", + "70.944", + "69.019", + "66.217", + "63.668", + "63.224", + "59.513", + "57.728", + "55.150", + "53.483", + "52.702", + "51.004", + "48.446", + "47.865", + "47.400", + "46.830" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.533", + "1.355", + "2.087", + "3.284", + "4.290", + "5.808", + "7.026", + "7.935", + "10.060", + "10.198", + "11.887", + "12.515", + "14.578", + "16.213", + "17.953", + "19.025", + "20.754", + "19.308", + "20.908", + "21.682", + "21.466", + "23.736", + "24.026", + "22.137", + "21.465", + "23.576", + "21.833", + "22.075", + "19.355", + "21.313", + "20.684", + "19.250", + "18.941", + "17.496", + "17.482", + "15.610", + "14.231", + "13.764", + "11.185", + "11.501", + "9.639", + "8.531", + "6.189", + "6.027", + "4.699", + "3.377", + "2.306", + "1.275", + "0.501", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "242.93", + "235.44", + "220.21", + "222.87", + "208.70", + "204.73", + "193.57", + "190.26", + "173.16", + "167.71", + "160.51", + "160.13", + "154.30", + "149.09", + "153.42", + "159.02", + "160.55", + "162.83", + "167.60", + "179.63", + "192.53", + "198.45", + "207.70", + "203.79", + "212.88", + "221.54", + "240.17", + "231.81", + "252.85", + "264.96", + "262.97", + "264.09", + "281.15", + "290.45", + "303.28", + "300.95", + "315.23", + "311.00", + "325.91", + "344.83", + "343.09", + "343.75", + "361.46", + "349.23", + "370.11", + "365.40", + "347.40", + "351.72", + "350.92", + "326.79", + "327.81", + "308.21", + "304.43", + "283.35", + "290.93", + "285.78", + "277.02", + "276.97", + "265.48", + "261.34", + "271.48", + "268.17", + "281.89", + "278.00", + "282.60", + "304.00", + "319.69", + "338.12", + "368.27", + "396.43", + "414.41", + "442.21", + "466.10", + "487.53", + "527.06", + "511.17", + "523.08", + "548.03", + "525.41", + "506.22", + "464.51", + "461.19", + "433.07", + "390.78", + "366.72", + "346.62", + "359.84", + "338.06", + "311.93", + "304.35", + "310.88", + "311.51", + "286.04", + "290.73", + "271.77", + "282.32" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-15", + "weekend": false, + "load_mw": [ + "39.246", + "38.883", + "38.133", + "37.443", + "36.837", + "35.288", + "35.225", + "33.797", + "34.619", + "34.618", + "33.684", + "33.200", + "33.258", + "32.742", + "34.220", + "33.433", + "34.163", + "35.553", + "35.661", + "36.822", + "37.292", + "36.898", + "39.117", + "39.962", + "40.032", + "43.257", + "44.128", + "44.285", + "45.528", + "45.402", + "48.428", + "48.642", + "49.993", + "52.018", + "54.988", + "55.875", + "56.199", + "59.365", + "59.733", + "62.155", + "63.489", + "64.502", + "63.491", + "63.733", + "63.102", + "65.334", + "64.841", + "62.605", + "62.195", + "63.862", + "59.986", + "58.595", + "56.621", + "57.262", + "55.226", + "54.355", + "52.644", + "49.982", + "50.326", + "48.875", + "47.320", + "47.848", + "50.149", + "49.258", + "49.191", + "49.382", + "51.618", + "52.163", + "52.909", + "56.636", + "60.071", + "63.729", + "61.742", + "65.266", + "68.674", + "70.998", + "73.142", + "75.206", + "72.874", + "72.407", + "73.233", + "72.185", + "67.012", + "66.894", + "66.065", + "62.283", + "59.282", + "57.350", + "53.454", + "52.792", + "50.345", + "51.204", + "49.075", + "45.290", + "46.715", + "47.214" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.551", + "1.307", + "2.235", + "3.816", + "4.683", + "6.312", + "7.231", + "9.345", + "10.193", + "12.059", + "13.269", + "14.024", + "15.276", + "16.961", + "18.125", + "19.675", + "19.054", + "21.813", + "23.182", + "22.218", + "23.123", + "23.999", + "21.735", + "24.998", + "24.334", + "24.348", + "22.416", + "25.377", + "24.433", + "23.563", + "22.326", + "21.844", + "19.846", + "19.697", + "20.169", + "16.553", + "15.480", + "15.545", + "13.526", + "11.435", + "9.770", + "9.912", + "7.162", + "6.023", + "5.002", + "3.152", + "2.189", + "1.314", + "0.534", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "233.78", + "235.61", + "219.97", + "210.88", + "207.28", + "192.47", + "206.16", + "185.60", + "178.57", + "171.70", + "173.67", + "162.13", + "160.80", + "156.33", + "161.27", + "164.70", + "171.74", + "179.65", + "176.84", + "179.78", + "196.12", + "183.32", + "205.35", + "200.20", + "217.30", + "217.71", + "237.47", + "235.99", + "258.49", + "257.47", + "272.16", + "273.45", + "282.60", + "301.02", + "287.93", + "308.93", + "322.17", + "332.15", + "318.77", + "336.38", + "338.94", + "353.59", + "359.99", + "347.60", + "366.19", + "360.66", + "337.59", + "342.77", + "356.48", + "326.33", + "321.95", + "302.29", + "301.88", + "295.28", + "275.04", + "284.78", + "265.58", + "275.22", + "263.04", + "259.51", + "259.19", + "266.52", + "264.58", + "296.02", + "281.02", + "291.48", + "303.96", + "340.88", + "346.21", + "379.21", + "407.84", + "438.58", + "470.79", + "468.42", + "502.74", + "517.62", + "550.04", + "554.97", + "516.26", + "499.55", + "481.78", + "483.97", + "431.82", + "435.62", + "360.67", + "386.23", + "350.76", + "341.48", + "304.16", + "303.80", + "289.44", + "298.35", + "288.93", + "276.05", + "289.95", + "281.47" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-16", + "weekend": false, + "load_mw": [ + "39.229", + "38.908", + "37.676", + "36.815", + "35.513", + "35.139", + "34.895", + "33.095", + "33.337", + "33.042", + "32.101", + "31.074", + "30.792", + "30.894", + "31.745", + "32.847", + "32.373", + "33.546", + "33.372", + "34.390", + "35.438", + "36.696", + "38.592", + "37.768", + "39.679", + "41.073", + "42.451", + "44.544", + "44.716", + "45.381", + "46.666", + "46.221", + "47.891", + "49.729", + "52.085", + "53.895", + "54.884", + "58.719", + "58.612", + "60.700", + "62.561", + "61.176", + "63.060", + "65.672", + "63.694", + "63.102", + "62.639", + "59.811", + "60.266", + "59.158", + "57.675", + "57.388", + "55.858", + "56.183", + "52.249", + "50.767", + "47.872", + "49.834", + "47.607", + "48.084", + "46.525", + "48.051", + "46.650", + "47.680", + "49.033", + "47.440", + "49.434", + "52.045", + "53.250", + "54.834", + "57.435", + "60.767", + "63.802", + "65.840", + "67.285", + "70.559", + "70.547", + "68.374", + "72.017", + "71.616", + "70.668", + "69.414", + "67.016", + "64.705", + "61.511", + "59.959", + "56.374", + "57.092", + "53.980", + "51.865", + "49.266", + "48.618", + "48.107", + "46.796", + "46.567", + "43.762" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.473", + "1.093", + "2.152", + "3.001", + "4.285", + "5.539", + "6.485", + "7.119", + "9.381", + "10.453", + "11.486", + "12.394", + "13.840", + "14.317", + "16.746", + "15.674", + "18.225", + "18.821", + "21.114", + "21.093", + "19.042", + "21.350", + "21.446", + "23.374", + "21.531", + "21.567", + "21.887", + "20.898", + "20.519", + "21.220", + "19.889", + "19.796", + "18.117", + "15.685", + "17.209", + "15.003", + "14.895", + "12.721", + "11.105", + "10.284", + "8.707", + "7.876", + "6.857", + "5.139", + "4.179", + "3.190", + "1.998", + "1.236", + "0.445", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "224.25", + "247.27", + "215.35", + "221.61", + "215.78", + "197.02", + "196.62", + "180.91", + "179.99", + "170.55", + "167.72", + "168.16", + "150.76", + "157.42", + "163.57", + "163.13", + "164.12", + "171.34", + "172.64", + "178.51", + "182.55", + "190.78", + "202.84", + "204.79", + "209.27", + "216.28", + "244.09", + "231.18", + "245.30", + "256.12", + "265.37", + "259.16", + "267.88", + "295.37", + "314.35", + "288.36", + "317.32", + "311.02", + "337.65", + "356.03", + "349.81", + "354.09", + "366.87", + "362.96", + "367.15", + "356.52", + "335.11", + "358.57", + "346.72", + "323.45", + "326.09", + "328.00", + "307.62", + "300.63", + "301.52", + "281.17", + "276.18", + "278.39", + "269.84", + "279.07", + "258.99", + "267.68", + "249.27", + "271.22", + "283.19", + "295.46", + "296.73", + "332.45", + "346.14", + "391.79", + "403.96", + "447.00", + "463.29", + "467.97", + "490.43", + "517.30", + "506.44", + "501.16", + "534.87", + "475.30", + "476.12", + "453.79", + "433.96", + "414.28", + "383.94", + "363.10", + "351.21", + "317.20", + "319.49", + "313.58", + "288.04", + "304.42", + "295.66", + "284.40", + "278.79", + "277.53" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-17", + "weekend": false, + "load_mw": [ + "39.648", + "38.461", + "37.189", + "37.079", + "36.603", + "35.732", + "33.855", + "34.111", + "33.377", + "32.179", + "33.391", + "31.894", + "30.859", + "32.814", + "32.591", + "32.815", + "33.044", + "33.623", + "34.141", + "36.190", + "37.023", + "37.355", + "38.984", + "39.033", + "40.486", + "41.078", + "41.721", + "43.720", + "45.465", + "46.811", + "46.374", + "46.619", + "49.499", + "50.247", + "52.756", + "52.851", + "55.712", + "57.334", + "58.932", + "61.759", + "62.402", + "62.871", + "62.993", + "64.071", + "63.874", + "61.271", + "63.403", + "61.602", + "61.842", + "61.642", + "62.799", + "56.757", + "53.493", + "53.103", + "52.260", + "51.969", + "50.225", + "49.629", + "48.023", + "49.390", + "46.437", + "45.167", + "46.968", + "49.216", + "47.546", + "49.531", + "49.814", + "53.487", + "54.777", + "58.954", + "59.434", + "61.253", + "64.142", + "65.893", + "64.957", + "67.993", + "70.377", + "73.860", + "75.149", + "72.446", + "72.378", + "68.285", + "68.075", + "64.553", + "66.010", + "61.514", + "58.631", + "55.207", + "53.307", + "51.680", + "50.406", + "49.259", + "48.193", + "45.923", + "47.025", + "46.020" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.466", + "1.230", + "2.263", + "3.036", + "4.257", + "5.403", + "6.982", + "8.141", + "8.930", + "9.670", + "11.903", + "13.611", + "13.024", + "14.520", + "15.913", + "18.933", + "18.826", + "19.165", + "19.587", + "19.424", + "19.959", + "20.861", + "21.943", + "21.877", + "21.206", + "22.007", + "22.503", + "19.509", + "20.396", + "21.359", + "19.840", + "18.086", + "17.503", + "16.712", + "16.635", + "15.166", + "14.539", + "12.746", + "12.116", + "10.830", + "8.802", + "7.597", + "6.994", + "5.610", + "3.966", + "3.170", + "2.116", + "1.161", + "0.459", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "232.45", + "220.51", + "218.14", + "213.22", + "209.37", + "215.95", + "192.21", + "186.27", + "181.03", + "164.88", + "173.79", + "164.99", + "155.37", + "162.10", + "166.19", + "155.78", + "160.00", + "165.30", + "171.64", + "180.97", + "193.22", + "193.60", + "190.81", + "198.49", + "219.60", + "220.99", + "223.53", + "225.22", + "258.11", + "249.49", + "257.41", + "270.65", + "275.77", + "287.72", + "286.98", + "295.01", + "305.60", + "332.85", + "328.34", + "348.95", + "350.78", + "357.00", + "359.81", + "345.08", + "355.52", + "343.73", + "339.31", + "343.96", + "356.53", + "320.37", + "337.36", + "311.64", + "296.67", + "296.72", + "279.74", + "274.74", + "275.35", + "272.64", + "265.61", + "269.14", + "262.40", + "259.64", + "272.15", + "279.00", + "276.86", + "307.95", + "297.27", + "327.08", + "372.89", + "377.27", + "403.36", + "436.04", + "482.44", + "486.23", + "507.95", + "502.92", + "509.31", + "523.16", + "515.10", + "505.18", + "479.21", + "448.39", + "430.69", + "411.19", + "393.25", + "359.95", + "344.40", + "338.87", + "320.83", + "306.03", + "300.39", + "315.96", + "289.42", + "274.34", + "296.64", + "286.32" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-18", + "weekend": true, + "load_mw": [ + "30.835", + "31.039", + "29.195", + "29.687", + "28.432", + "27.773", + "27.693", + "26.235", + "26.836", + "25.756", + "24.923", + "24.883", + "25.089", + "24.953", + "24.632", + "24.784", + "26.841", + "26.575", + "27.230", + "28.290", + "29.174", + "29.643", + "28.570", + "31.618", + "31.120", + "32.828", + "33.499", + "35.084", + "35.376", + "35.379", + "37.531", + "38.411", + "39.291", + "41.881", + "42.477", + "43.046", + "44.763", + "44.841", + "45.862", + "48.746", + "49.121", + "48.978", + "50.630", + "50.739", + "50.799", + "48.888", + "50.933", + "49.931", + "49.559", + "48.159", + "46.944", + "45.098", + "45.090", + "42.110", + "39.588", + "40.712", + "38.816", + "38.420", + "38.424", + "36.824", + "37.605", + "38.208", + "37.685", + "36.672", + "39.729", + "39.991", + "38.815", + "39.437", + "42.060", + "45.041", + "47.016", + "49.763", + "51.572", + "50.725", + "54.726", + "55.762", + "56.958", + "58.269", + "56.146", + "54.388", + "56.081", + "53.827", + "54.770", + "52.828", + "49.760", + "47.765", + "46.330", + "44.934", + "41.952", + "41.273", + "39.476", + "38.999", + "37.656", + "37.190", + "35.993", + "36.408" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.490", + "1.180", + "2.106", + "3.114", + "4.260", + "5.676", + "6.740", + "7.882", + "8.548", + "11.621", + "10.598", + "12.498", + "14.881", + "15.489", + "16.118", + "16.742", + "18.092", + "18.464", + "22.289", + "19.415", + "21.345", + "24.354", + "22.534", + "21.664", + "22.450", + "22.438", + "23.888", + "21.218", + "20.596", + "21.565", + "20.549", + "19.389", + "17.880", + "18.918", + "16.044", + "14.619", + "13.978", + "13.953", + "11.282", + "10.386", + "9.306", + "7.010", + "6.822", + "5.755", + "4.490", + "3.255", + "1.986", + "1.225", + "0.486", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "233.83", + "239.53", + "226.35", + "218.16", + "215.72", + "219.00", + "206.17", + "198.87", + "187.56", + "180.10", + "166.28", + "171.89", + "176.72", + "165.24", + "165.69", + "168.69", + "159.29", + "176.97", + "180.62", + "178.49", + "190.41", + "196.20", + "196.30", + "212.02", + "205.58", + "235.08", + "227.34", + "251.81", + "236.38", + "254.86", + "260.86", + "268.07", + "283.88", + "286.27", + "289.14", + "298.26", + "300.51", + "328.80", + "313.17", + "340.33", + "353.54", + "347.58", + "348.22", + "340.21", + "353.00", + "329.82", + "351.43", + "338.86", + "337.16", + "340.32", + "326.92", + "316.39", + "299.68", + "282.17", + "294.57", + "298.06", + "268.49", + "275.28", + "260.91", + "276.55", + "258.37", + "272.08", + "273.04", + "273.30", + "297.10", + "307.46", + "293.35", + "337.44", + "337.04", + "384.45", + "392.56", + "448.42", + "463.33", + "474.61", + "505.96", + "521.94", + "513.88", + "489.59", + "511.36", + "491.65", + "491.09", + "451.59", + "412.88", + "408.37", + "377.70", + "355.16", + "349.31", + "320.01", + "325.62", + "305.11", + "311.47", + "295.13", + "284.76", + "287.49", + "276.24", + "295.79" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-19", + "weekend": true, + "load_mw": [ + "32.499", + "32.785", + "30.637", + "30.594", + "29.681", + "29.380", + "28.732", + "28.585", + "27.945", + "26.114", + "27.435", + "26.861", + "26.306", + "26.229", + "26.751", + "26.819", + "27.447", + "28.823", + "28.474", + "28.918", + "29.852", + "30.579", + "33.198", + "32.921", + "32.756", + "34.281", + "36.556", + "35.298", + "38.437", + "38.100", + "38.464", + "38.983", + "41.928", + "42.023", + "42.467", + "44.853", + "45.626", + "48.164", + "49.469", + "50.316", + "53.117", + "52.179", + "51.375", + "53.944", + "54.377", + "53.492", + "52.247", + "51.149", + "51.582", + "50.575", + "50.670", + "49.496", + "47.788", + "43.659", + "43.676", + "43.822", + "43.060", + "42.155", + "40.140", + "39.756", + "40.227", + "38.845", + "39.219", + "40.284", + "39.343", + "42.789", + "42.778", + "44.414", + "45.106", + "47.819", + "48.208", + "49.907", + "51.830", + "53.038", + "54.852", + "57.977", + "59.515", + "59.595", + "60.770", + "58.748", + "60.271", + "59.350", + "55.169", + "55.437", + "52.690", + "49.993", + "50.446", + "48.279", + "45.340", + "43.929", + "42.037", + "40.601", + "38.178", + "39.602", + "38.813", + "38.228" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.465", + "1.240", + "2.277", + "3.297", + "4.345", + "5.900", + "6.881", + "7.096", + "9.523", + "10.879", + "11.708", + "12.736", + "14.335", + "15.837", + "17.676", + "18.294", + "19.416", + "22.225", + "20.236", + "21.407", + "19.226", + "22.188", + "22.540", + "22.863", + "24.252", + "22.726", + "23.814", + "25.312", + "20.653", + "23.246", + "20.407", + "21.849", + "18.991", + "20.224", + "17.066", + "15.626", + "14.772", + "13.998", + "12.341", + "10.978", + "9.314", + "8.195", + "6.728", + "5.815", + "4.490", + "3.023", + "2.079", + "1.279", + "0.449", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "242.28", + "237.09", + "226.85", + "212.82", + "212.32", + "208.23", + "192.68", + "189.23", + "181.44", + "174.38", + "184.30", + "174.72", + "164.79", + "172.82", + "172.88", + "167.49", + "165.77", + "170.07", + "178.60", + "185.74", + "182.73", + "197.99", + "200.22", + "205.95", + "229.44", + "219.75", + "237.61", + "234.44", + "244.06", + "281.19", + "276.59", + "279.26", + "272.70", + "283.00", + "284.47", + "310.21", + "326.95", + "348.25", + "321.62", + "346.74", + "338.79", + "355.64", + "335.37", + "354.79", + "358.77", + "364.06", + "357.82", + "345.77", + "344.66", + "332.59", + "322.29", + "307.33", + "292.36", + "294.62", + "276.07", + "289.27", + "272.89", + "273.92", + "271.05", + "264.40", + "258.76", + "272.42", + "269.01", + "284.84", + "277.62", + "307.46", + "314.63", + "339.63", + "365.94", + "382.74", + "420.03", + "449.74", + "450.71", + "501.17", + "509.84", + "518.49", + "520.02", + "514.39", + "525.55", + "496.84", + "466.63", + "454.37", + "420.86", + "400.26", + "362.59", + "353.51", + "350.21", + "337.19", + "312.64", + "304.62", + "283.04", + "308.18", + "287.87", + "279.35", + "292.58", + "289.10" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-20", + "weekend": false, + "load_mw": [ + "38.966", + "38.276", + "36.697", + "37.896", + "35.333", + "33.744", + "35.145", + "32.441", + "31.643", + "31.155", + "31.058", + "30.553", + "30.747", + "30.999", + "32.225", + "30.533", + "32.706", + "33.320", + "33.454", + "35.524", + "35.973", + "36.726", + "36.942", + "37.232", + "38.967", + "40.946", + "40.261", + "42.027", + "43.421", + "43.581", + "45.212", + "47.279", + "49.047", + "49.729", + "51.923", + "51.951", + "56.195", + "56.672", + "58.021", + "60.233", + "61.011", + "57.475", + "60.739", + "61.140", + "61.453", + "61.677", + "59.707", + "61.471", + "60.717", + "57.986", + "57.914", + "55.457", + "55.623", + "54.887", + "53.080", + "50.118", + "49.910", + "49.227", + "48.037", + "45.877", + "46.678", + "46.166", + "45.765", + "46.639", + "46.781", + "48.020", + "50.349", + "52.016", + "53.088", + "55.150", + "56.195", + "60.544", + "62.843", + "65.688", + "66.196", + "68.774", + "69.633", + "70.356", + "73.222", + "69.150", + "67.884", + "69.549", + "65.777", + "62.288", + "62.297", + "58.729", + "55.815", + "54.806", + "52.608", + "49.233", + "49.295", + "46.099", + "46.725", + "45.862", + "44.407", + "44.246" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.447", + "1.150", + "2.131", + "3.389", + "4.184", + "4.956", + "6.638", + "7.986", + "9.427", + "10.718", + "11.534", + "13.813", + "12.147", + "15.245", + "15.685", + "19.078", + "17.192", + "18.391", + "18.442", + "20.031", + "20.130", + "21.448", + "20.249", + "22.529", + "20.135", + "22.471", + "21.595", + "21.592", + "20.437", + "19.940", + "17.703", + "16.597", + "18.714", + "17.540", + "15.805", + "14.676", + "14.198", + "12.566", + "10.982", + "10.377", + "9.232", + "8.024", + "6.749", + "5.948", + "4.239", + "3.168", + "2.084", + "1.121", + "0.442", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.28", + "213.80", + "222.10", + "214.10", + "212.57", + "194.97", + "187.59", + "189.58", + "177.98", + "167.61", + "164.24", + "164.89", + "162.16", + "153.34", + "162.11", + "163.66", + "165.08", + "169.74", + "166.54", + "176.33", + "181.36", + "189.20", + "198.77", + "212.12", + "224.37", + "221.06", + "231.07", + "240.60", + "261.30", + "262.80", + "254.32", + "253.55", + "282.83", + "300.05", + "292.17", + "308.84", + "303.00", + "321.27", + "339.31", + "340.15", + "341.98", + "351.95", + "356.18", + "376.24", + "366.95", + "365.58", + "361.22", + "346.94", + "346.62", + "346.82", + "324.98", + "314.02", + "308.18", + "292.95", + "289.20", + "271.47", + "284.33", + "284.70", + "279.91", + "266.38", + "263.09", + "266.74", + "278.19", + "300.42", + "279.47", + "300.75", + "313.03", + "332.39", + "349.80", + "377.16", + "406.10", + "452.83", + "443.04", + "494.35", + "504.12", + "513.70", + "537.02", + "519.96", + "491.83", + "485.36", + "473.19", + "474.13", + "429.60", + "402.35", + "378.47", + "346.03", + "358.22", + "344.43", + "312.37", + "286.08", + "301.16", + "292.38", + "296.02", + "281.30", + "276.34", + "286.26" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-21", + "weekend": false, + "load_mw": [ + "35.143", + "35.493", + "33.715", + "33.217", + "31.567", + "31.384", + "31.385", + "30.434", + "29.415", + "29.000", + "29.011", + "28.247", + "28.596", + "28.889", + "29.730", + "28.629", + "30.345", + "29.131", + "30.456", + "32.152", + "33.039", + "33.370", + "33.928", + "36.054", + "35.631", + "36.099", + "38.281", + "37.820", + "39.183", + "40.763", + "42.699", + "42.112", + "45.125", + "45.951", + "46.974", + "47.697", + "50.907", + "52.169", + "51.606", + "53.195", + "54.236", + "57.155", + "56.683", + "57.806", + "56.711", + "57.603", + "58.379", + "56.192", + "56.558", + "53.111", + "52.730", + "52.411", + "50.518", + "49.218", + "48.263", + "44.834", + "43.050", + "44.064", + "43.095", + "42.709", + "42.069", + "44.966", + "43.099", + "42.040", + "44.390", + "44.272", + "43.868", + "47.537", + "49.546", + "51.151", + "53.443", + "53.326", + "56.527", + "58.292", + "61.329", + "64.313", + "64.375", + "66.260", + "63.175", + "63.263", + "62.584", + "64.171", + "59.982", + "58.977", + "57.270", + "55.947", + "53.642", + "49.293", + "47.534", + "46.696", + "45.012", + "44.690", + "43.258", + "42.234", + "41.263", + "40.368" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.335", + "0.959", + "1.549", + "2.456", + "3.231", + "4.223", + "5.484", + "5.897", + "7.152", + "7.154", + "8.847", + "9.392", + "10.547", + "12.418", + "11.946", + "13.944", + "14.790", + "15.606", + "14.807", + "17.168", + "15.985", + "15.496", + "17.871", + "15.881", + "16.022", + "16.617", + "16.244", + "15.961", + "16.266", + "15.418", + "15.280", + "14.976", + "13.384", + "13.633", + "12.302", + "12.586", + "10.685", + "9.869", + "8.957", + "6.984", + "7.239", + "6.212", + "5.083", + "4.019", + "3.271", + "2.300", + "1.594", + "0.875", + "0.368", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.42", + "220.93", + "218.22", + "207.30", + "205.86", + "200.11", + "201.14", + "176.32", + "174.08", + "167.89", + "159.88", + "160.34", + "160.84", + "155.38", + "164.79", + "160.26", + "163.48", + "162.97", + "176.13", + "181.83", + "181.85", + "195.87", + "197.23", + "204.83", + "218.62", + "217.03", + "230.36", + "239.54", + "259.62", + "245.55", + "255.77", + "264.18", + "289.75", + "284.83", + "308.03", + "293.30", + "314.76", + "323.11", + "347.97", + "368.81", + "345.47", + "332.32", + "360.99", + "359.55", + "376.96", + "385.87", + "359.14", + "345.93", + "367.47", + "333.19", + "326.36", + "321.57", + "312.23", + "306.06", + "295.47", + "270.79", + "271.47", + "277.93", + "269.10", + "279.83", + "253.19", + "263.66", + "263.46", + "278.55", + "282.27", + "300.83", + "313.32", + "345.77", + "362.21", + "387.10", + "415.33", + "445.28", + "445.41", + "500.82", + "498.61", + "492.74", + "549.68", + "514.69", + "506.92", + "483.39", + "456.48", + "461.09", + "414.57", + "416.88", + "369.63", + "353.43", + "348.00", + "312.26", + "311.76", + "306.53", + "290.78", + "293.14", + "273.16", + "291.40", + "285.57", + "280.70" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-22", + "weekend": false, + "load_mw": [ + "36.232", + "37.016", + "34.380", + "35.533", + "34.849", + "33.892", + "31.997", + "32.076", + "30.570", + "31.531", + "29.623", + "30.389", + "29.255", + "29.657", + "30.502", + "30.854", + "31.816", + "31.703", + "32.227", + "32.454", + "34.320", + "35.646", + "35.814", + "36.408", + "38.287", + "40.044", + "37.703", + "41.225", + "41.597", + "42.246", + "43.314", + "42.902", + "47.677", + "48.358", + "50.253", + "51.947", + "52.579", + "54.179", + "56.744", + "56.134", + "58.055", + "56.714", + "56.876", + "58.366", + "61.793", + "58.430", + "59.330", + "59.247", + "58.742", + "56.745", + "54.663", + "54.476", + "51.982", + "50.218", + "50.668", + "48.306", + "45.618", + "47.303", + "47.072", + "45.248", + "44.551", + "44.302", + "43.632", + "46.982", + "47.351", + "45.589", + "48.838", + "50.198", + "50.781", + "50.601", + "55.969", + "56.289", + "59.408", + "61.195", + "64.086", + "65.251", + "65.961", + "68.251", + "67.048", + "67.867", + "68.086", + "64.821", + "64.771", + "61.581", + "58.382", + "58.687", + "55.425", + "53.438", + "51.764", + "48.922", + "48.083", + "47.683", + "45.045", + "43.007", + "43.928", + "42.541" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.325", + "0.790", + "1.646", + "2.226", + "3.290", + "3.837", + "5.304", + "6.004", + "6.173", + "7.597", + "8.578", + "9.034", + "11.207", + "11.210", + "12.947", + "13.161", + "13.165", + "15.321", + "13.959", + "15.706", + "15.501", + "14.552", + "15.834", + "16.858", + "16.056", + "15.240", + "15.255", + "14.733", + "15.320", + "15.707", + "15.142", + "13.644", + "14.118", + "12.677", + "11.622", + "10.487", + "10.125", + "9.553", + "7.586", + "7.356", + "6.237", + "5.602", + "4.597", + "4.261", + "3.374", + "2.471", + "1.571", + "0.797", + "0.346", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.00", + "223.37", + "209.37", + "219.28", + "211.80", + "196.92", + "179.70", + "180.35", + "176.54", + "175.51", + "159.99", + "169.46", + "159.66", + "157.01", + "159.70", + "158.77", + "169.32", + "158.98", + "164.12", + "170.71", + "182.91", + "192.38", + "199.38", + "194.16", + "220.91", + "227.86", + "226.14", + "228.15", + "253.35", + "258.24", + "263.45", + "267.77", + "274.77", + "290.24", + "286.06", + "324.20", + "302.41", + "321.52", + "348.02", + "342.39", + "357.38", + "342.91", + "320.62", + "357.89", + "367.44", + "359.04", + "352.70", + "367.87", + "362.69", + "353.35", + "318.18", + "326.48", + "304.54", + "300.60", + "304.18", + "281.03", + "274.89", + "264.58", + "275.98", + "270.19", + "261.95", + "276.81", + "256.16", + "298.47", + "308.95", + "301.29", + "323.20", + "348.80", + "340.95", + "381.95", + "388.10", + "423.58", + "455.01", + "472.70", + "516.15", + "506.08", + "516.39", + "515.75", + "483.65", + "492.83", + "507.63", + "474.31", + "408.21", + "406.14", + "368.18", + "364.52", + "340.34", + "322.95", + "325.52", + "305.03", + "301.68", + "301.20", + "287.51", + "275.74", + "285.71", + "288.67" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-23", + "weekend": false, + "load_mw": [ + "35.686", + "35.857", + "34.420", + "32.944", + "32.953", + "32.396", + "31.570", + "31.378", + "29.474", + "30.811", + "29.569", + "29.298", + "28.481", + "29.561", + "30.155", + "29.034", + "29.375", + "31.027", + "31.821", + "33.038", + "33.600", + "34.637", + "35.390", + "36.008", + "37.475", + "37.056", + "38.148", + "40.749", + "40.037", + "41.740", + "43.853", + "43.832", + "44.828", + "48.779", + "49.202", + "49.321", + "52.184", + "51.687", + "54.860", + "54.703", + "56.867", + "59.954", + "59.612", + "59.096", + "56.701", + "56.719", + "57.039", + "58.950", + "57.542", + "55.328", + "54.432", + "52.908", + "49.039", + "50.647", + "48.211", + "46.421", + "47.777", + "45.637", + "43.238", + "45.022", + "43.186", + "41.992", + "42.883", + "43.520", + "43.901", + "43.766", + "44.447", + "47.976", + "49.243", + "52.006", + "52.756", + "57.776", + "60.369", + "57.992", + "62.020", + "63.207", + "64.119", + "64.422", + "65.109", + "67.679", + "64.917", + "64.220", + "63.763", + "59.465", + "59.957", + "55.658", + "54.382", + "51.991", + "49.308", + "48.926", + "46.790", + "44.337", + "44.264", + "42.010", + "41.134", + "42.526" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.367", + "0.867", + "1.596", + "2.332", + "3.049", + "4.372", + "5.537", + "6.281", + "6.804", + "8.448", + "9.708", + "9.692", + "10.338", + "12.402", + "12.235", + "14.442", + "14.189", + "14.342", + "16.534", + "15.412", + "16.425", + "15.916", + "16.573", + "17.882", + "16.950", + "17.823", + "14.788", + "16.190", + "16.437", + "15.328", + "15.837", + "14.356", + "13.994", + "13.517", + "13.228", + "12.077", + "10.543", + "9.731", + "9.138", + "7.948", + "7.199", + "6.007", + "5.215", + "3.961", + "3.202", + "2.412", + "1.590", + "0.883", + "0.343", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "231.74", + "229.14", + "215.32", + "213.29", + "208.89", + "186.22", + "193.01", + "184.16", + "183.37", + "174.71", + "164.33", + "156.58", + "169.50", + "160.54", + "159.11", + "154.69", + "164.71", + "165.94", + "168.53", + "184.15", + "186.20", + "202.48", + "187.90", + "215.49", + "216.36", + "220.53", + "230.80", + "237.69", + "256.69", + "249.36", + "265.80", + "264.18", + "271.27", + "289.80", + "291.98", + "288.51", + "316.84", + "331.08", + "322.96", + "353.22", + "335.31", + "351.70", + "385.47", + "379.09", + "348.95", + "366.21", + "376.76", + "358.12", + "359.51", + "323.66", + "326.45", + "319.69", + "315.65", + "306.12", + "294.81", + "269.39", + "263.01", + "281.58", + "267.41", + "270.39", + "275.38", + "274.36", + "270.60", + "287.58", + "291.52", + "290.40", + "321.90", + "335.13", + "368.00", + "385.29", + "407.47", + "428.43", + "433.45", + "488.24", + "525.81", + "506.54", + "516.60", + "511.08", + "522.23", + "494.72", + "486.92", + "462.37", + "423.18", + "425.70", + "389.24", + "368.90", + "353.42", + "332.15", + "313.08", + "315.05", + "297.44", + "277.44", + "283.53", + "277.13", + "258.70", + "280.44" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-24", + "weekend": false, + "load_mw": [ + "34.303", + "33.848", + "33.039", + "32.536", + "30.999", + "31.114", + "30.582", + "29.899", + "30.000", + "27.836", + "28.196", + "28.280", + "27.992", + "27.700", + "28.821", + "30.438", + "28.917", + "29.937", + "30.542", + "30.491", + "31.796", + "34.031", + "33.068", + "33.142", + "34.633", + "35.596", + "36.849", + "38.061", + "37.821", + "40.857", + "41.049", + "43.168", + "42.708", + "45.519", + "47.049", + "46.080", + "48.909", + "50.442", + "51.438", + "53.471", + "54.229", + "55.717", + "55.475", + "56.687", + "57.580", + "55.447", + "57.895", + "55.712", + "54.376", + "52.888", + "49.681", + "49.453", + "48.715", + "47.447", + "47.605", + "45.239", + "41.867", + "44.221", + "43.712", + "42.196", + "42.082", + "41.011", + "42.011", + "44.652", + "42.965", + "43.958", + "45.043", + "45.977", + "47.724", + "48.190", + "50.330", + "53.348", + "52.842", + "57.835", + "59.306", + "59.341", + "65.024", + "64.551", + "62.690", + "63.341", + "64.297", + "62.500", + "61.362", + "58.324", + "54.421", + "52.459", + "51.198", + "49.993", + "48.198", + "46.582", + "44.345", + "43.320", + "42.759", + "40.160", + "40.549", + "39.640" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.411", + "1.003", + "1.973", + "2.855", + "3.613", + "4.622", + "5.435", + "6.402", + "8.356", + "9.898", + "10.399", + "11.686", + "12.412", + "12.688", + "14.746", + "16.015", + "15.815", + "16.586", + "17.577", + "19.521", + "16.758", + "18.202", + "18.463", + "19.673", + "18.535", + "19.935", + "17.748", + "18.565", + "18.667", + "19.006", + "16.510", + "16.087", + "15.984", + "14.220", + "14.930", + "11.277", + "11.149", + "11.916", + "9.739", + "8.623", + "8.149", + "6.867", + "5.878", + "4.831", + "3.765", + "2.654", + "2.069", + "1.098", + "0.411", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "234.84", + "239.16", + "216.13", + "214.82", + "207.80", + "208.34", + "196.99", + "184.36", + "186.08", + "178.44", + "169.51", + "170.85", + "167.64", + "159.23", + "167.45", + "165.63", + "165.70", + "161.48", + "177.65", + "177.83", + "189.55", + "194.52", + "196.96", + "211.17", + "212.75", + "225.27", + "221.98", + "234.73", + "233.99", + "254.79", + "264.46", + "260.21", + "288.47", + "290.19", + "294.70", + "305.47", + "294.86", + "319.51", + "326.42", + "341.35", + "354.19", + "359.41", + "365.16", + "366.59", + "348.44", + "365.24", + "345.73", + "366.73", + "334.51", + "328.52", + "315.79", + "324.80", + "296.91", + "289.15", + "291.31", + "273.95", + "280.41", + "282.05", + "266.50", + "273.58", + "281.40", + "270.50", + "265.15", + "287.35", + "284.12", + "298.32", + "332.22", + "341.98", + "376.83", + "371.46", + "395.95", + "443.74", + "450.64", + "471.86", + "514.45", + "486.15", + "518.66", + "505.76", + "518.57", + "511.83", + "476.37", + "454.98", + "440.12", + "406.23", + "391.41", + "331.54", + "350.63", + "331.37", + "321.02", + "312.53", + "296.86", + "281.94", + "290.40", + "295.53", + "283.67", + "275.19" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-25", + "weekend": true, + "load_mw": [ + "32.727", + "31.574", + "30.177", + "29.896", + "28.736", + "28.976", + "28.315", + "28.275", + "27.176", + "25.650", + "24.759", + "26.012", + "25.987", + "26.218", + "25.982", + "26.997", + "27.363", + "27.211", + "27.561", + "28.271", + "29.832", + "28.916", + "30.072", + "30.813", + "32.461", + "33.191", + "34.746", + "34.048", + "34.909", + "37.104", + "37.102", + "37.965", + "40.417", + "40.667", + "43.959", + "44.325", + "42.851", + "45.737", + "46.910", + "48.352", + "50.085", + "49.799", + "49.364", + "50.851", + "51.258", + "52.328", + "51.120", + "51.368", + "51.509", + "49.745", + "48.697", + "47.778", + "45.511", + "43.758", + "43.785", + "41.815", + "41.034", + "39.084", + "38.743", + "39.142", + "38.129", + "38.955", + "37.569", + "38.114", + "39.709", + "40.629", + "41.914", + "40.774", + "43.774", + "44.708", + "47.877", + "49.774", + "48.707", + "53.238", + "53.933", + "56.819", + "57.940", + "57.946", + "57.021", + "57.148", + "55.473", + "56.248", + "52.542", + "52.357", + "52.854", + "49.200", + "46.548", + "45.110", + "44.425", + "41.435", + "40.690", + "38.267", + "38.788", + "38.350", + "37.489", + "37.028" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.459", + "1.139", + "2.148", + "3.166", + "4.345", + "5.479", + "6.623", + "7.988", + "9.079", + "10.539", + "12.091", + "12.338", + "13.909", + "15.744", + "17.248", + "15.959", + "18.662", + "19.270", + "21.934", + "18.624", + "20.864", + "23.013", + "20.799", + "21.755", + "22.590", + "23.233", + "22.110", + "20.559", + "19.299", + "22.044", + "22.349", + "19.018", + "18.957", + "17.353", + "16.225", + "14.562", + "14.230", + "13.333", + "11.868", + "10.315", + "8.435", + "8.352", + "6.368", + "6.066", + "4.288", + "2.934", + "2.135", + "1.168", + "0.461", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "240.48", + "227.60", + "231.35", + "221.75", + "209.82", + "206.93", + "206.36", + "196.42", + "184.04", + "172.92", + "168.55", + "170.19", + "161.44", + "161.97", + "170.68", + "164.50", + "168.07", + "165.73", + "177.03", + "183.04", + "192.64", + "186.17", + "199.97", + "213.44", + "214.82", + "225.07", + "250.98", + "247.49", + "252.24", + "246.67", + "255.36", + "272.89", + "268.64", + "292.47", + "298.88", + "297.91", + "314.83", + "328.79", + "324.25", + "329.45", + "347.03", + "344.81", + "362.83", + "353.56", + "339.15", + "349.87", + "365.89", + "351.05", + "331.20", + "308.12", + "329.70", + "300.15", + "289.79", + "284.41", + "284.06", + "269.43", + "268.18", + "276.59", + "270.78", + "264.57", + "259.71", + "268.65", + "286.94", + "281.44", + "274.70", + "319.51", + "328.94", + "349.17", + "356.35", + "384.95", + "402.00", + "442.35", + "433.03", + "495.28", + "512.48", + "542.70", + "522.96", + "536.62", + "510.04", + "495.97", + "462.50", + "438.67", + "405.73", + "414.41", + "373.17", + "364.21", + "333.36", + "320.98", + "331.70", + "306.58", + "327.17", + "281.10", + "308.66", + "286.72", + "297.31", + "271.44" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-26", + "weekend": true, + "load_mw": [ + "32.119", + "30.747", + "29.619", + "28.792", + "29.155", + "29.220", + "27.618", + "26.845", + "26.528", + "26.234", + "26.892", + "25.123", + "25.618", + "26.167", + "25.590", + "27.137", + "27.194", + "26.764", + "27.435", + "29.324", + "29.154", + "29.734", + "31.619", + "31.322", + "33.145", + "33.964", + "32.952", + "34.196", + "35.034", + "37.917", + "37.074", + "38.659", + "39.799", + "40.586", + "42.363", + "42.400", + "43.949", + "46.017", + "46.712", + "48.281", + "49.666", + "50.718", + "52.030", + "49.694", + "49.975", + "49.744", + "51.696", + "50.504", + "49.302", + "49.565", + "47.915", + "46.635", + "45.873", + "45.021", + "43.303", + "42.030", + "40.094", + "40.506", + "39.404", + "38.834", + "38.453", + "37.386", + "39.753", + "37.433", + "38.898", + "39.379", + "41.390", + "41.644", + "44.318", + "44.523", + "45.312", + "48.552", + "52.453", + "51.208", + "53.996", + "54.734", + "56.322", + "59.376", + "58.175", + "57.190", + "61.703", + "55.937", + "53.976", + "52.486", + "50.812", + "47.824", + "46.959", + "44.775", + "43.631", + "42.222", + "38.797", + "38.324", + "38.909", + "37.761", + "36.968", + "37.000" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.442", + "1.084", + "1.873", + "2.892", + "4.509", + "5.133", + "6.189", + "7.562", + "9.377", + "10.145", + "10.142", + "11.817", + "12.712", + "13.732", + "16.062", + "16.421", + "18.012", + "17.690", + "19.319", + "19.750", + "17.774", + "19.817", + "20.776", + "20.882", + "20.628", + "20.830", + "19.591", + "20.217", + "19.848", + "20.749", + "17.904", + "18.678", + "17.396", + "16.642", + "15.532", + "14.784", + "12.682", + "12.995", + "11.362", + "9.832", + "8.948", + "6.708", + "6.383", + "5.296", + "4.103", + "3.024", + "2.029", + "1.080", + "0.425", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "234.72", + "228.89", + "220.35", + "229.74", + "200.37", + "200.11", + "200.35", + "178.55", + "185.89", + "177.00", + "173.34", + "172.92", + "166.25", + "166.76", + "165.17", + "166.47", + "169.72", + "168.44", + "165.94", + "181.61", + "185.12", + "197.25", + "199.74", + "210.35", + "209.47", + "222.91", + "227.63", + "239.81", + "252.81", + "255.90", + "275.53", + "265.79", + "271.69", + "284.10", + "292.58", + "297.49", + "302.60", + "330.02", + "329.04", + "340.77", + "351.49", + "370.17", + "357.29", + "369.85", + "371.72", + "350.82", + "351.41", + "344.09", + "348.09", + "352.05", + "316.84", + "323.55", + "297.98", + "303.21", + "298.24", + "272.58", + "261.57", + "275.81", + "261.53", + "276.11", + "266.04", + "276.76", + "273.64", + "285.48", + "290.40", + "309.82", + "309.52", + "328.35", + "349.91", + "373.61", + "399.10", + "425.27", + "882.92", + "953.80", + "961.92", + "903.76", + "976.92", + "1044.54", + "927.08", + "945.29", + "939.09", + "844.40", + "789.60", + "761.12", + "703.98", + "658.70", + "663.63", + "626.00", + "324.69", + "307.95", + "310.98", + "285.25", + "298.46", + "279.92", + "283.76", + "274.57" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-27", + "weekend": false, + "load_mw": [ + "40.434", + "37.977", + "38.995", + "37.261", + "35.407", + "36.038", + "34.902", + "33.408", + "33.246", + "33.675", + "33.011", + "31.881", + "32.243", + "32.074", + "31.588", + "32.749", + "33.739", + "33.855", + "35.612", + "36.149", + "35.465", + "38.358", + "39.821", + "39.512", + "39.258", + "41.750", + "41.016", + "44.392", + "43.772", + "45.571", + "47.403", + "48.405", + "49.596", + "50.082", + "53.197", + "53.709", + "55.707", + "58.775", + "58.158", + "58.160", + "63.012", + "61.596", + "64.126", + "64.570", + "63.570", + "65.104", + "63.771", + "63.168", + "61.784", + "62.846", + "61.644", + "59.372", + "57.033", + "53.833", + "53.011", + "52.666", + "51.320", + "51.050", + "48.613", + "48.041", + "48.146", + "48.873", + "48.649", + "47.751", + "47.676", + "49.978", + "49.719", + "54.251", + "53.449", + "57.955", + "57.716", + "61.628", + "61.681", + "63.912", + "69.057", + "68.683", + "70.346", + "72.932", + "72.413", + "72.501", + "73.250", + "69.339", + "69.999", + "65.825", + "63.929", + "61.998", + "59.467", + "57.387", + "53.653", + "50.933", + "51.937", + "49.598", + "48.727", + "46.635", + "45.949", + "45.993" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.502", + "1.276", + "2.216", + "3.091", + "4.328", + "6.097", + "6.895", + "8.545", + "9.700", + "11.170", + "12.025", + "13.592", + "14.984", + "15.623", + "17.377", + "18.103", + "19.354", + "19.453", + "18.842", + "20.708", + "20.657", + "20.415", + "23.816", + "22.515", + "23.938", + "22.795", + "24.214", + "20.611", + "21.236", + "22.350", + "21.629", + "21.949", + "20.779", + "17.628", + "17.135", + "16.431", + "14.312", + "14.028", + "11.879", + "12.095", + "9.982", + "8.501", + "6.364", + "5.532", + "4.509", + "3.241", + "2.164", + "1.215", + "0.504", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "228.50", + "231.43", + "211.10", + "220.41", + "202.57", + "200.99", + "187.97", + "189.52", + "187.66", + "173.59", + "163.32", + "161.58", + "172.17", + "163.51", + "157.90", + "162.18", + "169.51", + "171.82", + "167.68", + "177.78", + "182.47", + "196.07", + "200.36", + "219.62", + "213.52", + "223.07", + "221.54", + "243.92", + "242.33", + "240.90", + "258.39", + "266.91", + "270.13", + "290.48", + "298.60", + "301.42", + "319.39", + "320.80", + "323.13", + "338.35", + "357.20", + "348.66", + "354.89", + "340.30", + "369.67", + "360.41", + "361.66", + "354.52", + "355.81", + "316.47", + "316.07", + "304.34", + "298.41", + "272.38", + "295.88", + "297.15", + "267.64", + "268.50", + "252.12", + "266.43", + "273.72", + "275.04", + "255.05", + "262.34", + "282.39", + "300.44", + "328.76", + "338.27", + "353.53", + "384.04", + "409.92", + "442.89", + "475.06", + "473.91", + "510.54", + "502.73", + "513.37", + "529.45", + "524.37", + "520.47", + "501.03", + "465.27", + "453.46", + "420.87", + "398.92", + "373.36", + "343.80", + "327.74", + "325.06", + "293.36", + "301.63", + "298.41", + "299.55", + "297.70", + "287.20", + "267.61" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-28", + "weekend": false, + "load_mw": [ + "38.776", + "38.703", + "38.471", + "37.688", + "36.740", + "37.369", + "35.399", + "35.054", + "34.304", + "32.701", + "34.324", + "33.339", + "34.154", + "33.169", + "34.278", + "34.116", + "34.063", + "33.709", + "35.891", + "37.066", + "37.084", + "38.609", + "38.859", + "41.065", + "43.043", + "42.993", + "43.412", + "44.520", + "46.467", + "46.251", + "49.277", + "51.384", + "49.978", + "52.836", + "55.261", + "55.441", + "55.180", + "59.313", + "60.397", + "61.897", + "62.462", + "65.202", + "67.946", + "65.299", + "66.192", + "65.273", + "65.868", + "65.938", + "64.237", + "62.588", + "60.298", + "59.819", + "57.541", + "57.862", + "56.580", + "53.591", + "51.659", + "50.496", + "51.525", + "51.155", + "49.439", + "49.415", + "49.360", + "48.959", + "50.541", + "51.204", + "51.817", + "55.713", + "54.990", + "60.162", + "61.400", + "62.279", + "63.472", + "67.692", + "72.270", + "72.150", + "75.305", + "75.445", + "73.953", + "74.069", + "72.544", + "73.091", + "71.823", + "66.969", + "66.639", + "63.074", + "60.567", + "58.301", + "55.952", + "52.684", + "52.301", + "50.448", + "48.801", + "49.568", + "46.784", + "48.312" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.544", + "1.218", + "2.405", + "3.267", + "4.776", + "5.747", + "7.587", + "9.164", + "10.467", + "11.395", + "12.739", + "15.867", + "16.575", + "16.710", + "18.466", + "18.429", + "19.252", + "20.618", + "22.341", + "23.621", + "24.443", + "24.145", + "25.387", + "24.236", + "25.079", + "24.652", + "25.675", + "21.229", + "21.893", + "21.284", + "21.959", + "22.499", + "19.686", + "19.637", + "19.458", + "18.456", + "15.353", + "12.990", + "11.795", + "11.996", + "11.077", + "7.537", + "7.489", + "6.096", + "4.882", + "3.619", + "2.216", + "1.311", + "0.523", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "240.76", + "225.96", + "221.12", + "215.06", + "214.03", + "207.96", + "189.70", + "186.25", + "177.00", + "181.31", + "170.16", + "159.89", + "163.45", + "155.04", + "159.04", + "157.72", + "161.28", + "169.10", + "170.70", + "177.90", + "193.57", + "194.42", + "198.17", + "198.88", + "220.04", + "228.79", + "241.63", + "234.75", + "250.82", + "263.08", + "271.26", + "284.24", + "288.41", + "285.45", + "305.78", + "305.32", + "307.07", + "327.13", + "327.98", + "344.85", + "341.24", + "341.91", + "344.79", + "348.27", + "347.59", + "371.46", + "354.62", + "345.50", + "344.22", + "325.99", + "329.26", + "302.68", + "306.68", + "299.52", + "278.94", + "285.33", + "273.82", + "280.00", + "265.35", + "266.55", + "260.77", + "263.38", + "261.67", + "285.77", + "288.08", + "291.65", + "329.32", + "334.62", + "372.28", + "363.98", + "409.69", + "465.71", + "443.11", + "504.78", + "542.97", + "523.88", + "533.07", + "526.56", + "516.01", + "549.57", + "465.79", + "498.10", + "443.85", + "422.23", + "389.92", + "358.46", + "345.54", + "340.85", + "319.52", + "305.94", + "301.32", + "294.07", + "298.45", + "287.29", + "284.29", + "281.73" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-29", + "weekend": false, + "load_mw": [ + "38.104", + "36.747", + "37.729", + "34.027", + "34.776", + "35.111", + "33.447", + "32.996", + "32.442", + "32.210", + "31.067", + "32.033", + "31.803", + "30.682", + "31.659", + "32.030", + "32.897", + "32.689", + "33.252", + "33.841", + "35.634", + "36.211", + "36.490", + "38.658", + "38.112", + "40.544", + "40.749", + "41.965", + "43.951", + "44.720", + "46.219", + "47.987", + "46.309", + "50.629", + "51.290", + "53.031", + "55.217", + "56.742", + "56.658", + "57.987", + "59.501", + "61.177", + "60.289", + "61.782", + "62.377", + "64.578", + "63.613", + "60.221", + "60.287", + "60.201", + "58.269", + "58.743", + "55.969", + "52.989", + "54.081", + "51.593", + "50.890", + "47.321", + "49.112", + "46.614", + "46.637", + "47.044", + "46.862", + "46.031", + "48.701", + "47.631", + "50.012", + "52.177", + "53.707", + "56.064", + "56.891", + "57.780", + "62.375", + "63.932", + "66.649", + "71.011", + "68.813", + "70.438", + "69.934", + "70.570", + "71.806", + "68.656", + "68.001", + "64.370", + "61.493", + "60.469", + "57.041", + "56.337", + "55.234", + "51.292", + "48.882", + "47.566", + "46.320", + "44.982", + "45.339", + "43.142" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.529", + "1.380", + "2.375", + "3.624", + "4.451", + "6.270", + "7.154", + "8.598", + "10.605", + "12.088", + "13.264", + "14.051", + "15.535", + "17.446", + "20.064", + "19.545", + "19.197", + "21.695", + "22.881", + "22.913", + "22.333", + "21.668", + "24.565", + "24.749", + "24.635", + "24.910", + "24.104", + "25.745", + "23.724", + "21.716", + "21.496", + "20.579", + "20.088", + "18.527", + "17.184", + "17.057", + "16.134", + "14.285", + "13.196", + "12.346", + "10.385", + "8.848", + "7.582", + "5.839", + "4.339", + "3.407", + "2.209", + "1.384", + "0.521", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.42", + "236.18", + "212.12", + "195.43", + "206.53", + "207.75", + "193.16", + "176.09", + "175.42", + "169.16", + "165.25", + "161.36", + "168.99", + "154.53", + "164.67", + "163.95", + "176.52", + "157.64", + "166.58", + "174.88", + "180.43", + "182.97", + "208.48", + "207.36", + "212.63", + "217.99", + "243.85", + "236.08", + "240.75", + "258.97", + "258.45", + "268.30", + "267.95", + "301.59", + "296.38", + "291.89", + "322.37", + "324.24", + "351.88", + "346.20", + "342.63", + "356.39", + "343.23", + "374.88", + "373.93", + "369.93", + "343.34", + "338.32", + "344.93", + "327.39", + "326.27", + "309.16", + "301.13", + "294.05", + "295.62", + "288.06", + "279.64", + "267.84", + "271.25", + "257.44", + "261.35", + "276.26", + "282.91", + "274.79", + "278.29", + "305.53", + "310.82", + "330.81", + "352.64", + "410.26", + "408.09", + "433.54", + "456.17", + "477.68", + "496.26", + "559.42", + "516.44", + "534.77", + "538.61", + "504.11", + "498.08", + "467.07", + "433.48", + "413.52", + "390.29", + "377.34", + "338.75", + "341.30", + "328.67", + "315.76", + "300.00", + "289.66", + "289.76", + "281.24", + "287.23", + "280.88" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + }, + { + "date": "2026-04-30", + "weekend": false, + "load_mw": [ + "38.164", + "37.170", + "36.966", + "35.603", + "35.839", + "33.520", + "33.514", + "32.072", + "32.860", + "31.916", + "29.560", + "31.770", + "31.742", + "31.609", + "30.586", + "30.829", + "32.484", + "32.781", + "34.771", + "35.734", + "35.641", + "35.720", + "37.649", + "38.110", + "38.881", + "41.060", + "41.025", + "42.032", + "43.526", + "43.664", + "46.053", + "47.013", + "47.041", + "49.006", + "52.837", + "54.438", + "54.540", + "54.276", + "57.433", + "59.026", + "60.911", + "60.993", + "63.752", + "62.286", + "62.763", + "61.839", + "61.987", + "59.849", + "63.960", + "59.077", + "58.431", + "55.711", + "53.101", + "52.006", + "51.836", + "49.626", + "49.206", + "47.014", + "46.779", + "48.314", + "47.665", + "46.350", + "46.443", + "46.953", + "48.206", + "49.178", + "50.648", + "51.551", + "51.939", + "55.231", + "57.218", + "57.791", + "59.312", + "65.558", + "66.473", + "67.540", + "69.517", + "71.424", + "69.375", + "68.448", + "69.324", + "64.648", + "64.939", + "65.405", + "62.376", + "59.508", + "57.671", + "54.949", + "52.255", + "51.096", + "50.526", + "47.408", + "46.906", + "46.321", + "44.573", + "44.818" + ], + "pv_mw": [ + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.489", + "1.356", + "2.294", + "3.196", + "4.803", + "6.243", + "7.352", + "9.023", + "10.511", + "12.756", + "13.429", + "13.866", + "16.789", + "17.057", + "18.036", + "18.524", + "20.212", + "20.720", + "22.308", + "21.774", + "23.314", + "22.997", + "24.804", + "23.169", + "24.680", + "23.781", + "26.661", + "24.622", + "22.379", + "22.425", + "22.729", + "21.433", + "19.220", + "19.706", + "18.045", + "16.333", + "14.897", + "14.445", + "12.880", + "11.422", + "10.446", + "9.662", + "8.006", + "5.791", + "4.552", + "3.464", + "2.234", + "1.382", + "0.471", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000", + "0.000" + ], + "price_yuan_per_mwh": [ + "235.77", + "231.17", + "213.89", + "209.83", + "212.33", + "191.25", + "194.35", + "184.00", + "177.17", + "172.80", + "157.09", + "168.97", + "157.51", + "167.00", + "159.85", + "159.43", + "164.04", + "171.28", + "169.16", + "188.01", + "188.61", + "190.50", + "203.40", + "214.87", + "221.10", + "228.02", + "217.97", + "234.70", + "268.36", + "256.28", + "266.80", + "261.64", + "269.01", + "291.19", + "306.05", + "307.67", + "317.23", + "323.77", + "316.84", + "329.20", + "350.17", + "343.27", + "361.40", + "352.19", + "365.57", + "364.39", + "349.34", + "339.02", + "332.38", + "326.82", + "335.53", + "319.29", + "308.26", + "291.56", + "267.41", + "293.04", + "257.95", + "260.40", + "265.38", + "264.93", + "255.35", + "266.01", + "271.89", + "282.47", + "297.81", + "308.98", + "309.16", + "337.00", + "361.26", + "385.73", + "399.94", + "450.71", + "466.66", + "496.25", + "532.29", + "525.12", + "521.43", + "523.00", + "528.90", + "490.96", + "464.73", + "465.34", + "426.17", + "427.58", + "372.96", + "370.24", + "336.20", + "320.81", + "325.42", + "306.79", + "301.57", + "296.99", + "288.05", + "308.55", + "271.79", + "283.56" + ], + "adjustable_capacity_mw": [ + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000", + "24.000" + ] + } + ] +} diff --git a/packages/evals/package.json b/packages/evals/package.json new file mode 100644 index 0000000..774d810 --- /dev/null +++ b/packages/evals/package.json @@ -0,0 +1,24 @@ +{ + "name": "@vpp/evals", + "version": "0.1.0", + "private": true, + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "typecheck": "tsc -p tsconfig.json", + "test": "vitest run", + "eval": "tsx src/cli.ts" + }, + "dependencies": { + "@vpp/domain": "*", + "@vpp/services": "*" + }, + "devDependencies": { + "@types/node": "^26.4.1", + "tsx": "^4.19.0", + "typescript": "^5.6.0", + "vitest": "^3.0.0" + } +} diff --git a/packages/evals/reports/baselines/l2-synthetic-hubei-v0.json b/packages/evals/reports/baselines/l2-synthetic-hubei-v0.json new file mode 100644 index 0000000..35ebb40 --- /dev/null +++ b/packages/evals/reports/baselines/l2-synthetic-hubei-v0.json @@ -0,0 +1,62 @@ +{ + "layer": "L2", + "dataset": { + "name": "synthetic-hubei-v0-2026-01-01-120d", + "sha256": "3aa36eb46906233b1b311ff03a33e7d663f30ae921fc9a1f3f813ab5205c270a", + "synthetic": true + }, + "skill_versions": { + "load-forecast": "1.0.0", + "pv-forecast": "1.0.0", + "price-forecast": "1.0.0", + "bid-optimization-milp": "1.0.0", + "report-generator": "1.0.0" + }, + "config": { + "window": 28, + "holdoutFrom": 60, + "holdoutDays": 0, + "risk": { + "risk_aversion": "0.3", + "commitment_buffer_k": "0.9", + "min_block_mwh": "0.5", + "marginal_cost_yuan_per_mwh": "0" + }, + "contractShareOfSellable": "0.6", + "daMonthlyDeviationBand": "0.05" + }, + "metrics": { + "load": { + "days": 60, + "mape": 0.041, + "nrmse": null, + "coverage_p10_p90": 0.821007, + "direction_accuracy": null + }, + "pv": { + "days": 60, + "mape": null, + "nrmse": 0.040938, + "coverage_p10_p90": 0.772109, + "direction_accuracy": null + }, + "price": { + "days": 60, + "mape": 0.044013, + "nrmse": null, + "coverage_p10_p90": 0.81059, + "direction_accuracy": 0.962142 + }, + "bid": { + "days": 60, + "optimal_days": 60, + "ledger_accepted_days": 60, + "revenue_skill_yuan": 7146184.79, + "revenue_naive_yuan": 6012053.56, + "revenue_hindsight_yuan": 7154899.25, + "capture_ratio": 0.998782, + "uplift_vs_naive": 1.188643 + } + }, + "digest": "4018e32ab695422c613e211aba1392164f3bb9c30076986fdfda220fc9bba047" +} diff --git a/packages/evals/src/cli.ts b/packages/evals/src/cli.ts new file mode 100644 index 0000000..46cab84 --- /dev/null +++ b/packages/evals/src/cli.ts @@ -0,0 +1,78 @@ +/** + * `npm run eval -w @vpp/evals -- [--base-url URL] [--dataset PATH] [--check] [--write-baseline]` + * + * Runs the L2 harness against a live skill service, archives the run under + * reports/runs/ (gitignored — docs/12 §5 says archived runs live in object + * storage), and either compares it to the committed baseline (--check: exit 1 + * on any metric change) or rewrites the baseline (--write-baseline, a + * reviewed change — docs/12 §3 gates a Skill upgrade on its L2 metrics). + */ +import { mkdirSync, readFileSync, writeFileSync, existsSync } from 'node:fs' +import { fileURLToPath } from 'node:url' +import { HttpSkillClient } from './client.js' +import { loadDataset } from './dataset.js' +import { DEFAULT_CONFIG, runL2, stableJson } from './harness.js' +import type { EvalRun } from './harness.js' + +const here = fileURLToPath(new URL('.', import.meta.url)) +const args = process.argv.slice(2) +const flag = (name: string) => args.includes(name) +const opt = (name: string, dflt: string) => { + const i = args.indexOf(name) + return i >= 0 && args[i + 1] ? args[i + 1]! : dflt +} + +const baseUrl = opt('--base-url', process.env['SKILLS_BASE_URL'] ?? 'http://127.0.0.1:8000') +const datasetPath = opt('--dataset', `${here}../datasets/synthetic-hubei-v0.json`) +const baselinePath = `${here}../reports/baselines/l2-synthetic-hubei-v0.json` +const runsDir = `${here}../reports/runs/` + +const { dataset, sha256 } = loadDataset(datasetPath) +const run = await runL2(dataset, sha256, new HttpSkillClient(baseUrl), DEFAULT_CONFIG) + +mkdirSync(runsDir, { recursive: true }) +writeFileSync(`${runsDir}${run.id}.json`, JSON.stringify(run, null, 2) + '\n') + +const m = run.metrics +console.log(`L2 eval ${run.id} on ${run.dataset.name}${run.dataset.synthetic ? ' (SYNTHETIC)' : ''}`) +console.log(` load MAPE ${m.load.mape} coverage ${m.load.coverage_p10_p90}`) +console.log(` pv nRMSE ${m.pv.nrmse} coverage(daylight) ${m.pv.coverage_p10_p90}`) +console.log(` price MAPE ${m.price.mape} coverage ${m.price.coverage_p10_p90} direction ${m.price.direction_accuracy}`) +console.log( + ` bid optimal ${m.bid.optimal_days}/${m.bid.days} ledger-accepted ${m.bid.ledger_accepted_days}/${m.bid.days}` + + ` capture ${m.bid.capture_ratio} uplift-vs-naive ${m.bid.uplift_vs_naive}`, +) +console.log(` digest ${run.digest}`) + +/** Baseline = the run minus its per-run identity. */ +const baselineOf = (r: EvalRun) => { + const { id: _id, run_at: _at, per_day: _pd, ...rest } = r + return rest +} + +if (flag('--write-baseline')) { + mkdirSync(`${here}../reports/baselines/`, { recursive: true }) + writeFileSync(baselinePath, JSON.stringify(baselineOf(run), null, 2) + '\n') + console.log(`baseline written: ${baselinePath}`) +} + +if (flag('--check')) { + if (!existsSync(baselinePath)) { + console.error(`no baseline at ${baselinePath}; run with --write-baseline first`) + process.exit(2) + } + const baseline = JSON.parse(readFileSync(baselinePath, 'utf8')) as ReturnType + if (baseline.digest === run.digest) { + console.log('baseline check: identical digest — reproducible') + } else { + console.error('baseline check FAILED: run differs from committed baseline') + const a = stableJson(baseline.metrics) + const b = stableJson(run.metrics) + console.error(` baseline metrics: ${a}`) + console.error(` this run metrics: ${b}`) + for (const key of ['dataset', 'skill_versions', 'config'] as const) { + if (stableJson(baseline[key]) !== stableJson(run[key])) console.error(` ${key} differs`) + } + process.exit(1) + } +} diff --git a/packages/evals/src/client.ts b/packages/evals/src/client.ts new file mode 100644 index 0000000..72a2940 --- /dev/null +++ b/packages/evals/src/client.ts @@ -0,0 +1,75 @@ +import { + BidOptimizationRequest, + BidOptimizationResult, + ForecastBundle, + ForecastRequest, + ReportRequest, + SkillReport, +} from '@vpp/domain' +import type { ForecastKind } from '@vpp/domain' + +/** + * Typed access to the Python skill service. Both directions are validated + * against the domain schemas — the same discipline registerSkill applies in + * the runtime (docs/09 §4), minus the lineage recording the harness does not + * need. The interface exists so tests can substitute a stub. + */ +export interface SkillClient { + skills(): Promise> + forecast(kind: ForecastKind, req: ForecastRequest): Promise + optimizeBid(req: BidOptimizationRequest): Promise + report(req: ReportRequest): Promise +} + +export class SkillHttpError extends Error { + constructor( + readonly status: number, + readonly url: string, + body: string, + ) { + super(`skill call ${url} failed with HTTP ${status}: ${body.slice(0, 500)}`) + this.name = 'SkillHttpError' + } +} + +const FORECAST_PATH: Record = { + LOAD: '/v1/forecast/load', + PV: '/v1/forecast/pv', + PRICE: '/v1/forecast/price', +} + +export class HttpSkillClient implements SkillClient { + constructor(private readonly baseUrl: string) {} + + private async post(path: string, body: unknown, parse: (x: unknown) => T): Promise { + const url = `${this.baseUrl}${path}` + const res = await fetch(url, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify(body), + }) + const text = await res.text() + if (!res.ok) throw new SkillHttpError(res.status, url, text) + return parse(JSON.parse(text)) + } + + async skills() { + const res = await fetch(`${this.baseUrl}/v1/skills`) + if (!res.ok) throw new SkillHttpError(res.status, `${this.baseUrl}/v1/skills`, await res.text()) + return (await res.json()) as Array<{ id: string; version: string; endpoint: string }> + } + + forecast(kind: ForecastKind, req: ForecastRequest) { + return this.post(FORECAST_PATH[kind], ForecastRequest.parse(req), (x) => ForecastBundle.parse(x)) + } + + optimizeBid(req: BidOptimizationRequest) { + return this.post('/v1/optimize/bid', BidOptimizationRequest.parse(req), (x) => + BidOptimizationResult.parse(x), + ) + } + + report(req: ReportRequest) { + return this.post('/v1/report', ReportRequest.parse(req), (x) => SkillReport.parse(x)) + } +} diff --git a/packages/evals/src/dataset.ts b/packages/evals/src/dataset.ts new file mode 100644 index 0000000..56d4716 --- /dev/null +++ b/packages/evals/src/dataset.ts @@ -0,0 +1,52 @@ +import { createHash } from 'node:crypto' +import { readFileSync } from 'node:fs' +import type { Curve96 } from '@vpp/domain' + +/** + * Replay dataset shape (docs/12 §2 历史重放集). Today the only instance is the + * SYNTHETIC placeholder written by `python -m vpp_skills.synthetic`; a real + * replay set produced from the event log will have the same shape and a + * `meta.synthetic: false`. + */ +export interface DatasetDay { + date: string + weekend: boolean + load_mw: string[] + pv_mw: string[] + price_yuan_per_mwh: string[] + adjustable_capacity_mw: string[] +} + +export interface Dataset { + meta: { + name: string + synthetic: boolean + note: string + generator: string + generator_version: string + seed: number + interval_minutes: 15 + peak_load_mw: string + pv_capacity_mw: string + adjustable_capacity_mw: string + } + days: DatasetDay[] +} + +export interface LoadedDataset { + dataset: Dataset + sha256: string +} + +export function loadDataset(path: string): LoadedDataset { + const raw = readFileSync(path, 'utf8') + return { dataset: JSON.parse(raw) as Dataset, sha256: createHash('sha256').update(raw).digest('hex') } +} + +export const toCurve = (values: string[], date: string): Curve96 => ({ + interval_minutes: 15, + date, + values, +}) + +export const nums = (values: string[]): number[] => values.map(Number) diff --git a/packages/evals/src/harness.ts b/packages/evals/src/harness.ts new file mode 100644 index 0000000..591f830 --- /dev/null +++ b/packages/evals/src/harness.ts @@ -0,0 +1,307 @@ +import { createHash } from 'node:crypto' +import type { BidOptimizationResult, BidRiskParams, ForecastBundle, ForecastKind } from '@vpp/domain' +import { Decimal, LedgerService } from '@vpp/services' +import type { SkillClient } from './client.js' +import type { Dataset, DatasetDay } from './dataset.js' +import { nums, toCurve } from './dataset.js' +import { + coverage, + directionAccuracy, + hindsightBid, + mape, + mean, + naiveBid, + nrmse, + realisedRevenue, +} from './metrics.js' + +/** + * L2 harness (docs/12 §1 L2, §5 harness/): rolling-origin backtest over a + * replay dataset. For each held-out day it asks the skill service for the three + * forecasts and a bid, scores them against actuals, and pushes the bid through + * the real LedgerService so "MILP output respects ledger constraints" is + * checked by the component that enforces it — not by a re-implementation. + * + * Every run produces an EvalRun whose `digest` covers config, dataset hash, + * skill versions and metrics. Two runs on the same inputs must digest equal + * (reproducibility acceptance); the CLI's --check compares against the + * committed baseline. + */ +export interface HarnessConfig { + /** History days handed to each forecast call. */ + window: number + /** Index of the first held-out day (needs ≥ window history before it). */ + holdoutFrom: number + /** Number of held-out days; 0 = to the end of the dataset. */ + holdoutDays: number + risk: BidRiskParams + /** + * Share of sellable energy (k·cap·0.25·96) used as the daily contract + * position when seeding the ledger. Synthetic-set convenience, not a market + * parameter. + */ + contractShareOfSellable: string + /** Passed to LedgerService; OPEN-QUESTION A5 — placeholder until confirmed. */ + daMonthlyDeviationBand: string +} + +export const DEFAULT_CONFIG: HarnessConfig = { + window: 28, + holdoutFrom: 60, + holdoutDays: 0, + // OPEN-QUESTION B6 (commitment_buffer_k) — placeholder for harness use only. + // OPEN-QUESTION A6 (marginal_cost) — placeholder 0: offer as a price-taker. + risk: { risk_aversion: '0.3', commitment_buffer_k: '0.9', min_block_mwh: '0.5', marginal_cost_yuan_per_mwh: '0' }, + contractShareOfSellable: '0.6', + // OPEN-QUESTION A5 — placeholder, same value the services ledger tests use. + daMonthlyDeviationBand: '0.05', +} + +export interface ForecastMetrics { + days: number + mape: number | null + nrmse: number | null + coverage_p10_p90: number + direction_accuracy: number | null +} + +export interface BidMetrics { + days: number + optimal_days: number + ledger_accepted_days: number + revenue_skill_yuan: number + revenue_naive_yuan: number + revenue_hindsight_yuan: number + /** skill / hindsight — 1.0 would be perfect foresight. */ + capture_ratio: number + /** skill / naive — > 1.0 means the optimiser beats a price-taker. */ + uplift_vs_naive: number +} + +export interface DayResult { + date: string + load: { mape: number; coverage: number } + pv: { nrmse: number; coverage: number } + price: { mape: number; coverage: number; direction: number } + bid: { + status: string + ledger_accepted: boolean + energy_mwh: string + revenue_skill: number + revenue_naive: number + revenue_hindsight: number + } +} + +export interface EvalRun { + id: string + layer: 'L2' + run_at: string + dataset: { name: string; sha256: string; synthetic: boolean } + skill_versions: Record + config: HarnessConfig + metrics: { load: ForecastMetrics; pv: ForecastMetrics; price: ForecastMetrics; bid: BidMetrics } + per_day: DayResult[] + /** sha256 over everything above except id/run_at — the reproducibility key. */ + digest: string +} + +const REF = 'f'.repeat(64) + +/** Key-sorted JSON. (services' canonicalJson rejects floats by design; metrics are floats.) */ +export const stableJson = (v: unknown): string => + JSON.stringify(v, (_k, val) => + val !== null && typeof val === 'object' && !Array.isArray(val) + ? Object.fromEntries(Object.entries(val as Record).sort(([a], [b]) => (a < b ? -1 : 1))) + : val, + ) +const FIELD: Record = { + LOAD: 'load_mw', + PV: 'pv_mw', + PRICE: 'price_yuan_per_mwh', +} + +const q = (x: number, dp: number) => Number(x.toFixed(dp)) + +function bandOf(bundle: ForecastBundle) { + return { + p10: nums(bundle.quantiles.p10.values), + p50: nums(bundle.quantiles.p50.values), + p90: nums(bundle.quantiles.p90.values), + } +} + +function seedLedger(dataset: Dataset, cfg: HarnessConfig, days: DatasetDay[]): LedgerService { + const ledger = new LedgerService({ daMonthlyDeviationBand: cfg.daMonthlyDeviationBand, clock: () => '2026-01-01T00:00:00Z' }) + const k = new Decimal(cfg.risk.commitment_buffer_k) + const share = new Decimal(cfg.contractShareOfSellable) + const months = [...new Set(days.map((d) => d.date.slice(0, 7)))] + let version = 0 + for (const month of months) { + const sample = days.find((d) => d.date.startsWith(month))! + const sellable = sample.adjustable_capacity_mw + .reduce((s, v) => s.add(new Decimal(v)), new Decimal(0)) + .mul(k) + .mul('0.25') + const daysInMonth = new Date(Date.UTC(Number(month.slice(0, 4)), Number(month.slice(5, 7)), 0)).getUTCDate() + ledger.append({ + id: `contract-${month}`, + timescale: 'MONTHLY', + period: month, + kind: 'CONTRACT', + energy_mwh: sellable.mul(share).mul(daysInMonth).toFixed(3), + curve: null, + source_ref: `synthetic-contract-${month}`, + expected_version: version++, + }) + } + void dataset + return ledger +} + +export async function runL2( + dataset: Dataset, + datasetSha256: string, + client: SkillClient, + cfg: HarnessConfig = DEFAULT_CONFIG, + clock: () => string = () => new Date().toISOString(), +): Promise { + if (cfg.holdoutFrom < cfg.window) throw new Error('holdoutFrom must be ≥ window') + const end = cfg.holdoutDays > 0 ? Math.min(dataset.days.length, cfg.holdoutFrom + cfg.holdoutDays) : dataset.days.length + const holdout = dataset.days.slice(cfg.holdoutFrom, end) + const ledger = seedLedger(dataset, cfg, holdout) + const skillVersions = Object.fromEntries((await client.skills()).map((s) => [s.id, s.version])) + + const perDay: DayResult[] = [] + for (let idx = cfg.holdoutFrom; idx < end; idx++) { + const day = dataset.days[idx]! + const history = dataset.days.slice(idx - cfg.window, idx) + + const forecasts = {} as Record + for (const kind of ['LOAD', 'PV', 'PRICE'] as const) { + forecasts[kind] = await client.forecast(kind, { + kind, + market_date: day.date, + unit: kind === 'PRICE' ? 'yuan_per_mwh' : 'mw', + history: history.map((h) => toCurve(h[FIELD[kind]] as string[], h.date)), + exogenous: {}, + features_snapshot_ref: REF, + }) + } + + const bounds = ledger.dayAheadBounds(day.date) + const bid: BidOptimizationResult = await client.optimizeBid({ + market_date: day.date, + price_forecast: forecasts.PRICE, + adjustable_capacity_mw: toCurve(day.adjustable_capacity_mw, day.date), + position_bounds: bounds, + risk: cfg.risk, + }) + + let ledgerAccepted = false + if (bid.solver.status === 'OPTIMAL') { + try { + ledger.append({ + id: `bid-${day.date}`, + timescale: 'DAY_AHEAD', + period: day.date, + kind: 'BID_SUBMITTED', + energy_mwh: bid.daily_energy_mwh, + curve: bid.quantities_mwh, + source_ref: `eval-${day.date}`, + expected_version: ledger.read().version, + }) + ledgerAccepted = true + } catch { + ledgerAccepted = false + } + } + + const actualLoad = nums(day.load_mw) + const actualPv = nums(day.pv_mw) + const actualPrice = nums(day.price_yuan_per_mwh) + const load = bandOf(forecasts.LOAD) + const pv = bandOf(forecasts.PV) + const price = bandOf(forecasts.PRICE) + const capMwh = nums(day.adjustable_capacity_mw).map((c) => c * Number(cfg.risk.commitment_buffer_k) * 0.25) + const eMax = Number(bounds.daily_energy_max_mwh) + const daylight = actualPv.map((v, i) => [v, i] as const).filter(([v]) => v > 0).map(([, i]) => i) + + perDay.push({ + date: day.date, + load: { mape: q(mape(actualLoad, load.p50), 6), coverage: q(coverage(actualLoad, load.p10, load.p90), 6) }, + pv: { + nrmse: q(nrmse(actualPv, pv.p50, Number(dataset.meta.pv_capacity_mw)), 6), + coverage: q( + coverage( + daylight.map((i) => actualPv[i]!), + daylight.map((i) => pv.p10[i]!), + daylight.map((i) => pv.p90[i]!), + ), + 6, + ), + }, + price: { + mape: q(mape(actualPrice, price.p50), 6), + coverage: q(coverage(actualPrice, price.p10, price.p90), 6), + direction: q(directionAccuracy(actualPrice, price.p50), 6), + }, + bid: { + status: bid.solver.status, + ledger_accepted: ledgerAccepted, + energy_mwh: bid.daily_energy_mwh, + revenue_skill: q( + realisedRevenue({ offers: nums(bid.prices_yuan_per_mwh.values), quantities: nums(bid.quantities_mwh.values) }, actualPrice), + 2, + ), + revenue_naive: q(realisedRevenue(naiveBid(capMwh, eMax), actualPrice), 2), + revenue_hindsight: q( + realisedRevenue(hindsightBid(actualPrice, capMwh, eMax, Number(cfg.risk.min_block_mwh)), actualPrice), + 2, + ), + }, + }) + } + + const fm = (pick: (d: DayResult) => { mape?: number; nrmse?: number; coverage: number; direction?: number }): ForecastMetrics => { + const rows = perDay.map(pick) + const has = (k: 'mape' | 'nrmse' | 'direction') => rows.every((r) => r[k] !== undefined) + return { + days: rows.length, + mape: has('mape') ? q(mean(rows.map((r) => r.mape!)), 6) : null, + nrmse: has('nrmse') ? q(mean(rows.map((r) => r.nrmse!)), 6) : null, + coverage_p10_p90: q(mean(rows.map((r) => r.coverage)), 6), + direction_accuracy: has('direction') ? q(mean(rows.map((r) => r.direction!)), 6) : null, + } + } + const sum = (f: (d: DayResult) => number) => q(perDay.reduce((s, d) => s + f(d), 0), 2) + const skill = sum((d) => d.bid.revenue_skill) + const naive = sum((d) => d.bid.revenue_naive) + const hindsight = sum((d) => d.bid.revenue_hindsight) + + const body = { + layer: 'L2' as const, + dataset: { name: dataset.meta.name, sha256: datasetSha256, synthetic: dataset.meta.synthetic }, + skill_versions: skillVersions, + config: cfg, + metrics: { + load: fm((d) => d.load), + pv: fm((d) => d.pv), + price: fm((d) => d.price), + bid: { + days: perDay.length, + optimal_days: perDay.filter((d) => d.bid.status === 'OPTIMAL').length, + ledger_accepted_days: perDay.filter((d) => d.bid.ledger_accepted).length, + revenue_skill_yuan: skill, + revenue_naive_yuan: naive, + revenue_hindsight_yuan: hindsight, + capture_ratio: hindsight === 0 ? 0 : q(skill / hindsight, 6), + uplift_vs_naive: naive === 0 ? 0 : q(skill / naive, 6), + }, + }, + per_day: perDay, + } + const digest = createHash('sha256').update(stableJson(body)).digest('hex') + const runAt = clock() + return { id: `l2-${runAt.replace(/[:.]/g, '-')}-${digest.slice(0, 8)}`, run_at: runAt, ...body, digest } +} diff --git a/packages/evals/src/index.ts b/packages/evals/src/index.ts new file mode 100644 index 0000000..32ac09c --- /dev/null +++ b/packages/evals/src/index.ts @@ -0,0 +1,4 @@ +export * from './metrics.js' +export * from './dataset.js' +export * from './client.js' +export * from './harness.js' diff --git a/packages/evals/src/metrics.ts b/packages/evals/src/metrics.ts new file mode 100644 index 0000000..69aa940 --- /dev/null +++ b/packages/evals/src/metrics.ts @@ -0,0 +1,103 @@ +/** + * L2 skill metrics (docs/12 §1 L2, §4 口径). Pure functions over plain numbers; + * the harness converts decimal strings at the boundary and quantizes results + * when it writes a report. KPI thresholds (≤ 8% etc.) are judged on real data + * and are OPEN-QUESTION C2 in their exact statistical level — nothing here + * hardcodes a pass/fail number. + */ + +export const mean = (xs: number[]): number => + xs.length === 0 ? Number.NaN : xs.reduce((a, b) => a + b, 0) / xs.length + +/** Mean absolute percentage error over intervals where actual ≠ 0. */ +export function mape(actual: number[], pred: number[]): number { + const terms: number[] = [] + for (let i = 0; i < actual.length; i++) { + const a = actual[i]! + if (a !== 0) terms.push(Math.abs((pred[i]! - a) / a)) + } + return mean(terms) +} + +/** RMSE normalised by installed capacity — the PV metric docs/12 §4 suggests. */ +export function nrmse(actual: number[], pred: number[], capacity: number): number { + const se = actual.map((a, i) => (pred[i]! - a) ** 2) + return Math.sqrt(mean(se)) / capacity +} + +/** Share of actuals inside [lower, upper]; nominal for a P10–P90 band is 0.80. */ +export function coverage(actual: number[], lower: number[], upper: number[]): number { + let hits = 0 + for (let i = 0; i < actual.length; i++) { + if (actual[i]! >= lower[i]! && actual[i]! <= upper[i]!) hits++ + } + return hits / actual.length +} + +/** + * Direction accuracy (docs/12 L2 电价 方向准确率): share of interval pairs whose + * high/low ordering the forecast gets right. Bid optimisation depends on the + * ranking of intervals far more than on absolute price level. + */ +export function directionAccuracy(actual: number[], pred: number[]): number { + let agree = 0 + let pairs = 0 + for (let i = 0; i < actual.length; i++) { + for (let j = i + 1; j < actual.length; j++) { + const da = actual[j]! - actual[i]! + const dp = pred[j]! - pred[i]! + if (da === 0 && dp === 0) continue + pairs++ + if (Math.sign(da) === Math.sign(dp)) agree++ + } + } + return pairs === 0 ? Number.NaN : agree / pairs +} + +export interface Bid { + offers: number[] + quantities: number[] +} + +/** Uniform-price clearing: an offer clears where it does not exceed the realised price. */ +export function realisedRevenue(bid: Bid, actualPrice: number[]): number { + let total = 0 + for (let t = 0; t < actualPrice.length; t++) { + if (bid.offers[t]! <= actualPrice[t]!) total += actualPrice[t]! * bid.quantities[t]! + } + return total +} + +/** + * Lower-bound baseline: a price-taker offering a flat profile that meets the + * upper energy bound (or as much as capacity allows), pro-rata to capacity. + */ +export function naiveBid(capMwh: number[], energyMax: number): Bid { + const sellable = capMwh.reduce((a, b) => a + b, 0) + const scale = sellable === 0 ? 0 : Math.min(1, energyMax / sellable) + return { offers: capMwh.map(() => 0), quantities: capMwh.map((c) => c * scale) } +} + +/** + * Upper-bound baseline: perfect hindsight — fill the highest-priced intervals + * first up to the energy bound, honouring per-interval capacity and block + * size. Offers at zero so everything clears. + */ +export function hindsightBid( + actualPrice: number[], + capMwh: number[], + energyMax: number, + minBlock: number, +): Bid { + const order = actualPrice.map((_, i) => i).sort((a, b) => actualPrice[b]! - actualPrice[a]!) + const quantities = capMwh.map(() => 0) + let room = energyMax + for (const t of order) { + const q = Math.min(capMwh[t]!, room) + if (q < minBlock) continue + quantities[t] = q + room -= q + if (room <= 0) break + } + return { offers: capMwh.map(() => 0), quantities } +} diff --git a/packages/evals/test/harness.test.ts b/packages/evals/test/harness.test.ts new file mode 100644 index 0000000..b629021 --- /dev/null +++ b/packages/evals/test/harness.test.ts @@ -0,0 +1,104 @@ +import { fileURLToPath } from 'node:url' +import { describe, expect, it } from 'vitest' +import type { + BidOptimizationRequest, + BidOptimizationResult, + ForecastBundle, + ForecastKind, + ForecastRequest, + ReportRequest, + SkillReport, +} from '@vpp/domain' +import type { SkillClient } from '../src/client.js' +import { loadDataset } from '../src/dataset.js' +import { DEFAULT_CONFIG, runL2 } from '../src/harness.js' + +const datasetPath = fileURLToPath(new URL('../datasets/synthetic-hubei-v0.json', import.meta.url)) + +/** + * Stub skills with trivially checkable behaviour: forecast = last history + * day ± 10%; bid = flat quantity hitting the lower energy bound at offer 0. + * Lets the harness itself be tested without the Python service running. + */ +class StubClient implements SkillClient { + calls = 0 + async skills() { + return [ + { id: 'load-forecast', version: '0.0.1', endpoint: '/stub' }, + { id: 'bid-optimization-milp', version: '0.0.1', endpoint: '/stub' }, + ] + } + async forecast(kind: ForecastKind, req: ForecastRequest): Promise { + this.calls++ + const last = req.history[req.history.length - 1]! + const scaled = (f: number) => ({ + interval_minutes: 15 as const, + date: req.market_date, + values: last.values.map((v) => (Number(v) * f).toFixed(3)), + }) + return { + id: `stub-${kind}`, + kind, + market_date: req.market_date, + unit: req.unit, + quantiles: { p10: scaled(0.9), p50: scaled(1), p90: scaled(1.1) }, + model: { name: 'stub', version: '0.0.1' }, + features_snapshot_ref: req.features_snapshot_ref, + generated_at: '2026-01-01T00:00:00Z', + } + } + async optimizeBid(req: BidOptimizationRequest): Promise { + this.calls++ + const per = (Number(req.position_bounds.daily_energy_min_mwh) / 96).toFixed(3) + const flat = { interval_minutes: 15 as const, date: req.market_date, values: Array(96).fill(per) as string[] } + const energy = (Number(per) * 96).toFixed(3) + return { + market_date: req.market_date, + prices_yuan_per_mwh: { ...flat, values: Array(96).fill('0.00') }, + quantities_mwh: flat, + daily_energy_mwh: energy, + expected_revenue_yuan: '0.00', + revenue_distribution_yuan: { p10: '0.00', p50: '0.00', p90: '0.00' }, + position_bounds: req.position_bounds, + solver: { name: 'stub', version: '0', status: 'OPTIMAL', objective_value: '0.00', wall_time_ms: 0 }, + binding_constraints: ['daily_energy_min'], + skill_version: '0.0.1', + } + } + async report(_req: ReportRequest): Promise { + throw new Error('not used') + } +} + +const cfg = { ...DEFAULT_CONFIG, window: 7, holdoutFrom: 10, holdoutDays: 5 } + +describe('L2 harness', () => { + it('scores every held-out day and pushes each bid through the real ledger', async () => { + const { dataset, sha256 } = loadDataset(datasetPath) + const client = new StubClient() + const run = await runL2(dataset, sha256, client, cfg, () => '2026-09-01T00:00:00Z') + expect(run.per_day).toHaveLength(5) + expect(client.calls).toBe(5 * 4) + expect(run.metrics.bid.optimal_days).toBe(5) + expect(run.metrics.bid.ledger_accepted_days).toBe(5) // stub bids sit exactly on the lower bound + expect(run.metrics.load.coverage_p10_p90).toBeGreaterThan(0) + expect(run.metrics.price.direction_accuracy).toBeGreaterThan(0.5) // yesterday's shape is informative + expect(run.metrics.bid.revenue_hindsight_yuan).toBeGreaterThanOrEqual(run.metrics.bid.revenue_skill_yuan) + expect(run.metrics.bid.revenue_hindsight_yuan).toBeGreaterThanOrEqual(run.metrics.bid.revenue_naive_yuan) + expect(run.skill_versions['load-forecast']).toBe('0.0.1') + expect(run.dataset.synthetic).toBe(true) + }) + + it('is reproducible: same inputs → same digest, independent of run time', async () => { + const { dataset, sha256 } = loadDataset(datasetPath) + const a = await runL2(dataset, sha256, new StubClient(), cfg, () => '2026-09-01T00:00:00Z') + const b = await runL2(dataset, sha256, new StubClient(), cfg, () => '2026-09-02T00:00:00Z') + expect(a.digest).toBe(b.digest) + expect(a.id).not.toBe(b.id) + }) + + it('rejects a holdout that starts before the window is filled', async () => { + const { dataset, sha256 } = loadDataset(datasetPath) + await expect(runL2(dataset, sha256, new StubClient(), { ...cfg, holdoutFrom: 3 })).rejects.toThrow(/window/) + }) +}) diff --git a/packages/evals/test/metrics.test.ts b/packages/evals/test/metrics.test.ts new file mode 100644 index 0000000..ed8843d --- /dev/null +++ b/packages/evals/test/metrics.test.ts @@ -0,0 +1,61 @@ +import { describe, expect, it } from 'vitest' +import { + coverage, + directionAccuracy, + hindsightBid, + mape, + naiveBid, + nrmse, + realisedRevenue, +} from '../src/metrics.js' + +describe('forecast metrics', () => { + it('mape ignores zero actuals and is 0 for a perfect forecast', () => { + expect(mape([10, 0, 20], [10, 5, 20])).toBe(0) + expect(mape([10, 20], [11, 18])).toBeCloseTo((0.1 + 0.1) / 2) + }) + + it('nrmse normalises by capacity', () => { + expect(nrmse([0, 10], [0, 10], 20)).toBe(0) + expect(nrmse([10, 10], [12, 8], 20)).toBeCloseTo(2 / 20) + }) + + it('coverage counts inclusive band hits', () => { + expect(coverage([1, 2, 3, 4], [1, 1, 4, 1], [1, 3, 5, 3])).toBe(0.5) + }) + + it('direction accuracy scores pairwise ordering, not level', () => { + expect(directionAccuracy([1, 2, 3], [10, 20, 30])).toBe(1) + expect(directionAccuracy([1, 2, 3], [30, 20, 10])).toBe(0) + expect(directionAccuracy([1, 2, 3], [1, 3, 2])).toBeCloseTo(2 / 3) + }) +}) + +describe('bid backtest baselines', () => { + const price = [100, 300, 200, 50] + const cap = [2, 2, 2, 2] + + it('realised revenue clears only where offer ≤ price', () => { + expect(realisedRevenue({ offers: [150, 150, 150, 150], quantities: [1, 1, 1, 1] }, price)).toBe(500) + }) + + it('naive bid is flat, price-taking and meets the energy bound', () => { + const bid = naiveBid(cap, 4) + expect(bid.quantities).toEqual([1, 1, 1, 1]) + expect(bid.offers.every((o) => o === 0)).toBe(true) + expect(naiveBid(cap, 100).quantities).toEqual(cap) // capped by capacity + }) + + it('hindsight bid fills highest-priced intervals first and bounds revenue above', () => { + const bid = hindsightBid(price, cap, 3, 0.5) + expect(bid.quantities).toEqual([0, 2, 1, 0]) + const best = realisedRevenue(bid, price) + expect(best).toBe(800) + expect(realisedRevenue(naiveBid(cap, 3), price)).toBeLessThan(best) + }) + + it('hindsight honours the block size', () => { + const bid = hindsightBid(price, cap, 2.2, 0.5) + expect(bid.quantities).toEqual([0, 2, 0, 0]) // leftover 0.2 < block → not placed + }) +}) diff --git a/packages/evals/tsconfig.json b/packages/evals/tsconfig.json new file mode 100644 index 0000000..35707f6 --- /dev/null +++ b/packages/evals/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "noEmit": true + }, + "include": ["src", "test"] +} diff --git a/packages/services/src/decimal.ts b/packages/services/src/decimal.ts new file mode 100644 index 0000000..eee4a19 --- /dev/null +++ b/packages/services/src/decimal.ts @@ -0,0 +1,12 @@ +import decimalPkg from 'decimal.js-light' + +/** + * decimal.js-light ships CommonJS (`module.exports = Decimal`, plus + * `Decimal.Decimal = Decimal`). Node ESM exposes only a default export; some + * bundlers/test runners expose the class itself as the default. Resolve once + * here so callers just `import { Decimal } from './decimal.js'`. + */ +type DecimalCtor = typeof decimalPkg.Decimal +const resolved: unknown = (decimalPkg as { Decimal?: unknown }).Decimal ?? decimalPkg +export const Decimal = resolved as DecimalCtor +export type Decimal = InstanceType diff --git a/packages/services/src/index.ts b/packages/services/src/index.ts index 7844bdf..81d259f 100644 --- a/packages/services/src/index.ts +++ b/packages/services/src/index.ts @@ -4,3 +4,4 @@ export * from './quality.js' export * from './timeseries.js' export * from './relational.js' export * from './ingest.js' +export { Decimal } from './decimal.js' diff --git a/packages/services/src/ledger.ts b/packages/services/src/ledger.ts index c476b1e..70f1d70 100644 --- a/packages/services/src/ledger.ts +++ b/packages/services/src/ledger.ts @@ -1,5 +1,5 @@ -import { Decimal } from 'decimal.js-light' -import type { LedgerView, PositionEntry, PositionUpdate, Timescale } from '@vpp/domain' +import { Decimal } from './decimal.js' +import type { LedgerView, PositionBounds, PositionEntry, PositionUpdate, Timescale } from '@vpp/domain' import { PositionUpdate as PositionUpdateSchema } from '@vpp/domain' export class LedgerConcurrencyError extends Error { @@ -46,6 +46,22 @@ export class LedgerService { return this.entries.filter((e) => e.timescale === timescale) } + /** + * Daily energy bounds for a day-ahead bid on `date`, derived from the + * MONTHLY CONTRACT position (the same rule checkCascade enforces). Handed + * to the bid-optimization skill as hard constraints so the optimizer can + * never produce a bid the ledger would then reject. Throws when there is + * no monthly anchor — same policy as append. + */ + dayAheadBounds(date: string): PositionBounds { + const { min, max } = this.cascadeBand(date) + return { + ledger_version: this.version, + daily_energy_min_mwh: min.toString(), + daily_energy_max_mwh: max.toString(), + } + } + append(update: PositionUpdate): LedgerView { PositionUpdateSchema.parse(update) if (update.expected_version !== this.version) { @@ -71,8 +87,18 @@ export class LedgerService { */ private checkCascade(update: PositionUpdate): void { if (update.kind !== 'BID_SUBMITTED' || update.timescale !== 'DAY_AHEAD') return + const { min, max, contracted, daysInMonth, band } = this.cascadeBand(update.period) + const bid = new Decimal(update.energy_mwh) + if (bid.lt(min) || bid.gt(max)) { + throw new CascadeViolation( + `day-ahead bid ${bid.toString()} MWh outside monthly cascade band ` + + `[${min.toString()}, ${max.toString()}] (contracted ${contracted.toString()} MWh / ${daysInMonth} days ± ${band.mul(100).toString()}%)`, + ) + } + } - const month = update.period.slice(0, 7) + private cascadeBand(date: string) { + const month = date.slice(0, 7) const monthly = this.entries.filter( (e) => e.timescale === 'MONTHLY' && e.kind === 'CONTRACT' && e.period === month, ) @@ -81,22 +107,18 @@ export class LedgerService { `no MONTHLY CONTRACT position recorded for ${month}; day-ahead bid has no cascade anchor`, ) } - const contracted = monthly.reduce((sum, e) => sum.add(new Decimal(e.energy_mwh)), new Decimal(0)) const daysInMonth = new Date( Date.UTC(Number(month.slice(0, 4)), Number(month.slice(5, 7)), 0), ).getUTCDate() const dailyShare = contracted.div(daysInMonth) const band = new Decimal(this.cfg.daMonthlyDeviationBand) - const min = dailyShare.mul(new Decimal(1).sub(band)) - const max = dailyShare.mul(new Decimal(1).add(band)) - const bid = new Decimal(update.energy_mwh) - - if (bid.lt(min) || bid.gt(max)) { - throw new CascadeViolation( - `day-ahead bid ${bid.toString()} MWh outside monthly cascade band ` + - `[${min.toString()}, ${max.toString()}] (contracted ${contracted.toString()} MWh / ${daysInMonth} days ± ${band.mul(100).toString()}%)`, - ) + return { + min: dailyShare.mul(new Decimal(1).sub(band)), + max: dailyShare.mul(new Decimal(1).add(band)), + contracted, + daysInMonth, + band, } } } diff --git a/packages/services/test/ledger.test.ts b/packages/services/test/ledger.test.ts index f057363..90ab5b4 100644 --- a/packages/services/test/ledger.test.ts +++ b/packages/services/test/ledger.test.ts @@ -75,3 +75,22 @@ describe('views', () => { expect(ledger.viewByTimescale('DAY_AHEAD')).toHaveLength(1) }) }) + +describe('dayAheadBounds: the cascade band handed to the bid optimizer', () => { + it('returns the same band checkCascade enforces, stamped with the ledger version', () => { + const ledger = makeLedger() + ledger.append(monthlyContract) + expect(ledger.dayAheadBounds('2026-03-15')).toEqual({ + ledger_version: 1, + daily_energy_min_mwh: '1140', + daily_energy_max_mwh: '1260', + }) + // A bid exactly at each bound is accepted by append — bounds are inclusive. + ledger.append(daBid('1140', 1)) + ledger.append({ ...daBid('1260', 2), id: 'pos-da-max' }) + }) + + it('throws when there is no monthly anchor', () => { + expect(() => makeLedger().dayAheadBounds('2026-03-15')).toThrow(CascadeViolation) + }) +}) diff --git a/skills-py/requirements.txt b/skills-py/requirements.txt index 8a4aa06..af93845 100644 --- a/skills-py/requirements.txt +++ b/skills-py/requirements.txt @@ -1,3 +1,9 @@ pydantic>=2.7 datamodel-code-generator>=0.26 pytest>=8.0 +hypothesis>=6.100 +numpy>=2.0 +scipy>=1.14 +fastapi>=0.115 +uvicorn>=0.30 +httpx>=0.27 diff --git a/skills-py/tests/__init__.py b/skills-py/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/skills-py/tests/conftest.py b/skills-py/tests/conftest.py new file mode 100644 index 0000000..ef3964c --- /dev/null +++ b/skills-py/tests/conftest.py @@ -0,0 +1,36 @@ +from __future__ import annotations + +import sys +from pathlib import Path + +import pytest + +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +from vpp_skills.synthetic import generate_dataset # noqa: E402 + +REF_A = "a" * 64 + + +def curve_of(values: list[str], date: str) -> dict: + return {"interval_minutes": 15, "date": date, "values": values} + + +@pytest.fixture(scope="session") +def dataset() -> dict: + return generate_dataset(seed=7, n_days=90) + + +def forecast_request(dataset: dict, kind: str, target_idx: int, window: int = 28) -> dict: + field = {"LOAD": "load_mw", "PV": "pv_mw", "PRICE": "price_yuan_per_mwh"}[kind] + unit = "yuan_per_mwh" if kind == "PRICE" else "mw" + days = dataset["days"] + hist = days[max(0, target_idx - window) : target_idx] + return { + "kind": kind, + "market_date": days[target_idx]["date"], + "unit": unit, + "history": [curve_of(d[field], d["date"]) for d in hist], + "exogenous": {}, + "features_snapshot_ref": REF_A, + } diff --git a/skills-py/tests/test_app.py b/skills-py/tests/test_app.py new file mode 100644 index 0000000..a7eaeb2 --- /dev/null +++ b/skills-py/tests/test_app.py @@ -0,0 +1,60 @@ +"""HTTP contract: golden request fixtures go in, schema-valid responses come out.""" + +from __future__ import annotations + +import json +from decimal import Decimal +from pathlib import Path + +from fastapi.testclient import TestClient + +from vpp_contracts.bid_optimization_result import BidOptimizationResult +from vpp_contracts.forecast_bundle import ForecastBundle +from vpp_contracts.skill_report import SkillReport +from vpp_skills.app import app + +from .conftest import forecast_request + +FIXTURES = Path(__file__).resolve().parents[2] / "contracts" / "fixtures" +client = TestClient(app) + + +def test_registry_lists_versions(): + r = client.get("/v1/skills") + assert r.status_code == 200 + ids = {s["id"]: s for s in r.json()} + assert ids["bid-optimization-milp"]["endpoint"] == "/v1/optimize/bid" + assert ids["load-forecast"]["version"] == "1.0.0" + + +def test_price_forecast_from_golden_fixture(): + req = json.loads((FIXTURES / "forecast_request" / "price-da.json").read_text()) + r = client.post("/v1/forecast/price", json=req) + assert r.status_code == 200, r.text + ForecastBundle.model_validate(r.json()) + + +def test_kind_endpoint_mismatch_is_422(dataset): + r = client.post("/v1/forecast/pv", json=forecast_request(dataset, "LOAD", 30)) + assert r.status_code == 422 + + +def test_bid_optimization_from_golden_fixture(): + req = json.loads((FIXTURES / "bid_optimization_request" / "da-basic.json").read_text()) + r = client.post("/v1/optimize/bid", json=req) + assert r.status_code == 200, r.text + out = BidOptimizationResult.model_validate(r.json()) + assert out.solver.status.value == "OPTIMAL" + assert Decimal("1140") <= Decimal(out.daily_energy_mwh) <= Decimal("1260") + + +def test_report_from_golden_fixture(): + req = json.loads((FIXTURES / "report_request" / "da-bid-summary.json").read_text()) + r = client.post("/v1/report", json=req) + assert r.status_code == 200, r.text + SkillReport.model_validate(r.json()) + + +def test_schema_violation_is_422(): + r = client.post("/v1/optimize/bid", json={"market_date": "2026-03-15"}) + assert r.status_code == 422 diff --git a/skills-py/tests/test_bid_milp.py b/skills-py/tests/test_bid_milp.py new file mode 100644 index 0000000..df39e50 --- /dev/null +++ b/skills-py/tests/test_bid_milp.py @@ -0,0 +1,140 @@ +"""Bid MILP: property tests that the output respects ledger bounds and capacity +(ROADMAP M2 acceptance), plus revenue-consistency and infeasibility handling.""" + +from __future__ import annotations + +from decimal import Decimal + +import numpy as np +from hypothesis import given, settings +from hypothesis import strategies as st + +from vpp_contracts.bid_optimization_request import BidOptimizationRequest +from vpp_skills.bid_milp import optimize_bid +from vpp_skills.numeric import quantize + +from .conftest import REF_A, curve_of + +DATE = "2026-03-15" + + +def _request(p50: np.ndarray, spread: float, cap_mw: np.ndarray, e_min: float, e_max: float, + lam: str = "0.3", k: str = "0.9", min_block: str = "0.5", cost: str = "0") -> BidOptimizationRequest: + p10, p90 = p50 * (1 - spread), p50 * (1 + spread) + q = lambda arr, s: [quantize(float(v), s) for v in arr] # noqa: E731 + return BidOptimizationRequest.model_validate( + { + "market_date": DATE, + "price_forecast": { + "id": "fc-price", "kind": "PRICE", "market_date": DATE, "unit": "yuan_per_mwh", + "quantiles": {"p10": curve_of(q(p10, 2), DATE), "p50": curve_of(q(p50, 2), DATE), "p90": curve_of(q(p90, 2), DATE)}, + "model": {"name": "price-forecast", "version": "1.0.0"}, + "features_snapshot_ref": REF_A, "generated_at": "2026-03-14T06:00:00Z", + }, + "adjustable_capacity_mw": curve_of(q(cap_mw, 3), DATE), + "position_bounds": {"ledger_version": 42, "daily_energy_min_mwh": quantize(e_min, 3), "daily_energy_max_mwh": quantize(e_max, 3)}, + "risk": {"risk_aversion": lam, "commitment_buffer_k": k, "min_block_mwh": min_block, "marginal_cost_yuan_per_mwh": cost}, + } + ) + + +def _vals(c) -> np.ndarray: + return np.array([float(Decimal(v.root)) for v in c.values]) + + +@settings(max_examples=40, deadline=None) +@given( + seed=st.integers(0, 10_000), + lam=st.sampled_from(["0", "0.25", "0.5", "1"]), + k=st.sampled_from(["0.5", "0.8", "1"]), + band=st.floats(0.0, 0.3), +) +def test_bid_respects_ledger_bounds_and_capacity(seed, lam, k, band): + rng = np.random.default_rng(seed) + p50 = rng.uniform(200, 800, 96) + cap = rng.uniform(0, 40, 96) + sellable = float(k) * cap.sum() * 0.25 + centre = rng.uniform(0.2, 0.9) * sellable + e_min, e_max = centre * (1 - band), centre * (1 + band) + req = _request(p50, 0.2, cap, e_min, e_max, lam=lam, k=k) + res = optimize_bid(req) + assert res.solver.status.value == "OPTIMAL", res.solver + qty = _vals(res.quantities_mwh) + total = float(Decimal(res.daily_energy_mwh)) + assert abs(total - qty.sum()) < 1e-6 # headline figure derived from the curve + lo, hi = Decimal(req.position_bounds.daily_energy_min_mwh), Decimal(req.position_bounds.daily_energy_max_mwh) + assert lo <= Decimal(res.daily_energy_mwh) <= hi # P7 cascade: hard constraint, exact + assert np.all(qty <= float(k) * cap * 0.25 + 1e-3) + assert np.all((qty == 0) | (qty >= 0.5 - 1e-3)) # min block honoured + assert np.all(qty >= 0) + + +def test_prefers_high_price_intervals(): + p50 = np.full(96, 300.0) + p50[72:80] = 900.0 # 18:00–20:00 evening peak + cap = np.full(96, 40.0) + res = optimize_bid(_request(p50, 0.1, cap, 40.0, 60.0, lam="0")) + qty = _vals(res.quantities_mwh) + assert qty[72:80].sum() > 0.99 * qty.sum() + assert "daily_energy_max" in res.binding_constraints + + +def test_revenue_distribution_is_exact_and_ordered(): + rng = np.random.default_rng(1) + p50 = rng.uniform(300, 600, 96) + req = _request(p50, 0.15, np.full(96, 30.0), 200.0, 400.0, lam="0.5") + res = optimize_bid(req) + d = res.revenue_distribution_yuan + assert Decimal(d.p10) <= Decimal(d.p50) <= Decimal(d.p90) + assert res.expected_revenue_yuan == d.p50 + # Price-taker offer (cost 0) clears everywhere: P50 revenue = Σ p50·q exactly, in Decimal. + p50s = [v.root for v in req.price_forecast.quantiles.p50.values] + qty = [v.root for v in res.quantities_mwh.values] + expected = sum(Decimal(p) * Decimal(q) for p, q in zip(p50s, qty)) + assert Decimal(res.expected_revenue_yuan) == expected.quantize(Decimal("0.01")) + + +def test_offer_is_the_marginal_cost_floor(): + p50 = np.full(96, 500.0) + free = optimize_bid(_request(p50, 0.2, np.full(96, 30.0), 100.0, 200.0, cost="0")) + costly = optimize_bid(_request(p50, 0.2, np.full(96, 30.0), 100.0, 200.0, cost="450")) + assert set(_vals(free.prices_yuan_per_mwh)) == {0.0} + assert set(_vals(costly.prices_yuan_per_mwh)) == {450.0} + # At cost 450 the offer no longer clears on the P10 path (400): floor revenue is zero. + assert costly.revenue_distribution_yuan.p10 == "0.00" + assert Decimal(free.revenue_distribution_yuan.p10) > 0 + + +def test_risk_aversion_tilts_allocation_toward_narrow_bands(): + """Two intervals, same P50; one has a wide band. Risk-neutral is indifferent + (fills by index order), risk-averse must prefer the narrow band.""" + p50 = np.full(96, 100.0) + p50[[10, 20]] = 500.0 + cap = np.zeros(96) + cap[[10, 20]] = 40.0 + band = np.full(96, 0.1) + band[10] = 0.6 # interval 10: P10 = 200; interval 20: P10 = 450 + q = lambda arr, s: [quantize(float(v), s) for v in arr] # noqa: E731 + req = _request(p50, 0.1, cap, 5.0, 5.0, lam="1") + data = req.model_dump() + data["price_forecast"]["quantiles"]["p10"]["values"] = q(p50 * (1 - band), 2) + req = BidOptimizationRequest.model_validate(data) + res = optimize_bid(req) + qty = _vals(res.quantities_mwh) + assert qty[20] == 5.0 and qty[10] == 0.0 + + +def test_infeasible_when_position_exceeds_sellable_energy(): + res = optimize_bid(_request(np.full(96, 400.0), 0.1, np.full(96, 10.0), 500.0, 600.0, k="1")) + assert res.solver.status.value == "INFEASIBLE" + assert res.daily_energy_mwh == "0.000" + assert res.binding_constraints == ["daily_energy_min exceeds sellable energy"] + + +def test_rejects_out_of_range_risk_params(): + import pytest + + with pytest.raises(ValueError, match="risk_aversion"): + optimize_bid(_request(np.full(96, 400.0), 0.1, np.full(96, 10.0), 10.0, 20.0, lam="1.5")) + with pytest.raises(ValueError, match="commitment_buffer_k"): + optimize_bid(_request(np.full(96, 400.0), 0.1, np.full(96, 10.0), 10.0, 20.0, k="0")) diff --git a/skills-py/tests/test_forecast.py b/skills-py/tests/test_forecast.py new file mode 100644 index 0000000..ece1591 --- /dev/null +++ b/skills-py/tests/test_forecast.py @@ -0,0 +1,81 @@ +"""Forecast skill: contract shape, determinism, and the calibration test the +roadmap names as the M2 acceptance gate (coverage of the P10–P90 band).""" + +from __future__ import annotations + +from datetime import datetime, timezone +from decimal import Decimal + +import numpy as np +import pytest + +from vpp_contracts.forecast_request import ForecastRequest +from vpp_skills.forecast import forecast + +from .conftest import forecast_request + +CLOCK = lambda: datetime(2026, 3, 14, 6, 0, tzinfo=timezone.utc) # noqa: E731 + + +def _arr(curve) -> np.ndarray: + return np.array([float(Decimal(v.root)) for v in curve.values]) + + +@pytest.mark.parametrize("kind", ["LOAD", "PV", "PRICE"]) +def test_bundle_shape_and_ordering(dataset, kind): + req = ForecastRequest.model_validate(forecast_request(dataset, kind, 40)) + b = forecast(req, CLOCK) + assert b.kind.value == kind and b.market_date == req.market_date + p10, p50, p90 = (_arr(getattr(b.quantiles, q)) for q in ("p10", "p50", "p90")) + assert np.all(p10 <= p50 + 1e-9) and np.all(p50 <= p90 + 1e-9) + if kind != "PRICE": + assert np.all(p10 >= 0) + assert b.generated_at.isoformat() == "2026-03-14T06:00:00+00:00" + assert b.model.name == f"{kind.lower()}-forecast" + + +def test_deterministic(dataset): + req = ForecastRequest.model_validate(forecast_request(dataset, "LOAD", 50)) + a, b = forecast(req, CLOCK), forecast(req, CLOCK) + assert a.model_dump() == b.model_dump() + + +def test_pv_night_stays_zero(dataset): + req = ForecastRequest.model_validate(forecast_request(dataset, "PV", 45)) + b = forecast(req, CLOCK) + assert _arr(b.quantiles.p90)[:20].sum() == 0.0 # 00:00–05:00 + assert _arr(b.quantiles.p50)[44:52].sum() > 0.0 # midday + + +@pytest.mark.parametrize("kind", ["LOAD", "PV", "PRICE"]) +def test_interval_calibration(dataset, kind): + """Nominal 80% band must cover roughly 80% of held-out actuals. Materially + under-covering (optimistic bands) is the failure mode docs/12 flags as more + dangerous than point error.""" + field = {"LOAD": "load_mw", "PV": "pv_mw", "PRICE": "price_yuan_per_mwh"}[kind] + hits = total = 0 + for idx in range(35, 90): + req = ForecastRequest.model_validate(forecast_request(dataset, kind, idx)) + b = forecast(req, CLOCK) + actual = np.array([float(Decimal(v)) for v in dataset["days"][idx][field]]) + p10, p90 = _arr(b.quantiles.p10), _arr(b.quantiles.p90) + if kind == "PV": # night intervals are trivially covered; score daylight only + mask = actual > 0 + actual, p10, p90 = actual[mask], p10[mask], p90[mask] + hits += int(np.sum((actual >= p10) & (actual <= p90))) + total += len(actual) + coverage = hits / total + assert 0.70 <= coverage <= 0.92, f"{kind} P10–P90 coverage {coverage:.3f} off nominal 0.80" + + +def test_rejects_bad_history(dataset): + base = forecast_request(dataset, "LOAD", 40) + unsorted = {**base, "history": list(reversed(base["history"]))} + with pytest.raises(ValueError, match="ascending"): + forecast(ForecastRequest.model_validate(unsorted), CLOCK) + future = {**base, "market_date": base["history"][0]["date"]} + with pytest.raises(ValueError, match="strictly before"): + forecast(ForecastRequest.model_validate(future), CLOCK) + wrong_unit = {**base, "unit": "yuan_per_mwh"} + with pytest.raises(ValueError, match="unit"): + forecast(ForecastRequest.model_validate(wrong_unit), CLOCK) diff --git a/skills-py/tests/test_report.py b/skills-py/tests/test_report.py new file mode 100644 index 0000000..3d74559 --- /dev/null +++ b/skills-py/tests/test_report.py @@ -0,0 +1,63 @@ +from __future__ import annotations + +from datetime import datetime, timezone + +from vpp_contracts.report_request import ReportRequest +from vpp_skills.report import generate_report, resolve, verify_report + +CLOCK = lambda: datetime(2026, 3, 14, 8, 30, tzinfo=timezone.utc) # noqa: E731 + +SOLVER_OUTPUT = { + "market_date": "2026-03-15", + "prices_yuan_per_mwh": {"interval_minutes": 15, "date": "2026-03-15", "values": ["1.0"] * 96}, + "daily_energy_mwh": "1200.000", + "expected_revenue_yuan": "510600.00", + "revenue_distribution_yuan": {"p10": "432000.00", "p50": "510600.00", "p90": "588000.00"}, + "solver": {"name": "highs", "status": "OPTIMAL", "objective_value": "487020.00", "wall_time_ms": 12}, + "binding_constraints": ["daily_energy_max"], +} + + +def _req(kind="DAY_AHEAD_BID_SUMMARY") -> ReportRequest: + return ReportRequest.model_validate( + { + "kind": kind, + "market_date": "2026-03-15", + "sources": [{"tool_call_id": "tc-001", "tool": "bid-optimization-milp", "version": "1.0.0", "output": SOLVER_OUTPUT}], + } + ) + + +def test_every_metric_is_a_reference_that_resolves_to_its_value(): + req = _req() + rep = generate_report(req, CLOCK) + names = {m.name for m in rep.sections[0].metrics} + assert {"expected_revenue_yuan", "daily_energy_mwh", "revenue_distribution_yuan.p10", "solver.objective_value"} <= names + assert "prices_yuan_per_mwh" not in " ".join(names) # curves are not inlined + assert verify_report(rep, req) == [] + for m in rep.sections[0].metrics: + assert m.value == resolve(SOLVER_OUTPUT, m.ref.path) + assert m.ref.tool_call_id == "tc-001" + + +def test_units_inferred_from_field_names(): + rep = generate_report(_req(), CLOCK) + units = {m.name: m.unit for m in rep.sections[0].metrics} + assert units["expected_revenue_yuan"] == "yuan" + assert units["daily_energy_mwh"] == "mwh" + assert units["revenue_distribution_yuan.p90"] == "yuan" + + +def test_notes_carry_solver_status_and_binding_constraints(): + rep = generate_report(_req(), CLOCK) + notes = " | ".join(rep.sections[0].notes) + assert "solver status: OPTIMAL" in notes and "daily_energy_max" in notes + + +def test_deterministic_id_and_verify_catches_tampering(): + req = _req() + a, b = generate_report(req, CLOCK), generate_report(req, CLOCK) + assert a.id == b.id and a.id.startswith("rep-day_ahead_bid_summary-2026-03-15-") + tampered = a.model_copy(deep=True) + tampered.sections[0].metrics[0].value = "999999.00" + assert verify_report(tampered, req) diff --git a/skills-py/vpp_contracts/bid_optimization_request.py b/skills-py/vpp_contracts/bid_optimization_request.py new file mode 100644 index 0000000..0025bac --- /dev/null +++ b/skills-py/vpp_contracts/bid_optimization_request.py @@ -0,0 +1,129 @@ +# generated by datamodel-codegen: +# filename: bid_optimization_request.json + +from __future__ import annotations + +from enum import StrEnum +from typing import Literal + +from pydantic import ( + AwareDatetime, + BaseModel, + ConfigDict, + Field, + RootModel, + conint, + constr, +) + + +class Kind(StrEnum): + LOAD = 'LOAD' + PV = 'PV' + PRICE = 'PRICE' + + +class Unit(StrEnum): + mw = 'mw' + yuan_per_mwh = 'yuan_per_mwh' + + +class Value(RootModel[constr(pattern=r'^-?\d+(\.\d+)?$')]): + root: constr(pattern=r'^-?\d+(\.\d+)?$') + + +class P10(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class P50(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class P90(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class Quantiles(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + p10: P10 + p50: P50 + p90: P90 + + +class Model(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + name: constr(min_length=1) + version: constr(min_length=1) + + +class PriceForecast(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + id: constr(min_length=1) + kind: Kind + market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + unit: Unit + quantiles: Quantiles + model: Model + features_snapshot_ref: constr(pattern=r'^[0-9a-f]{64}$') + generated_at: AwareDatetime + + +class AdjustableCapacityMw(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class PositionBounds(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + ledger_version: conint(ge=0, le=9007199254740991) + daily_energy_min_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') + daily_energy_max_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') + + +class Risk(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + risk_aversion: constr(pattern=r'^-?\d+(\.\d+)?$') + commitment_buffer_k: constr(pattern=r'^-?\d+(\.\d+)?$') + min_block_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') + marginal_cost_yuan_per_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') + + +class BidOptimizationRequest(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + price_forecast: PriceForecast + adjustable_capacity_mw: AdjustableCapacityMw + position_bounds: PositionBounds + risk: Risk diff --git a/skills-py/vpp_contracts/bid_optimization_result.py b/skills-py/vpp_contracts/bid_optimization_result.py new file mode 100644 index 0000000..bad4a67 --- /dev/null +++ b/skills-py/vpp_contracts/bid_optimization_result.py @@ -0,0 +1,83 @@ +# generated by datamodel-codegen: +# filename: bid_optimization_result.json + +from __future__ import annotations + +from enum import StrEnum +from typing import Literal + +from pydantic import BaseModel, ConfigDict, Field, RootModel, conint, constr + + +class Value(RootModel[constr(pattern=r'^-?\d+(\.\d+)?$')]): + root: constr(pattern=r'^-?\d+(\.\d+)?$') + + +class PricesYuanPerMwh(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class QuantitiesMwh(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class RevenueDistributionYuan(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + p10: constr(pattern=r'^-?\d+(\.\d+)?$') + p50: constr(pattern=r'^-?\d+(\.\d+)?$') + p90: constr(pattern=r'^-?\d+(\.\d+)?$') + + +class PositionBounds(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + ledger_version: conint(ge=0, le=9007199254740991) + daily_energy_min_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') + daily_energy_max_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') + + +class Status(StrEnum): + OPTIMAL = 'OPTIMAL' + INFEASIBLE = 'INFEASIBLE' + TIME_LIMIT = 'TIME_LIMIT' + ERROR = 'ERROR' + + +class Solver(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + name: constr(min_length=1) + version: constr(min_length=1) + status: Status + objective_value: constr(pattern=r'^-?\d+(\.\d+)?$') | None + wall_time_ms: conint(ge=0, le=9007199254740991) + + +class BidOptimizationResult(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + prices_yuan_per_mwh: PricesYuanPerMwh + quantities_mwh: QuantitiesMwh + daily_energy_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') + expected_revenue_yuan: constr(pattern=r'^-?\d+(\.\d+)?$') + revenue_distribution_yuan: RevenueDistributionYuan + position_bounds: PositionBounds + solver: Solver + binding_constraints: list[str] + skill_version: constr(pattern=r'^\d+\.\d+\.\d+$') diff --git a/skills-py/vpp_contracts/forecast_request.py b/skills-py/vpp_contracts/forecast_request.py new file mode 100644 index 0000000..8044760 --- /dev/null +++ b/skills-py/vpp_contracts/forecast_request.py @@ -0,0 +1,54 @@ +# generated by datamodel-codegen: +# filename: forecast_request.json + +from __future__ import annotations + +from enum import StrEnum +from typing import Literal + +from pydantic import BaseModel, ConfigDict, Field, RootModel, constr + + +class Kind(StrEnum): + LOAD = 'LOAD' + PV = 'PV' + PRICE = 'PRICE' + + +class Unit(StrEnum): + mw = 'mw' + yuan_per_mwh = 'yuan_per_mwh' + + +class Value(RootModel[constr(pattern=r'^-?\d+(\.\d+)?$')]): + root: constr(pattern=r'^-?\d+(\.\d+)?$') + + +class HistoryItem(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class Exogenous(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + interval_minutes: Literal[15] + date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + values: list[Value] = Field(..., max_length=96, min_length=96) + + +class ForecastRequest(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + kind: Kind + market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + unit: Unit + history: list[HistoryItem] = Field(..., min_length=1) + exogenous: dict[str, Exogenous] + features_snapshot_ref: constr(pattern=r'^[0-9a-f]{64}$') diff --git a/skills-py/vpp_contracts/report_request.py b/skills-py/vpp_contracts/report_request.py new file mode 100644 index 0000000..79e217f --- /dev/null +++ b/skills-py/vpp_contracts/report_request.py @@ -0,0 +1,34 @@ +# generated by datamodel-codegen: +# filename: report_request.json + +from __future__ import annotations + +from enum import StrEnum +from typing import Any + +from pydantic import BaseModel, ConfigDict, Field, constr + + +class Kind(StrEnum): + DAY_AHEAD_BID_SUMMARY = 'DAY_AHEAD_BID_SUMMARY' + FORECAST_EVAL = 'FORECAST_EVAL' + BID_BACKTEST = 'BID_BACKTEST' + + +class Source(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + tool_call_id: constr(min_length=1) + tool: constr(min_length=1) + version: constr(pattern=r'^\d+\.\d+\.\d+$') + output: Any + + +class ReportRequest(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + kind: Kind + market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + sources: list[Source] = Field(..., min_length=1) diff --git a/skills-py/vpp_contracts/skill_report.py b/skills-py/vpp_contracts/skill_report.py new file mode 100644 index 0000000..e34fa17 --- /dev/null +++ b/skills-py/vpp_contracts/skill_report.py @@ -0,0 +1,53 @@ +# generated by datamodel-codegen: +# filename: skill_report.json + +from __future__ import annotations + +from enum import StrEnum + +from pydantic import AwareDatetime, BaseModel, ConfigDict, constr + + +class Kind(StrEnum): + DAY_AHEAD_BID_SUMMARY = 'DAY_AHEAD_BID_SUMMARY' + FORECAST_EVAL = 'FORECAST_EVAL' + BID_BACKTEST = 'BID_BACKTEST' + + +class Ref(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + tool_call_id: constr(min_length=1) + path: constr(min_length=1) + + +class Metric(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + name: constr(min_length=1) + value: constr(pattern=r'^-?\d+(\.\d+)?$') + unit: constr(min_length=1) + ref: Ref + + +class Section(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + title: constr(min_length=1) + metrics: list[Metric] + notes: list[str] + + +class SkillReport(BaseModel): + model_config = ConfigDict( + extra='forbid', + ) + id: constr(min_length=1) + kind: Kind + market_date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') + sections: list[Section] + skill_version: constr(pattern=r'^\d+\.\d+\.\d+$') + generated_at: AwareDatetime diff --git a/skills-py/vpp_skills/__init__.py b/skills-py/vpp_skills/__init__.py new file mode 100644 index 0000000..05c9b7d --- /dev/null +++ b/skills-py/vpp_skills/__init__.py @@ -0,0 +1,15 @@ +"""Python skill services (docs/05 §1–2, ADR-0001). + +Every skill is typed (generated pydantic contracts in ``vpp_contracts``), +versioned (``SKILL_VERSIONS``) and stateless. No module here may import or call +an LLM: skills are deterministic numeric services and sit on the control path +(CLAUDE.md hard rule 2). +""" + +SKILL_VERSIONS: dict[str, str] = { + "load-forecast": "1.0.0", + "pv-forecast": "1.0.0", + "price-forecast": "1.0.0", + "bid-optimization-milp": "1.0.0", + "report-generator": "1.0.0", +} diff --git a/skills-py/vpp_skills/app.py b/skills-py/vpp_skills/app.py new file mode 100644 index 0000000..0e04af8 --- /dev/null +++ b/skills-py/vpp_skills/app.py @@ -0,0 +1,81 @@ +"""HTTP/JSON skill service (docs/11 §3.4, docs/09 §4). + +One process, one route per skill, generated pydantic contracts on both request +and response. The TS runtime's registerSkill wrapper is the only intended +caller; it snapshots request/response for lineage. Run locally with +``uvicorn vpp_skills.app:app``. +""" + +from __future__ import annotations + +from fastapi import FastAPI, HTTPException +from fastapi.responses import JSONResponse + +from vpp_contracts.bid_optimization_request import BidOptimizationRequest +from vpp_contracts.bid_optimization_result import BidOptimizationResult +from vpp_contracts.forecast_bundle import ForecastBundle +from vpp_contracts.forecast_request import ForecastRequest +from vpp_contracts.report_request import ReportRequest +from vpp_contracts.skill_report import SkillReport + +from . import SKILL_VERSIONS +from .bid_milp import optimize_bid +from .forecast import forecast +from .report import generate_report + +app = FastAPI(title="vpp-skills", version="0.1.0") + +ROUTES = { + "load-forecast": "/v1/forecast/load", + "pv-forecast": "/v1/forecast/pv", + "price-forecast": "/v1/forecast/price", + "bid-optimization-milp": "/v1/optimize/bid", + "report-generator": "/v1/report", +} + + +@app.exception_handler(ValueError) +async def _value_error(_, exc: ValueError) -> JSONResponse: + return JSONResponse(status_code=422, content={"detail": str(exc)}) + + +@app.get("/health") +def health() -> dict: + return {"status": "ok"} + + +@app.get("/v1/skills") +def skills() -> list[dict]: + """Registry view: what the TS tool registry pins versions against.""" + return [{"id": sid, "version": ver, "endpoint": ROUTES[sid]} for sid, ver in SKILL_VERSIONS.items()] + + +def _forecast_for(kind: str, req: ForecastRequest) -> ForecastBundle: + if req.kind.value != kind: + raise HTTPException(status_code=422, detail=f"this endpoint serves kind={kind}, got {req.kind.value}") + return forecast(req) + + +@app.post(ROUTES["load-forecast"], response_model=ForecastBundle) +def forecast_load(req: ForecastRequest) -> ForecastBundle: + return _forecast_for("LOAD", req) + + +@app.post(ROUTES["pv-forecast"], response_model=ForecastBundle) +def forecast_pv(req: ForecastRequest) -> ForecastBundle: + return _forecast_for("PV", req) + + +@app.post(ROUTES["price-forecast"], response_model=ForecastBundle) +def forecast_price(req: ForecastRequest) -> ForecastBundle: + return _forecast_for("PRICE", req) + + +@app.post(ROUTES["bid-optimization-milp"], response_model=BidOptimizationResult) +def optimize(req: BidOptimizationRequest) -> BidOptimizationResult: + return optimize_bid(req) + + +@app.post(ROUTES["report-generator"], response_model=SkillReport) +def report(req: ReportRequest) -> SkillReport: + return generate_report(req) diff --git a/skills-py/vpp_skills/bid_milp.py b/skills-py/vpp_skills/bid_milp.py new file mode 100644 index 0000000..9093c14 --- /dev/null +++ b/skills-py/vpp_skills/bid_milp.py @@ -0,0 +1,188 @@ +"""Day-ahead bid optimization MILP (docs/05 §2.2, docs/07 D-1 08:00). + +Decision: for each of 96 intervals, an offer quantity q_t (MWh) and an offer +price. Model (v1): + + maximise Σ_t (w_t − c − DEVIATION_PENALTY) · q_t + s.t. q_t ≤ k · cap_t · 0.25 · u_t (sellable share of certified capacity) + q_t ≥ min_block · u_t (market block size, u_t ∈ {0,1}) + E_min ≤ Σ_t q_t ≤ E_max (position ledger cascade, P7) + +with w_t = (1−λ)·P50_t + λ·P10_t the risk-weighted price (λ = risk_aversion) +and c the marginal cost of delivering flexibility. In a uniform-price market a +seller is paid the clearing price, so the *offer price* is the cost floor c +(price-taker when c = 0) and the forecast's job is allocation: which intervals +get the bounded daily energy. Risk aversion tilts allocation away from +intervals whose price band is wide (low P10). The revenue distribution +evaluates the bid against each forecast quantile path with the clearing rule +"cleared where offer ≤ price". + +Solver: HiGHS via scipy.optimize.milp — open source, deterministic, adequate +for 96 binaries. Pyomo/commercial solvers (docs/08) are a swap behind the +same contract. +""" + +from __future__ import annotations + +import time +from decimal import Decimal + +import numpy as np +import scipy +from scipy.optimize import Bounds, LinearConstraint, milp +from scipy.sparse import csr_matrix, hstack, identity + +from vpp_contracts.bid_optimization_request import BidOptimizationRequest +from vpp_contracts.bid_optimization_result import BidOptimizationResult + +from . import SKILL_VERSIONS +from .numeric import INTERVALS, SCALE_MONEY, SCALE_MWH, SCALE_PRICE, curve, dsum, quantize, to_array + +SKILL = "bid-optimization-milp" + +# OPEN-QUESTION A4: Hubei deviation-assessment rule (band + penalty price +# mechanism) is undecided. Until it is, the objective carries a zero penalty +# per offered MWh so the term exists and can be wired to config, but it does +# not shape the bid. See docs/open-questions.md → market.deviation. +DEVIATION_PENALTY_YUAN_PER_MWH = Decimal("0") + +STATUS_BY_SCIPY = {0: "OPTIMAL", 1: "TIME_LIMIT", 2: "INFEASIBLE", 3: "INFEASIBLE", 4: "ERROR"} +TOL = 1e-6 + + +def _revenue(offer: list[str], qty: list[str], path: list[str]) -> Decimal: + total = Decimal(0) + for o, q, p in zip(offer, qty, path, strict=True): + if Decimal(o) <= Decimal(p): + total += Decimal(p) * Decimal(q) + return total + + +def _fit_to_bounds(qty: np.ndarray, cap_mwh: np.ndarray, min_block: float, bounds) -> list[str]: + """Quantize to SCALE_MWH without leaving [E_min, E_max]. + + Rounding 96 values independently can move the sum by up to 96·½ulp, enough + for the ledger to reject a bid the solver found feasible. Floor each value + (sum can only drop), then top up the deficit — if any — on intervals that + still have capacity headroom, all in exact decimal arithmetic. + """ + ulp = Decimal(1).scaleb(-SCALE_MWH) + vals = [(Decimal(repr(float(v))).quantize(ulp, rounding="ROUND_FLOOR")) for v in qty.tolist()] + vals = [abs(v) if v == 0 else v for v in vals] + caps = [Decimal(repr(float(c))).quantize(ulp, rounding="ROUND_FLOOR") for c in cap_mwh.tolist()] + e_min = Decimal(bounds.daily_energy_min_mwh) + total = sum(vals, Decimal(0)) + if total < e_min and total > 0: + deficit = e_min - total + for i in sorted(range(len(vals)), key=lambda j: caps[j] - vals[j], reverse=True): + if vals[i] == 0 or deficit <= 0: + continue # never open a new interval below the block size + room = caps[i] - vals[i] + add = min(room, deficit).quantize(ulp, rounding="ROUND_CEILING") + add = min(add, room) + vals[i] += add + deficit -= add + # If the deficit could not be placed the solver bound was tight to + # machine precision; the ledger check will judge the residual. + return [format(v, "f") for v in vals] + + +def optimize_bid(req: BidOptimizationRequest) -> BidOptimizationResult: + if req.price_forecast.kind.value != "PRICE": + raise ValueError("price_forecast.kind must be PRICE") + if req.price_forecast.market_date != req.market_date or req.adjustable_capacity_mw.date != req.market_date: + raise ValueError("price forecast and capacity curve must be for market_date") + + lam = float(Decimal(req.risk.risk_aversion)) + k = float(Decimal(req.risk.commitment_buffer_k)) + min_block = float(Decimal(req.risk.min_block_mwh)) + e_min = float(Decimal(req.position_bounds.daily_energy_min_mwh)) + e_max = float(Decimal(req.position_bounds.daily_energy_max_mwh)) + if not 0.0 <= lam <= 1.0: + raise ValueError("risk_aversion must be in [0, 1]") + if not 0.0 < k <= 1.0: + raise ValueError("commitment_buffer_k must be in (0, 1]") + cost = float(Decimal(req.risk.marginal_cost_yuan_per_mwh)) + if cost < 0: + raise ValueError("marginal_cost_yuan_per_mwh must be non-negative") + if min_block < 0 or e_min < 0 or e_max < e_min: + raise ValueError("invalid block size or position bounds") + + q = req.price_forecast.quantiles + p10 = to_array(v.root for v in q.p10.values) + p50 = to_array(v.root for v in q.p50.values) + cap_mwh = k * to_array(v.root for v in req.adjustable_capacity_mw.values) * 0.25 + if np.any(cap_mwh < 0): + raise ValueError("adjustable capacity must be non-negative") + w = (1.0 - lam) * p50 + lam * p10 + penalty = float(DEVIATION_PENALTY_YUAN_PER_MWH) + + n = INTERVALS + # Variables: x = [q_0..q_95, u_0..u_95]; minimise -(w - cost - penalty)·q + c = np.concatenate([-(w - cost - penalty), np.zeros(n)]) + integrality = np.concatenate([np.zeros(n), np.ones(n)]) + bounds = Bounds(np.zeros(2 * n), np.concatenate([cap_mwh, np.ones(n)])) + + eye = identity(n, format="csr") + a_cap = hstack([eye, -csr_matrix(np.diag(cap_mwh))]) # q - cap·u ≤ 0 + a_blk = hstack([eye, -min_block * eye]) # q - min_block·u ≥ 0 + a_sum = csr_matrix(np.concatenate([np.ones(n), np.zeros(n)])[None, :]) + constraints = [ + LinearConstraint(a_cap, -np.inf, 0.0), + LinearConstraint(a_blk, 0.0, np.inf), + LinearConstraint(a_sum, e_min, e_max), + ] + + t0 = time.perf_counter() + res = milp(c, constraints=constraints, integrality=integrality, bounds=bounds) + wall_ms = int(round((time.perf_counter() - t0) * 1000)) + status = STATUS_BY_SCIPY.get(int(res.status), "ERROR") + + binding: list[str] = [] + if res.x is None: + qty = np.zeros(n) + if e_min > cap_mwh.sum() + TOL: + binding.append("daily_energy_min exceeds sellable energy") + objective = None + else: + qty = np.clip(res.x[:n], 0.0, None) + qty[qty < TOL] = 0.0 + total = qty.sum() + if abs(total - e_max) < 1e-4: + binding.append("daily_energy_max") + if abs(total - e_min) < 1e-4: + binding.append("daily_energy_min") + if np.any((cap_mwh > 0) & (np.abs(qty - cap_mwh) < 1e-6)): + binding.append("interval_capacity") + objective = quantize(-float(res.fun), SCALE_MONEY) + + quantities = curve(_fit_to_bounds(qty, cap_mwh, min_block, req.position_bounds), req.market_date, SCALE_MWH) + offers = curve(np.full(n, cost), req.market_date, SCALE_PRICE) + qv, ov = quantities["values"], offers["values"] + p10s = [v.root for v in q.p10.values] + p50s = [v.root for v in q.p50.values] + p90s = [v.root for v in q.p90.values] + + result = { + "market_date": req.market_date, + "prices_yuan_per_mwh": offers, + "quantities_mwh": quantities, + "daily_energy_mwh": quantize(dsum(qv), SCALE_MWH), + "expected_revenue_yuan": quantize(_revenue(ov, qv, p50s), SCALE_MONEY), + "revenue_distribution_yuan": { + "p10": quantize(_revenue(ov, qv, p10s), SCALE_MONEY), + "p50": quantize(_revenue(ov, qv, p50s), SCALE_MONEY), + "p90": quantize(_revenue(ov, qv, p90s), SCALE_MONEY), + }, + "position_bounds": req.position_bounds.model_dump(), + "solver": { + "name": "highs", + "version": f"scipy-{scipy.__version__}", + "status": status, + "objective_value": objective, + "wall_time_ms": wall_ms, + }, + "binding_constraints": binding, + "skill_version": SKILL_VERSIONS[SKILL], + } + return BidOptimizationResult.model_validate(result) diff --git a/skills-py/vpp_skills/forecast.py b/skills-py/vpp_skills/forecast.py new file mode 100644 index 0000000..5b4cd00 --- /dev/null +++ b/skills-py/vpp_skills/forecast.py @@ -0,0 +1,125 @@ +"""Forecast skills v1: load / PV / price with quantile intervals (docs/05 §2.1). + +Baseline method, deliberately simple and fully deterministic: + +* point forecast (P50): exponentially-weighted mean of recent history days of + the same day-type (weekday vs weekend), per 15-min interval; +* interval (P10/P90): empirical quantiles of *backtest residuals* — the same + method is re-run on each history day using only the days before it, and the + pooled (actual − predicted) residuals give the band. This is split-conformal + calibration in its simplest form, so coverage on held-out days tracks the + nominal 80% instead of being an optimistic guess (docs/12 L2: 区间校准单独考核). + +Better models (statsforecast, gradient boosting) plug in behind the same +contract; the eval harness (packages/evals) is what decides whether they win. +Exogenous inputs are accepted by the contract but unused by v1 — recorded here +so nobody mistakes v1 for weather-aware. +""" + +from __future__ import annotations + +from datetime import date, datetime, timezone +from typing import Callable + +import numpy as np + +from vpp_contracts.forecast_bundle import ForecastBundle +from vpp_contracts.forecast_request import ForecastRequest + +from . import SKILL_VERSIONS +from .numeric import INTERVALS, SCALE_MW, SCALE_PRICE, curve, to_array + +MODEL_NAME = {"LOAD": "load-forecast", "PV": "pv-forecast", "PRICE": "price-forecast"} +UNIT_FOR_KIND = {"LOAD": "mw", "PV": "mw", "PRICE": "yuan_per_mwh"} + +LOOKBACK_DAYS = 14 +HALF_LIFE_DAYS = 3.0 +MIN_BACKTEST_HISTORY = 3 +NOMINAL_LOWER, NOMINAL_UPPER = 0.10, 0.90 + + +def _is_weekend(d: str) -> bool: + return date.fromisoformat(d).weekday() >= 5 + + +def _point_forecast(days: list[tuple[str, np.ndarray]], target: str) -> np.ndarray: + """EWM over the most recent LOOKBACK_DAYS same-day-type days (fallback: all days).""" + same = [(d, v) for d, v in days if _is_weekend(d) == _is_weekend(target)] + pool = (same if len(same) >= 2 else days)[-LOOKBACK_DAYS:] + ages = np.array([(date.fromisoformat(target) - date.fromisoformat(d)).days for d, _ in pool], float) + w = np.power(0.5, ages / HALF_LIFE_DAYS) + stack = np.stack([v for _, v in pool]) + return (w[:, None] * stack).sum(axis=0) / w.sum() + + +def _residual_quantiles(days: list[tuple[str, np.ndarray]], relative: bool) -> tuple[float, float]: + """Pooled backtest residuals. Relative (actual/pred − 1) for quantities whose + spread scales with level (load, PV — a night-time zero must not shrink the + noon band); additive for prices, which can sit near or below zero.""" + pairs: list[tuple[np.ndarray, np.ndarray]] = [] + for i in range(MIN_BACKTEST_HISTORY, len(days)): + d, actual = days[i] + pairs.append((actual, _point_forecast(days[:i], d))) + if not pairs: + # Too little history to backtest: fall back to day-to-day differences. + pairs = [(days[i][1], days[i - 1][1]) for i in range(1, len(days))] + actual = np.concatenate([a for a, _ in pairs]) + pred = np.concatenate([p for _, p in pairs]) + if relative: + floor = 0.05 * max(float(pred.max()), 1e-9) + mask = pred > floor + pooled = actual[mask] / pred[mask] - 1.0 if mask.any() else np.zeros(1) + else: + pooled = actual - pred + lo, hi = np.quantile(pooled, [NOMINAL_LOWER, NOMINAL_UPPER]) + return float(lo), float(hi) + + +def forecast( + req: ForecastRequest, + clock: Callable[[], datetime] = lambda: datetime.now(timezone.utc), +) -> ForecastBundle: + kind = str(req.kind.value) + if req.unit.value != UNIT_FOR_KIND[kind]: + raise ValueError(f"{kind} forecast unit must be {UNIT_FOR_KIND[kind]}, got {req.unit.value}") + + days = [(c.date, to_array(v.root for v in c.values)) for c in req.history] + dates = [d for d, _ in days] + if dates != sorted(dates) or len(set(dates)) != len(dates): + raise ValueError("history must be ascending by date with no duplicates") + if dates[-1] >= req.market_date: + raise ValueError("history must be strictly before market_date") + + p50 = _point_forecast(days, req.market_date) + relative = kind in ("LOAD", "PV") + lo, hi = _residual_quantiles(days, relative) + if relative: + p10, p90 = p50 * (1.0 + lo), p50 * (1.0 + hi) + else: + p10, p90 = p50 + lo, p50 + hi + + if kind in ("LOAD", "PV"): + p10, p50, p90 = (np.clip(x, 0.0, None) for x in (p10, p50, p90)) + if kind == "PV": + # Intervals that were zero on every history day (night) stay exactly zero. + night = np.all(np.stack([v for _, v in days]) == 0.0, axis=0) + for x in (p10, p50, p90): + x[night] = 0.0 + + scale = SCALE_PRICE if kind == "PRICE" else SCALE_MW + assert p50.shape == (INTERVALS,) + bundle = { + "id": f"fc-{kind.lower()}-{req.market_date}", + "kind": kind, + "market_date": req.market_date, + "unit": req.unit.value, + "quantiles": { + "p10": curve(p10, req.market_date, scale), + "p50": curve(p50, req.market_date, scale), + "p90": curve(p90, req.market_date, scale), + }, + "model": {"name": MODEL_NAME[kind], "version": SKILL_VERSIONS[MODEL_NAME[kind]]}, + "features_snapshot_ref": req.features_snapshot_ref, + "generated_at": clock().isoformat().replace("+00:00", "Z"), + } + return ForecastBundle.model_validate(bundle) diff --git a/skills-py/vpp_skills/numeric.py b/skills-py/vpp_skills/numeric.py new file mode 100644 index 0000000..9851a1d --- /dev/null +++ b/skills-py/vpp_skills/numeric.py @@ -0,0 +1,55 @@ +"""Decimal-string discipline (docs/11 §3.3) at the skill boundary. + +Contracts carry money/energy/prices as fixed-point decimal *strings*. Inside a +skill we compute with numpy floats, then quantize back to strings with an +explicit scale — and any headline figure (revenue, energy) is re-derived with +``decimal.Decimal`` from the already-quantized curves, so what a report cites +is exactly reproducible from the curves it cites. +""" + +from __future__ import annotations + +from decimal import ROUND_HALF_EVEN, Decimal +from typing import Iterable + +import numpy as np + +INTERVALS = 96 +INTERVAL_HOURS = Decimal("0.25") + +SCALE_MW = 3 +SCALE_MWH = 3 +SCALE_PRICE = 2 +SCALE_MONEY = 2 + + +def to_array(values: Iterable[str]) -> np.ndarray: + return np.array([float(Decimal(v)) for v in values], dtype=float) + + +def quantize(x: float | Decimal, scale: int) -> str: + q = Decimal(1).scaleb(-scale) + d = x if isinstance(x, Decimal) else Decimal(repr(float(x))) + out = d.quantize(q, rounding=ROUND_HALF_EVEN) + if out == 0: + out = abs(out) # normalise "-0.000" + return format(out, "f") + + +def curve(values: np.ndarray | list[str], date: str, scale: int) -> dict: + if isinstance(values, np.ndarray): + vals = [quantize(float(v), scale) for v in values.tolist()] + else: + vals = list(values) + if len(vals) != INTERVALS: + raise ValueError(f"curve must have {INTERVALS} values, got {len(vals)}") + return {"interval_minutes": 15, "date": date, "values": vals} + + +def dsum(values: Iterable[str]) -> Decimal: + return sum((Decimal(v) for v in values), Decimal(0)) + + +def dot(a: Iterable[str], b: Iterable[str]) -> Decimal: + """Exact Σ a_i·b_i over decimal strings.""" + return sum((Decimal(x) * Decimal(y) for x, y in zip(a, b, strict=True)), Decimal(0)) diff --git a/skills-py/vpp_skills/report.py b/skills-py/vpp_skills/report.py new file mode 100644 index 0000000..0e32f8f --- /dev/null +++ b/skills-py/vpp_skills/report.py @@ -0,0 +1,124 @@ +"""Report generator skill v1 (docs/05 §2.4). + +Produces the *numeric skeleton* of a report: every figure is a +``{tool_call_id, path}`` reference into a recorded tool output, with the value +copied from that path — never typed, never computed here. The LLM's role +(docs/07 D-1 08:00 step 3) is prose around these references and arrives with +the runtime in M3; this skill is what makes "数字原样引用求解器输出" checkable. +""" + +from __future__ import annotations + +import hashlib +import json +import re +from datetime import datetime, timezone +from typing import Any, Callable + +from vpp_contracts.report_request import ReportRequest +from vpp_contracts.skill_report import SkillReport + +from . import SKILL_VERSIONS + +SKILL = "report-generator" +DECIMAL_RE = re.compile(r"^-?\d+(\.\d+)?$") + +UNIT_SUFFIXES = ( + ("_yuan_per_mwh", "yuan_per_mwh"), + ("_mwh", "mwh"), + ("_mw", "mw"), + ("_yuan", "yuan"), + ("_pct", "pct"), + ("_ms", "ms"), +) + +SECTION_TITLE = { + "DAY_AHEAD_BID_SUMMARY": "Day-ahead bid", + "FORECAST_EVAL": "Forecast evaluation", + "BID_BACKTEST": "Bid backtest", +} + + +def resolve(output: Any, path: str) -> Any: + """Dereference a dotted path (list indices as integers) into a tool output.""" + node = output + for part in path.split("."): + if isinstance(node, list): + node = node[int(part)] + elif isinstance(node, dict): + node = node[part] + else: + raise KeyError(path) + return node + + +def _unit_for(name: str, parent: str) -> str: + for suffix, unit in UNIT_SUFFIXES: + if name.endswith(suffix) or parent.endswith(suffix): + return unit + return "1" + + +def _numeric_leaves(node: Any, prefix: str = "", parent: str = "") -> list[tuple[str, str, str]]: + """(path, value, unit) for every decimal-string scalar; curves/lists are skipped + (a 96-point curve is cited by snapshot ref, not inlined into a report).""" + out: list[tuple[str, str, str]] = [] + if isinstance(node, dict): + for key, val in node.items(): + path = f"{prefix}.{key}" if prefix else key + if isinstance(val, str) and DECIMAL_RE.match(val): + out.append((path, val, _unit_for(key, parent))) + elif isinstance(val, dict) and "values" not in val: + out.extend(_numeric_leaves(val, path, key)) + return out + + +def generate_report( + req: ReportRequest, + clock: Callable[[], datetime] = lambda: datetime.now(timezone.utc), +) -> SkillReport: + kind = str(req.kind.value) + sections = [] + for src in req.sources: + metrics = [ + {"name": path, "value": value, "unit": unit, "ref": {"tool_call_id": src.tool_call_id, "path": path}} + for path, value, unit in _numeric_leaves(src.output) + ] + notes = [f"source: {src.tool} v{src.version} (tool call {src.tool_call_id})"] + if isinstance(src.output, dict): + solver = src.output.get("solver") + if isinstance(solver, dict) and "status" in solver: + notes.append(f"solver status: {solver['status']}") + for key in ("binding_constraints",): + if isinstance(src.output.get(key), list) and src.output[key]: + notes.append(f"{key}: {', '.join(map(str, src.output[key]))}") + sections.append({"title": f"{SECTION_TITLE[kind]} · {src.tool}", "metrics": metrics, "notes": notes}) + + digest = hashlib.sha256( + json.dumps([s.model_dump() for s in req.sources], sort_keys=True, separators=(",", ":")).encode() + ).hexdigest()[:12] + report = { + "id": f"rep-{kind.lower()}-{req.market_date}-{digest}", + "kind": kind, + "market_date": req.market_date, + "sections": sections, + "skill_version": SKILL_VERSIONS[SKILL], + "generated_at": clock().isoformat().replace("+00:00", "Z"), + } + return SkillReport.model_validate(report) + + +def verify_report(report: SkillReport, req: ReportRequest) -> list[str]: + """Judge (docs/12 L1 数字一致性): every metric value must equal the referenced output.""" + by_id = {s.tool_call_id: s.output for s in req.sources} + problems = [] + for section in report.sections: + for m in section.metrics: + try: + actual = resolve(by_id[m.ref.tool_call_id], m.ref.path) + except (KeyError, IndexError, ValueError): + problems.append(f"{m.name}: unresolvable ref {m.ref.tool_call_id}#{m.ref.path}") + continue + if str(actual) != m.value: + problems.append(f"{m.name}: value {m.value} != referenced {actual}") + return problems diff --git a/skills-py/vpp_skills/synthetic.py b/skills-py/vpp_skills/synthetic.py new file mode 100644 index 0000000..b659a6e --- /dev/null +++ b/skills-py/vpp_skills/synthetic.py @@ -0,0 +1,114 @@ +"""Deterministic SYNTHETIC dataset for the M2 eval baseline. + +There is no historical Hubei data in this repository yet (docs/12 §2 历史重放集 +comes from the event log once the system runs; partner data is OPEN-QUESTION +D-class). Until real data lands, the eval harness needs *something* with +realistic structure — daily load shape, PV bell with cloud days, price with an +evening peak and occasional spikes — so metrics, calibration tests and the +reproducibility check exercise real code paths. + +Every number here is invented for shape only. Baselines computed on it are +baselines of the *harness*, not of the business KPI (预测误差 ≤ 8% is judged +on real data, docs/12 §4). The dataset file says so in its ``meta``. +""" + +from __future__ import annotations + +import argparse +import json +from datetime import date, timedelta +from pathlib import Path + +import numpy as np + +from .numeric import INTERVALS, SCALE_MW, SCALE_PRICE, quantize + +GENERATOR = "vpp_skills.synthetic" +GENERATOR_VERSION = "0.1.0" + + +def _profiles() -> tuple[np.ndarray, np.ndarray, np.ndarray]: + t = np.arange(INTERVALS) / 4.0 # hours + load = 0.55 + 0.25 * np.exp(-((t - 11) ** 2) / 8) + 0.35 * np.exp(-((t - 19.5) ** 2) / 6) - 0.15 * np.exp(-((t - 3) ** 2) / 10) + pv = np.clip(np.sin(np.pi * (t - 6.5) / 12.5), 0.0, None) ** 1.4 + pv[(t < 6.5) | (t > 19.0)] = 0.0 + price = 0.7 + 0.2 * np.exp(-((t - 11) ** 2) / 6) + 0.5 * np.exp(-((t - 19) ** 2) / 4) - 0.25 * np.exp(-((t - 3.5) ** 2) / 12) + return load, pv, price + + +def generate_dataset( + seed: int = 20260301, + start: str = "2026-01-01", + n_days: int = 120, + peak_load_mw: float = 80.0, + pv_capacity_mw: float = 30.0, + adjustable_capacity_mw: float = 24.0, + base_price: float = 400.0, +) -> dict: + rng = np.random.default_rng(seed) + load_p, pv_p, price_p = _profiles() + d0 = date.fromisoformat(start) + days = [] + load_ar = 0.0 + cloud = 0.8 + for i in range(n_days): + d = d0 + timedelta(days=i) + weekend = d.weekday() >= 5 + load_ar = 0.7 * load_ar + rng.normal(0, 0.04) + day_factor = (0.85 if weekend else 1.0) * (1.0 + load_ar) + load = peak_load_mw * load_p * day_factor * (1.0 + rng.normal(0, 0.02, INTERVALS)) + load = np.clip(load, 0.0, None) + + cloud = float(np.clip(0.6 * cloud + 0.4 * rng.beta(4, 1.5), 0.05, 1.0)) + pv = pv_capacity_mw * pv_p * cloud * (1.0 + rng.normal(0, 0.05, INTERVALS)) + pv = np.clip(pv, 0.0, None) + pv[pv_p == 0.0] = 0.0 + + net = (load - pv) / peak_load_mw + price = base_price * (price_p + 0.35 * (net - net.mean())) * (1.0 + rng.normal(0, 0.03, INTERVALS)) + if rng.random() < 0.06: # spike day: evening scarcity + price[72:88] *= rng.uniform(1.6, 2.4) + price = np.clip(price, 0.0, None) + + days.append( + { + "date": d.isoformat(), + "weekend": weekend, + "load_mw": [quantize(v, SCALE_MW) for v in load], + "pv_mw": [quantize(v, SCALE_MW) for v in pv], + "price_yuan_per_mwh": [quantize(v, SCALE_PRICE) for v in price], + "adjustable_capacity_mw": [quantize(adjustable_capacity_mw, SCALE_MW)] * INTERVALS, + } + ) + return { + "meta": { + "name": f"synthetic-hubei-v0-{start}-{n_days}d", + "synthetic": True, + "note": "SYNTHETIC shape-only placeholder. Replace with historical Hubei replay data; " + "baselines on this set measure the harness, not the business KPI.", + "generator": GENERATOR, + "generator_version": GENERATOR_VERSION, + "seed": seed, + "interval_minutes": 15, + "peak_load_mw": quantize(peak_load_mw, SCALE_MW), + "pv_capacity_mw": quantize(pv_capacity_mw, SCALE_MW), + "adjustable_capacity_mw": quantize(adjustable_capacity_mw, SCALE_MW), + }, + "days": days, + } + + +def main() -> None: + ap = argparse.ArgumentParser(description="write the synthetic eval dataset") + ap.add_argument("--out", required=True, type=Path) + ap.add_argument("--seed", type=int, default=20260301) + ap.add_argument("--days", type=int, default=120) + args = ap.parse_args() + ds = generate_dataset(seed=args.seed, n_days=args.days) + args.out.parent.mkdir(parents=True, exist_ok=True) + args.out.write_text(json.dumps(ds, indent=1) + "\n") + print(f"wrote {args.out} ({len(ds['days'])} days)") + + +if __name__ == "__main__": + main()