The Challenge
When I received the Nord Pool case study for their Market Surveillance Analyst position, I knew this was my chance to combine everything I’d learned about energy markets, data analysis, and regulatory compliance into one comprehensive project. The assignment had two parts:
Task 1: Respond to a market participant asking if they could inflate their day-ahead bids by 10% to capture higher intraday prices. (Spoiler: this is textbook market manipulation)
Task 2: Design a Python-based alert system to monitor electricity prices across Nordic and Baltic markets during October 6-12, 2025, and identify suspicious behavior.
The task seemed straightforward on paper. But as anyone who’s worked with real market data knows, “straightforward” rarely stays that way for long.
What is Market Surveillance Anyway?
Before diving into the technical details, let me paint a picture of why this work matters.
Imagine you’re running a power plant in Norway. Every day, you bid into the day-ahead market, offering to sell your electricity at a certain price. Nord Pool, Europe’s largest power exchange, collects all these bids and finds the perfect price that balances supply and demand for each hour of the next day.
Now, what if someone figured out they could game this system? What if they could withhold capacity, create artificial scarcity, and drive prices through the roof? That’s where market surveillance comes in. We’re the ones monitoring millions of data points, looking for patterns that don’t quite add up, and separating legitimate market behavior from manipulation.
It’s detective work meets data science, with European energy security hanging in the balance.
Task 1: When “Smart Trading” Crosses the Line
The first task presented a scenario that probably happens more often than regulators would like. A power producer noticed that intraday prices were consistently 10% higher than day-ahead prices. Their question: “Can we just bid 10% higher in day-ahead to avoid selling there, then capture those sweet intraday prices instead?”
My immediate reaction: Oh no, you absolutely cannot do that.
This is what’s called capacity withholding; intentionally restricting your supply from one market to profit in another. It’s explicitly prohibited under REMIT Article 5 (the EU regulation against market manipulation). Here’s why it’s problematic:
- You’re not bidding based on your actual costs
- Your intent is to artificially reduce supply in day-ahead
- This pushes prices up for everyone else
- It distorts the market’s ability to find efficient prices
I spent considerable time crafting a response that was firm but educational. The key was explaining not just what they couldn’t do, but why the regulations exist and how they should actually approach bidding across multiple markets. The complete response covered REMIT compliance, legitimate vs. illegitimate bidding strategies, surveillance detection methods, and the consequences of non-compliance.
It felt good to apply regulatory knowledge in a practical context – this is exactly the kind of guidance market participants need, and surveillance analysts provide.
Task 2: The Data on 365 Days, 13 Zones, One Wild Week
The real challenge was Task 2. I had day-ahead auction prices for all of 2025 across 13 Nordic and Baltic bidding zones: Sweden (SE1-SE4), Norway (NO1-NO5), Finland (FI), Estonia (EE), Latvia (LV), and Lithuania (LT). That’s 8,760 hourly prices per zone, or over 114,000 data points in total.
My mission: Monitor the week of October 6-12, 2025, and build a system to automatically flag suspicious prices.
Here’s where Python became my best friend. Using pandas, I could slice, dice, and analyze this data in ways that would take months in Excel. I structured my approach to:
- Load and clean the data (fixing date formats, handling missing values)
- Calculate baselines using the previous 9 months (January-September 2025)
- Focus specifically on Nordic/Baltic zones as requested
- Isolate the monitoring week for detailed analysis
- Design multiple complementary detection algorithms
Designing the Alert System: Five Ways to Catch Anomalies
How do you detect market manipulation? You can’t just flag “high prices” because sometimes high prices are completely legitimate – a cold snap drives up demand, a power plant trips offline, or transmission lines hit their limits.
I designed five complementary detection methods, each catching different types of suspicious behavior:
1. Statistical Outlier Detection (Z-Score Method)
The bread and butter of anomaly detection. I calculated each zone’s average price and standard deviation over the baseline period, then flagged any price deviating more than 3 standard deviations from the mean. This catches prices that are wildly out of character for that market.
2. Negative Price Detection
Negative prices happen when there’s so much renewable generation that producers literally pay consumers to take their electricity. While legitimate, these are interesting market signals worth investigating.
3. Extreme Price Threshold
Sometimes you need hard limits. I set thresholds at 500 EUR/MWh and 1,000 EUR/MWh. Anything above these deserves immediate attention, regardless of historical patterns.
4. Cross-Border Spread Anomalies
This one’s clever. Neighboring zones should have similar prices unless there’s congestion on the transmission lines between them. I calculated price differences between connected zones and flagged spreads above 200 EUR/MWh. High spreads tell you where the bottlenecks are.
5. Hourly Pattern Breaks
Electricity prices follow predictable patterns: cheap at night (low demand), expensive during peak hours. I looked for hours where this pattern inverted – like expensive nighttime prices or cheap morning prices.
The Results: When October 7th Exploded
When I ran my alert system on the monitoring week, it generated 1,244 alerts across all five methods. But they weren’t evenly distributed.
373 alerts clustered on a single day: October 7, 2025.

