Historical market

Historical LMP Analytics

Hourly LMP history across US ISOs for basis, BESS, capture-rate, and revenue analysis.

Natural language query

Ask a dataset

Compose once, then run the prompt in Gridleaf or copy it into Claude or ChatGPT with the dataset context attached.

gridkit_historical_lmp

Visual target

Time series + statistics

Query inputs

query_contract
Claude setup

Portal handoff

Open

Gridleaf dataset: Historical LMP Analytics Tool: gridkit_historical_lmp Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store Source readiness: Historical hourly store / Backtest setup Query contract: - Title: Historical LMP study query contract - Primary entity: ISO market node - Time grain: Hourly source, daily/monthly aggregates - Visualization mode: Time series + statistics - Inputs: market (enum, required) e.g. CAISO; node (string, required) e.g. SP15; date_range (time-range, required) e.g. 2021-2025; aggregation (enum, optional) e.g. daily - Example queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen. Analysis plan contract: - Version: gridleaf-analysis-plan.v2 - Dataset: Historical LMP Analytics (historical-lmp) - Tool: gridkit_historical_lmp - Workflow: Historical LMP Analytics baseline analysis - Output: Time series + statistics - Result preview: Historical LMP study result (Average LMP) - Query contract: Historical LMP study query contract (Hourly source, daily/monthly aggregates) - Metrics: Average LMP, Volatility, Negative-price frequency, BESS spread - Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store - Source readiness: Historical hourly store (Backtest setup) - Source caveats: Historical LMP is not a live dispatch or trading signal.; Node mappings, holidays, and daylight-saving transitions should be checked before financial modeling. - Source next actions: Confirm node identity and market before running a revenue model.; Pair historical prices with asset constraints before BESS valuation. - Steps: Route the natural-language question to the right Gridleaf dataset. -> Run or prepare the matching Gridleaf portal tool with source-status caveats. -> Return a decision-ready answer and the next Claude or ChatGPT prompt. Result preview contract: - Title: Historical LMP study result - Chart: Annual average - Primary metric: Average LMP - Fields: market_node, period, average_lmp, volatility, negative_price_frequency - Example rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative) Dataset insight packet: - Version: gridleaf-dataset-insight.v1 - Contract key: dataset_insight - Dataset: Historical LMP Analytics (historical-lmp) - Tool: gridkit_historical_lmp - Workflow: Historical LMP Analytics baseline analysis - Visualization: Time series + statistics - Fields: market_node, period, average_lmp, volatility, negative_price_frequency - Rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative) - Source readiness: Historical hourly store (Backtest setup) - Next queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen.; Show five years of daily SP15 LMP history.; Where is basis risk highest for a storage project? Show five years of daily CAISO SP15 LMP prices and congestion risk. Summarize the revenue, basis, and BESS follow-up questions I should take into Claude. Return a concise analytical memo, call out source freshness and caveats, and suggest the next Gridleaf portal query. User question: Show five years of daily CAISO SP15 LMP history. query_contract: Historical LMP study query contract Primary entity: ISO market node Time grain: Hourly source, daily/monthly aggregates Query inputs: - market: CAISO (required) - node: SP15 (required) - date_range: 2021-2025 (required) - aggregation: daily (optional) Required inputs covered by provided values or contract examples. Return Time series + statistics with source_status_policy caveats, result_preview fields, and the next Gridleaf portal or Claude follow-up.

Gridleaf answer preview

Gridleaf will route this ask to gridkit_historical_lmp and return Time series + statistics for CAISO.

answer_preview

Primary result

CAISO SP15: $42.10/MWh / 6.4% negative

Visual

Annual average

Source

Historical hourly store

Preview rows

CAISO SP15

21% volatility

$42.10/MWh

6.4% negative

ERCOT Houston

18% volatility

$38.70/MWh

3.2% negative

PJM Western Hub

14% volatility

$44.80/MWh

1.1% negative

Answer notes

Expected output fields: market_node, period, average_lmp, volatility.

