How Grid Tycoon Works

The real economics behind the electricity market simulation — merit order, clearing prices, LCOE, carbon, and more.

Jump to Markets Merit Order Clearing Price DA vs RT LCOE Carbon Battery Your Profit Capacity & PPAs Plant Types
1

What Is an Electricity Market?

Unlike most goods, electricity must be generated and consumed at exactly the same instant. You can't stockpile it in a warehouse. This creates a unique market where a grid operator — called an Independent System Operator (ISO) — must constantly balance supply and demand in real time.

Power plant owners submit bids saying "I can supply X megawatts at price Y." The ISO stacks these bids from cheapest to most expensive and purchases just enough to meet demand. The last (most expensive) unit needed to balance the grid sets the price for everyone.

🏛️
Real-world example: The US has seven ISOs including PJM, MISO, and CAISO. Together they manage power for over 200 million people using this same auction mechanism every 5 minutes.
2

Merit Order Dispatch

The ISO dispatches plants in merit order — cheapest first. This minimizes the total cost of electricity for consumers.

Example: 1,800 MW Demand

Plant Type Bid Price MW Offered Dispatched?
☀️ Solar Farm DA $52/MWh 500 MW ✓ 500 MW
⚛️ Nuclear DA $58/MWh 600 MW ✓ 600 MW
💨 Wind Farm RT $62/MWh 400 MW ✓ 400 MW
🏭 Coal Plant RT $71/MWh 800 MW ✓ 300 MW ← marginal
🔥 Gas Peaker RT $95/MWh 300 MW Not needed

The ISO dispatches Solar → Nuclear → Wind → 300 MW of Coal. Total = 1,800 MW. The Gas Peaker is not needed this hour.

1
All bids sorted by price, cheapest first (merit order)
2
ISO dispatches from the top until cumulative supply ≥ demand
3
The last unit dispatched (the "marginal unit") sets the price for everyone
3

The Clearing Price

The clearing price (also called the marginal price or locational marginal price) is the price of the most expensive unit that was actually dispatched. Every RT bidder that was dispatched earns this same price — even if their bid was lower.

Clearing Price Rule
clearing_price = offer price of the last (most expensive) unit dispatched

// the marginal unit can be a DA offer (at its floor) or an RT offer (at its bid)
// DA bidders earn their own locked price, not the clearing price
// RT bidders all earn the clearing price regardless of their bid

In the example above

The Coal plant bid $71/MWh and was the last unit needed. Clearing price = $71/MWh.

The Wind Farm bid $62/MWh but earns $71/MWh — a $9/MWh windfall. This is called "infra-marginal rent" and is a deliberate feature of electricity markets: it incentivizes cheap plants to stay in the market and remain available.

💡
Game strategy: If you bid RT at $62 and the clearing price turns out to be $71, you earn the higher $71. Bidding close to (but below) the expected clearing price maximizes your chance of being dispatched while capturing infra-marginal rent. Prices can also go negative (down to −$50/MWh) when zero-marginal-cost supply floods a low-demand block — must-run nuclear and tax-credit renewables bid below zero to guarantee dispatch, and if a negative bid is marginal, every RT unit pays to generate.

Real World

In CAISO (California), clearing prices vary from negative values (when solar overproduces) to $1,000+/MWh during scarcity events. The 2021 Texas winter storm saw prices hit the $9,000/MWh market cap for days.

4

Day-Ahead vs. Real-Time Markets

Real electricity markets run two parallel auctions:

Day-Ahead (DA) Market

Plants submit bids the day before delivery. The ISO runs the auction 24 hours in advance. Generators that clear the DA market receive a guaranteed price — no price risk on delivery day.

DA Revenue Formula
revenue = dispatched_mw × your_da_price × hours_per_block

// In Grid Tycoon, hours_per_block = 4
// DA price is set by you at the start of each season

Real-Time (RT) Market

Plants submit bids for the current hour. They're exposed to price volatility — if demand is low, prices collapse; if demand spikes, prices can be very high.

RT Revenue Formula
revenue = dispatched_mw × clearing_price × hours_per_block

// clearing_price is determined by merit order auction
// can be higher OR lower than your bid price

When to use each strategy

ConditionFavorWhy
High demand expected, tight marketRTClearing price will be high — more upside
Uncertain demand, risky marketDALock in guaranteed revenue
You're the cheapest plantRT at low priceYou'll set the clearing price floor
You're Nuclear or Coal (must-run)DABaseload plants prefer certainty
You're a BatteryRTArbitrage: charge cheap, discharge expensive
📌
In Grid Tycoon: Your DA floor price is set each season — it's your standing offer for every block. All offers compete in a single merit order: DA offers at their locked floor, RT offers at their bid price, cheapest dispatched first. An overpriced DA floor sorts to the back of the stack and won't dispatch in a slack market. Dispatched DA units earn their locked floor — predictable revenue that can never settle negative; dispatched RT units earn the uniform clearing price — full upside, and a negative bid can settle negative.
5