Figure 1: Monitoring week prices across all zones. Notice the massive spike on October 7 – those red markers show CRITICAL alerts clustering on that single morning.
Looking at the time series, you can see October 7th stands out like a sore thumb. That day, Lithuania and Latvia hit 1,173.65 EUR/MWh at 7:00 AM. For context, typical Nordic prices hover around 40-60 EUR/MWh. This was nearly 20 times normal.
At the same time, NO4 (northern Norway) saw negative prices as low as -18 EUR/MWh. Think about that for a moment: in the span of one transmission corridor, prices swung from “pay me to take this electricity” to “pay me 1,200 euros per megawatt-hour.”
The heatmap tells the story even more dramatically:

Figure 2: Heatmap showing hourly prices across all zones. The vertical red band on October 7 shows extreme prices (dark red) in Baltic states while northern zones remained normal (green). That’s your smoking gun for transmission congestion.
Those dark red cells on October 7? That’s where my investigation needed to focus.
The Investigation: Enter Storm Amy
This is where market surveillance becomes detective work. I couldn’t just say “high prices = manipulation.” I needed to understand why these prices occurred.
I started by pulling up Nord Pool’s Urgent Market Messages (UMMs) – real-time notifications about transmission outages, system issues, and other market-relevant events. And there it was:
October 7, 2025: Storm Amy
The weather event that explains everything. Let me show you what happened that day in detail:

Figure 3: Hour-by-hour breakdown of October 7. Top panel shows Baltic states hitting 1,174 EUR/MWh (with two distinct spike periods), bottom panel shows northern zones with negative prices. This is a textbook example of transmission congestion during a weather event.
The visualization shows two distinct spike periods:
- Morning spike (06:00-09:00): Baltic prices hit maximum levels
- Evening spike (17:00-21:00): Another surge as demand increased
Meanwhile, northern zones were experiencing the opposite problem – so much wind generation they had negative prices.
What caused this perfect storm?
- High winds in northern Scandinavia → Wind farms generated massive excess power → Negative prices in NO4/SE1
- Transmission constraints → Storm conditions forced operators to reduce transmission line capacity for safety → Power couldn’t flow south
- Cold weather in the Baltics → Heating demand spiked → High demand met with limited supply
- Physical bottleneck → A literal perfect storm creating a price divergence of over 1,190 EUR/MWh
I cross-referenced this with historical UMMs from September showing pre-existing system stress, and intraday market prices (which also spiked, confirming real scarcity). Everything pointed to the same conclusion: this was a legitimate market response to physical constraints, not market manipulation.
Making Sense of 1,244 Alerts
Here’s what the complete alert picture looked like:

Figure 4: Complete surveillance dashboard. The daily alert count (middle chart) shows October 7 as a massive outlier with 373 alerts – nearly double any other day. The pie chart reveals that 68% of all alerts came from cross-border spread detection, immediately signaling transmission congestion as the core issue.
The dashboard tells several stories:
Alert Distribution:
- 68% from cross-border spreads (transmission congestion indicator)
- 19.5% from negative prices (oversupply in north)
- Only 8.8% from extreme absolute prices
- 0.3% from pattern breaks
Severity Breakdown:
- 17 CRITICAL alerts (all on October 7)
- 558 HIGH alerts
- 435 MEDIUM alerts
- 234 LOW alerts
Geographic Concentration:
- Baltic states (EE-LV, LT) dominated alert counts
- Estonia-Latvia interconnection most affected (186 alerts)
- Northern zones had far fewer alerts despite negative prices
This distribution pattern immediately told me: This is about transmission constraints, not market manipulation.
What I Learned: Beyond the Code
Building this system taught me that market surveillance isn’t just about catching the bad guys. It’s about understanding the delicate balance between market efficiency and market integrity.
Technical Insights
- Statistical methods alone aren’t enough. You need domain expertise to interpret alerts correctly
- Multiple detection methods catch different problems. No single algorithm is perfect; you need complementary approaches
- Visualization is critical. Stakeholders need to see the patterns, not just read statistics
- Code quality matters for real deployment. Documentation and usability are as important as algorithmic correctness
Market Insights
- Price spikes aren’t always manipulation. Physical constraints create legitimate scarcity
- Transmission congestion is the key driver. Most extreme prices happen at bottlenecks, not from participant behavior
- Weather impacts are massive. Storm Amy created a 1,190 EUR/MWh spread in a single morning
- Markets adapt quickly. Intraday prices reflected the same scarcity, confirming legitimacy
Regulatory Insights
- REMIT compliance requires judgment. You can’t just apply rules mechanically
- Investigation methodology matters. How you analyze is as important as what you find
- Documentation is your defense. Every decision needs clear justification with evidence
- Context changes everything. The same price can be legitimate or manipulative depending on circumstances
The Bigger Picture: Why This Work Matters
As Europe transitions to renewable energy, market surveillance becomes even more critical. Wind and solar are variable. Sunny days flood the market with cheap power, calm nights create scarcity. This volatility creates opportunities for manipulation, but also creates legitimate extreme prices.
The system I built demonstrates how modern surveillance combines:
- Automated detection: Algorithms flag anomalies 24/7 across millions of data points
- Human expertise: Analysts interpret alerts with market knowledge and judgment
- Regulatory framework: REMIT provides clear rules for assessment
- Systematic investigation: Structured methodology ensures consistency and defensibility
It’s not about trusting algorithms blindly or relying solely on human judgment. It’s about building systems that enhance human capability, letting analysts focus on complex cases while automation handles routine monitoring.
Real-World Applications
This project mirrors exactly what Nord Pool’s surveillance team does daily. They monitor across even more bidding zones (Nord Pool operates in 16 European countries), track multiple market types (day-ahead, intraday, balancing), and coordinate with National Regulatory Authorities across Europe.
The skills I demonstrated, such as Python programming, statistical analysis, market knowledge, regulatory compliance, and professional communication, are precisely what the role requires. But more than that, the project shows I understand the why behind the work: protecting market integrity, ensuring fair prices for consumers, and supporting Europe’s energy transition.
Reflections: The Joy of Applied Analysis
What made this project deeply satisfying wasn’t just solving the technical challenge. It was the feeling of working on something that matters.
When I identified Storm Amy as the cause of those extreme prices, I was demonstrating how surveillance analysts protect billions of euros in market transactions and ensure energy security for millions of people. When I wrote the Task 1 response about capacity withholding, I was showing how clear regulatory guidance prevents market abuse.
There’s something genuinely rewarding about taking raw data, applying rigorous analysis, and emerging with clear answers backed by evidence. About building systems that can scale from monitoring a single week to continuous operation across an entire market. About combining technical precision with market intuition to distinguish manipulation from legitimate behavior.
This is why I want to work in energy markets. Not just because I can do the technical work (though I can). It is also because the work itself combines everything I find intellectually engaging: data analysis, market dynamics, regulatory frameworks, and real-world impact on energy transition.
The code is on GitHub. The visualizations tell the story. The investigation framework is documented.






Leave a Reply