Source readiness: Historical hourly store (Backtest setup).

Historical LMP is not a live dispatch or trading signal.

AI handoff package

Copy a provider-ready package with source readiness, analysis steps, and the Gridleaf return URL.

Provider

Claude

Source readiness

Historical hourly store

Return

Gridleaf portal

Return to Gridleaf

External AI return

Bring the Claude or ChatGPT answer back with the external_ai_return contract and source checks.

Result preview

Historical LMP study result

Time-series slice with volatility, negative-price frequency, and storage spread setup.

Average LMP

Annual average

$/MWh
2021
38
2022
64
2023
52
2024
48
2025
57

Example rows

CAISO SP15

21% volatility

$42.10/MWh

6.4% negative

ERCOT Houston

18% volatility

$38.70/MWh

3.2% negative

PJM Western Hub

14% volatility

$44.80/MWh

1.1% negative

market_nodeperiodaverage_lmpvolatilitynegative_price_frequency
Query contract

Historical LMP study query contract

Ask for ISO, node, date range, aggregation, and storage or basis-analysis context.

query_contract

Primary entity

ISO market node

Time grain

Hourly source, daily/monthly aggregates

Visualization

Time series + statistics

Inputs

Market

market

Required

ISO/RTO market such as CAISO, ERCOT, or PJM.

Example: CAISO

Node or hub

node

Required

Pricing node, hub, or zone to analyze.

Example: SP15

Date range

date_range

Required

Historical period for price history and statistics.

Example: 2021-2025

Aggregation

aggregation

Optional

Hourly, daily, monthly, or annual result grain.

Example: daily

Natural-language examples

Show five years of daily CAISO SP15 LMP history.

Compare SP15 and NP15 volatility for a storage revenue screen.

Analysis playbooks

Run a structured workflow in the portal, then carry the same prompt into Claude or ChatGPT.

2 workflows
Playbook

BESS revenue backtest setup

Historical LMP slice, volatility summary, and storage revenue prompts.

1Pick node and horizon
2Summarize volatility and spreads
3Generate BESS follow-up prompts

Claude + ChatGPT prompt

Gridleaf dataset: Historical LMP Analytics Tool: gridkit_historical_lmp Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store Source readiness: Historical hourly store / Backtest setup Query contract: - Title: Historical LMP study query contract - Primary entity: ISO market node - Time grain: Hourly source, daily/monthly aggregates - Visualization mode: Time series + statistics - Inputs: market (enum, required) e.g. CAISO; node (string, required) e.g. SP15; date_range (time-range, required) e.g. 2021-2025; aggregation (enum, optional) e.g. daily - Example queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen. Analysis plan contract: - Version: gridleaf-analysis-plan.v2 - Dataset: Historical LMP Analytics (historical-lmp) - Tool: gridkit_historical_lmp - Workflow: BESS revenue backtest setup - Output: Time series + statistics - Result preview: Historical LMP study result (Average LMP) - Query contract: Historical LMP study query contract (Hourly source, daily/monthly aggregates) - Metrics: Average LMP, Volatility, Negative-price frequency, BESS spread - Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store - Source readiness: Historical hourly store (Backtest setup) - Source caveats: Historical LMP is not a live dispatch or trading signal.; Node mappings, holidays, and daylight-saving transitions should be checked before financial modeling. - Source next actions: Confirm node identity and market before running a revenue model.; Pair historical prices with asset constraints before BESS valuation. - Steps: Pick node and horizon -> Summarize volatility and spreads -> Generate BESS follow-up prompts Result preview contract: - Title: Historical LMP study result - Chart: Annual average - Primary metric: Average LMP - Fields: market_node, period, average_lmp, volatility, negative_price_frequency - Example rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative) Dataset insight packet: - Version: gridleaf-dataset-insight.v1 - Contract key: dataset_insight - Dataset: Historical LMP Analytics (historical-lmp) - Tool: gridkit_historical_lmp - Workflow: BESS revenue backtest setup - Visualization: Time series + statistics - Fields: market_node, period, average_lmp, volatility, negative_price_frequency - Rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative) - Source readiness: Historical hourly store (Backtest setup) - Next queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen.; Show five years of daily SP15 LMP history.; Where is basis risk highest for a storage project? Show five years of daily CAISO SP15 LMP prices and congestion risk. Summarize the revenue, basis, and BESS follow-up questions I should take into Claude. Return a concise analytical memo, call out source freshness and caveats, and suggest the next Gridleaf portal query. Analysis playbook: BESS revenue backtest setup Outcome: Historical LMP slice, volatility summary, and storage revenue prompts. Workflow steps: 1. Pick node and horizon 2. Summarize volatility and spreads 3. Generate BESS follow-up prompts Playbook prompt: Set up a BESS revenue backtest using historical LMP data. Start with CAISO SP15 daily history, summarize volatility, negative-price frequency, and spread opportunity, then create the Claude follow-up prompt for storage revenue modeling.