LCOE — Your Break-Even Price

The Levelized Cost of Energy (LCOE) is the minimum price at which a plant must sell electricity to break even over its lifetime. It's the single most important number for an energy asset.

LCOE Formula
LCOE = total_lifetime_costs / total_lifetime_energy_output

LCOE = (capex_annualized + annual_opex) / (capacity_mw × capacity_factor × 8760_hours)

// capex_annualized = capex × [r(1+r)^n / ((1+r)^n - 1)] ← loan amortization
// r = discount rate (5% default), n = plant life (20 years default)
// capacity_factor = fraction of time plant operates at full output

Worked example: Solar Farm

ParameterValueNotes
CapEx$1,000/kW × 500 MW= $500M total capital
Discount rate5%
Plant life20 years
Annualized CapEx~$40.1M/yearUsing annuity formula
Annual OpEx$10/MWh × 8760 × 500 × 0.25= $10.95M/year
Annual output500 MW × 0.25 × 8,760 h= 1,095,000 MWh/year
LCOE~$46.5/MWhMinimum break-even price

Any revenue above $46.5/MWh is pure profit. Any revenue below means you're losing money on every unit dispatched. Set your DA floor price at or above your LCOE.

⚠️
Watch for capacity factor: A Solar plant's LCOE assumes it generates at 25% capacity on average. If a storm reduces output to 10%, your effective cost per MWh dispatched rises — even though the nominal LCOE stays the same. That's why weather events hurt profitability.
6

Carbon Pricing

Carbon pricing adds a cost to every tonne of CO₂ emitted. This makes fossil fuel plants more expensive to operate, which shifts them higher in the merit order and gives zero-carbon plants a competitive advantage.

Adjusted Operating Cost with Carbon
adjusted_opex = base_opex + (co2_intensity × carbon_price)

// co2_intensity: tonnes CO₂ per MWh generated
// Coal: 0.90 tCO₂/MWh
// Gas: 0.45 tCO₂/MWh
// Nuclear, Solar, Wind, Battery: 0 tCO₂/MWh

Impact by difficulty setting

DifficultyCarbon PriceExtra cost for CoalExtra cost for Gas
Easy$0/tonne$0/MWh$0/MWh
Medium$20/tonne+$18/MWh+$9/MWh
Hard$60/tonne+$54/MWh+$27/MWh

Real World

The EU Emissions Trading System (ETS) carbon price hit €100/tonne in 2023. At that price, coal plants pay ~€90/MWh extra — making them nearly uncompetitive against renewables and gas in most markets.

7

Battery Storage & Arbitrage

A battery earns money not from burning fuel, but from price arbitrage — buying cheap electricity when prices are low, storing it, and selling it back when prices are high.

Battery Charge Cost
charge_cost = charge_mw × clearing_price × hours_per_block
// Battery is a price-taker when charging — buys at clearing price
Battery Discharge Revenue
discharge_revenue = dispatched_mw × clearing_price × hours_per_block
// Battery discharges into RT market like any other plant
Arbitrage Profit
profit = discharge_revenue - charge_cost - round_trip_losses
// round_trip_efficiency = 88% — only 88% of purchased energy is stored
// profitable when: P_discharge > P_charge × (1 / 0.88) ≈ P_charge × 1.14

State of Charge (SoC) constraint

You can't discharge more energy than you stored. The battery has a fixed energy capacity (800 MWh) and power capacity (200 MW), and charging loses 12% to round-trip inefficiency. The SoC constraints in the game are:

soc_gain = charge_mw × hours_per_block × 0.88
max_discharge_mw = min(200 MW, soc_mwh / hours_per_block)
max_charge_mw = min(200 MW, (800 - soc_mwh) / (hours_per_block × 0.88))
🔋
Optimal strategy: Charge during overnight blocks (blocks 0 and 1) when demand is low and prices are near the DA floor. Discharge during peak blocks (3 and 4) when clearing prices are highest. This mirrors how grid-scale batteries actually operate.

Real World

As of 2024, the US has over 20 GW of grid-scale battery storage — mostly 4-hour lithium-ion systems co-located with solar. Hornsdale Power Reserve in Australia (150 MW / 194 MWh) is often credited with saving South Australia over $150M in its first 2 years through frequency arbitrage.

8

How Your Profit Is Calculated

After each block, the game calculates your profit using this exact formula:

Profit = Revenue Operating Cost Fixed O&M
Revenue (DA strategy)
revenue = dispatched_mw × your_da_price × 4 hours
Revenue (RT strategy)
revenue = dispatched_mw × clearing_price × 4 hours
Operating Cost
op_cost = dispatched_mw × adjusted_lcoe × 4 hours