Run playbook in portal
Playbook

Basis-risk screen

Node comparison and diligence questions for siting or hedging.

1Compare market nodes
2Rank basis volatility
3Draft diligence memo

Claude + ChatGPT prompt

Gridleaf dataset: Historical LMP Analytics Tool: gridkit_historical_lmp Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store Source readiness: Historical hourly store / Backtest setup Query contract: - Title: Historical LMP study query contract - Primary entity: ISO market node - Time grain: Hourly source, daily/monthly aggregates - Visualization mode: Time series + statistics - Inputs: market (enum, required) e.g. CAISO; node (string, required) e.g. SP15; date_range (time-range, required) e.g. 2021-2025; aggregation (enum, optional) e.g. daily - Example queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen. Analysis plan contract: - Version: gridleaf-analysis-plan.v2 - Dataset: Historical LMP Analytics (historical-lmp) - Tool: gridkit_historical_lmp - Workflow: Basis-risk screen - Output: Time series + statistics - Result preview: Historical LMP study result (Average LMP) - Query contract: Historical LMP study query contract (Hourly source, daily/monthly aggregates) - Metrics: Average LMP, Volatility, Negative-price frequency, BESS spread - Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store - Source readiness: Historical hourly store (Backtest setup) - Source caveats: Historical LMP is not a live dispatch or trading signal.; Node mappings, holidays, and daylight-saving transitions should be checked before financial modeling. - Source next actions: Confirm node identity and market before running a revenue model.; Pair historical prices with asset constraints before BESS valuation. - Steps: Compare market nodes -> Rank basis volatility -> Draft diligence memo Result preview contract: - Title: Historical LMP study result - Chart: Annual average - Primary metric: Average LMP - Fields: market_node, period, average_lmp, volatility, negative_price_frequency - Example rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative) Dataset insight packet: - Version: gridleaf-dataset-insight.v1 - Contract key: dataset_insight - Dataset: Historical LMP Analytics (historical-lmp) - Tool: gridkit_historical_lmp - Workflow: Basis-risk screen - Visualization: Time series + statistics - Fields: market_node, period, average_lmp, volatility, negative_price_frequency - Rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative) - Source readiness: Historical hourly store (Backtest setup) - Next queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen.; Show five years of daily SP15 LMP history.; Where is basis risk highest for a storage project? Show five years of daily CAISO SP15 LMP prices and congestion risk. Summarize the revenue, basis, and BESS follow-up questions I should take into Claude. Return a concise analytical memo, call out source freshness and caveats, and suggest the next Gridleaf portal query. Analysis playbook: Basis-risk screen Outcome: Node comparison and diligence questions for siting or hedging. Workflow steps: 1. Compare market nodes 2. Rank basis volatility 3. Draft diligence memo Playbook prompt: Run a historical LMP basis-risk screen. Compare candidate nodes, rank basis volatility and negative-price exposure, and draft a diligence memo that can continue in Claude.

Run playbook in portal
Source readiness

Use this dataset with clear source caveats.

historical

Freshness

Historical hourly store

Decision grade

Backtest setup

Sources

4

Caveats

Historical LMP is not a live dispatch or trading signal.

Node mappings, holidays, and daylight-saving transitions should be checked before financial modeling.

Next source actions

Confirm node identity and market before running a revenue model.

Pair historical prices with asset constraints before BESS valuation.

Coverage

Hourly and aggregated LMP history for core CAISO, PJM, and ERCOT market nodes used in revenue and basis analysis.

Metric

Average LMP

Metric

Volatility

Metric

Negative-price frequency

Metric

BESS spread

Ask this dataset

Show five years of daily SP15 LMP history.

Where is basis risk highest for a storage project?

Which BESS follow-up should I run next?

AI-ready prompt

Use the same prompt shape in the portal, Claude, or ChatGPT when this dataset is selected.

Start prompt
Gridleaf dataset: Historical LMP Analytics
Tool: gridkit_historical_lmp
Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store
Source readiness: Historical hourly store / Backtest setup

Query contract:
- Title: Historical LMP study query contract
- Primary entity: ISO market node
- Time grain: Hourly source, daily/monthly aggregates
- Visualization mode: Time series + statistics
- Inputs: market (enum, required) e.g. CAISO; node (string, required) e.g. SP15; date_range (time-range, required) e.g. 2021-2025; aggregation (enum, optional) e.g. daily
- Example queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen.

Analysis plan contract:
- Version: gridleaf-analysis-plan.v2
- Dataset: Historical LMP Analytics (historical-lmp)
- Tool: gridkit_historical_lmp
- Workflow: Historical LMP Analytics baseline analysis
- Output: Time series + statistics
- Result preview: Historical LMP study result (Average LMP)
- Query contract: Historical LMP study query contract (Hourly source, daily/monthly aggregates)
- Metrics: Average LMP, Volatility, Negative-price frequency, BESS spread
- Sources: CAISO OASIS, PJM Data Miner, ERCOT MIS, Gridleaf historical store
- Source readiness: Historical hourly store (Backtest setup)
- Source caveats: Historical LMP is not a live dispatch or trading signal.; Node mappings, holidays, and daylight-saving transitions should be checked before financial modeling.
- Source next actions: Confirm node identity and market before running a revenue model.; Pair historical prices with asset constraints before BESS valuation.
- Steps: Route the natural-language question to the right Gridleaf dataset. -> Run or prepare the matching Gridleaf portal tool with source-status caveats. -> Return a decision-ready answer and the next Claude or ChatGPT prompt.

Result preview contract:
- Title: Historical LMP study result
- Chart: Annual average
- Primary metric: Average LMP
- Fields: market_node, period, average_lmp, volatility, negative_price_frequency
- Example rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative)

Dataset insight packet:
- Version: gridleaf-dataset-insight.v1
- Contract key: dataset_insight
- Dataset: Historical LMP Analytics (historical-lmp)
- Tool: gridkit_historical_lmp
- Workflow: Historical LMP Analytics baseline analysis
- Visualization: Time series + statistics
- Fields: market_node, period, average_lmp, volatility, negative_price_frequency
- Rows: CAISO SP15: $42.10/MWh (6.4% negative); ERCOT Houston: $38.70/MWh (3.2% negative); PJM Western Hub: $44.80/MWh (1.1% negative)
- Source readiness: Historical hourly store (Backtest setup)
- Next queries: Show five years of daily CAISO SP15 LMP history.; Compare SP15 and NP15 volatility for a storage revenue screen.; Show five years of daily SP15 LMP history.; Where is basis risk highest for a storage project?

Show five years of daily CAISO SP15 LMP prices and congestion risk. Summarize the revenue, basis, and BESS follow-up questions I should take into Claude.

Return a concise analytical memo, call out source freshness and caveats, and suggest the next Gridleaf portal query.

Related datasets