// adjusted_lcoe = base_lcoe × curveball_modifier + carbon_adder
// curveball_modifier: e.g. +50% for Pipeline Freeze on a gas plant
Fixed O&M (owed every block, even at 0 MW dispatched)
fixed_om = capex × capacity / 1000

// e.g. Nuclear: $6,000/block · Coal: $2,000 · Solar: $500 · Gas: $270
// staff, maintenance, and equipment loans don't stop when the plant idles —
// this is why withholding capacity is a real gamble

Blackout outcomes

If total supply falls short of demand, the grid blacks out — but the game distinguishes why:

  • Natural blackout — a weather event derated plants, or demand physically exceeded available capacity. No financial penalty; the game continues with a full explanation of what happened.
  • Preventable blackout — players withheld capacity that could have kept the lights on. All players lose $50,000 and the game ends, with a per-player breakdown of who withheld how much.

This mirrors real market design: grid operators investigate every shortfall, and strategic withholding that causes scarcity is market manipulation — the kind of behavior that ended Enron.

Emergency Dispatch (special event)
revenue = dispatched_mw × clearing_price × 4 hours × 2
// 2× revenue multiplier applied for emergency dispatch blocks
// 30-second bid window — grid emergency, move fast!
9

Capacity Markets & PPAs

Selling energy isn't the only way a power plant earns money. Two other revenue streams from real markets appear in the game:

Capacity Market (Hard mode)

At each season start, the ISO procures 15% of total nameplate capacity as reserve through a sealed availability auction. You offer a price in $/MW; the cheapest offers win.

Capacity Payment
payment = committed_mw × your_availability_price

// paid up front at season start — even if you're never dispatched
// obligation: committed MW becomes your minimum offer every block
📌
Why this exists: A gas peaker might run only a few hours a year, yet the grid needs it on standby for heatwaves. Energy revenue alone can't keep it alive — capacity payments are availability insurance. PJM's capacity market moves over $10B per year.

Data Center PPA (when the data center goes live)

A one-time sealed-bid auction for a Power Purchase Agreement: the lowest $/MWh bid wins a private contract to serve the data center for the rest of the game, bypassing the market.

PPA Settlement (each block)
delivered = min(dc_size_mw, your_available_capacity)
ppa_profit = delivered × (ppa_price − your_cost) × 4 hours

// delivered capacity is reserved off-market — you can't sell it twice
// intermittent plants deliver less (solar at night = 0); the shortfall
// falls back on the market as extra demand
💡
The trade-off: guaranteed revenue vs. market upside. If clearing prices spike above your PPA price, you're locked out of the windfall. If they crash, you're protected. This is exactly the calculation behind real corporate PPAs — Google, Microsoft, and Amazon are the world's largest PPA buyers.
10

Plant Types & Economics

Each plant type has distinct economics, risk profile, and strategic role. Choose the one that matches your preferred playstyle.

☀️
Solar Farm
Low LCOE · 500 MW
Zero fuel cost. No output at night (blocks 0–1). Vulnerable to storms. Pairs well with Battery.
💨
Wind Farm
Low LCOE · 400 MW
Variable output by season. Strongest in Fall and overnight. Low cost but unpredictable revenue.
⚛️
Nuclear
High CapEx · 1,000 MW
95%+ capacity factor. Zero fuel cost. Must-run: minimum offer is 95% of capacity every block — bid low to guarantee dispatch. High capex but extremely reliable revenue.
🏭
Coal Plant
Medium LCOE · 800 MW
High capacity, high CO₂ emissions. Summer derate from heat. Carbon pricing increases costs significantly.
🔥
Gas Peaker
Variable LCOE · 300 MW
Fast ramp, flexible dispatch. Fuel price volatility (Pipeline Freeze). High value during scarcity events.
🔋
Battery Storage
Arbitrage · 200 MW / 800 MWh
Buy cheap, sell expensive. No fuel cost. SoC-constrained. Most complex — highest skill ceiling.

Curveball effects by plant type

EventAffected PlantEffectSeason
⛈️ Storm SystemSolar–60% capacitySpring
🌡️ Extreme HeatwaveCoal–25% capacity (cooling towers)Summer
🧊 Pipeline FreezeGas+50% fuel costWinter
🌍 Geopolitical TensionCoal + Gas+30% fuel costAny
📉 Demand ResponseAll RT bidders–10% demandSummer
🖥️ DC AI Training SpikeAll (opportunity)+40% demandAny (if DC active)
🚨 Emergency DispatchAll (opportunity)+30% demand, 2× revenue, 30s bid timerAny

Further Reading

Want to go deeper into real electricity market mechanics?

  • FERC: Energy Primer — A Handbook of Energy Market Basics — The US federal regulator's accessible overview of how markets work
  • Lazard LCOE Analysis — Published annually, tracks real-world LCOE by technology
  • PJM Learning Center — Interactive explainers from the world's largest competitive electricity market
  • Our World in Data: Energy — Global data on energy production, consumption, and emissions