Presentation is loading. Please wait.

Presentation is loading. Please wait.

Simulation of Alberta Pool Prices Scott MacDonald.

Similar presentations

Presentation on theme: "Simulation of Alberta Pool Prices Scott MacDonald."— Presentation transcript:

1 Simulation of Alberta Pool Prices Scott MacDonald

2 Outline High level observations of Alberta power market since deregulation – Load growth, Generation, Historical pool prices Challenges of simulating prices – What drives price spikes? – Alberta’s merit order Description of model Results







9 Summary of Off Peak Prices

10 Summary of On Peak Prices





15 System Marginal Price Pool Price is the time weighted average of the SMP Intersection of Alberta Internal Load (AIL) and merit curve determines the price SMP remains constant as long as AIL is on the price setting block Many factors effect the merit order (Wind, Imports, DCR)

16 Sample SMP Calculation PostTimeSMP ($/MWh) AIL (MW) DCR (MW) BC (MW) SK (MW) WIND (MW) 15:4854.108276512109-126429 Adjusted Load = AIL + SK – WIND – 0.44*DCR = 7496 MW 7496 MW (intersect with merit curve) implies SMP = 52.80 $/MWh

17 Description of Price Simulation Model Very simple (perhaps too simple?) Good: – Reproduces historically “reasonable” CDFs – Stats are inline with history – Spikes happen in the right hour endings (8-23) – Back tests calculate margins with 1 to 1.5 std of mean Bad: – Fails to reproduce the large number of $10/MWh hours. (Coal units marginal price) – Over parameterized? – Assumes that history is likely to repeat itself

18 Model Process 1.Query historical data from SQL database 2.Create shaping matrix 3.Create noise vector 4.Create price path

19 Shaping Matrix (for one month) MonTueWedThuFriSatSun P_1,{1:24}……………… P_2,{1:24}……………… P_3,{1:24}……………… P_4,{1:24}……………… Notation: P_i,{1:24} Day Occurrence Hours 1 through 24

20 Shaping Matrix (aggregate) MonTueWedThuFriSatSun M( P_{1:4},{1:24},1 ) ……………… M( P_{1:4},{1:24},2 ) ……………… M( P_{1:4},{1:24},3 ) ……………… M( P_{1:4},{1:24},4 ) ……………… Notation, M = mean() P_{1:4},{1:24},i Day Occurrence Hours 1 through 24 Year Label


22 Noise Vector Skip the details Broken out into peak (HE 8-23) and off peak (everything else) Remove seasonality by doing – log(P_i) – mean(log(P_month))

23 Create Price Path (pseudocode) 1.Tmp_(i,j) = Smat(i,j) + X*Smat_std(i,j) where X ~ a + b*U(0,1) random variable 2.Tmp = flatten(Tmp) 3.S = S*c where c is scaling constant 4.On_peak_chain = emprand(Nvec_on) 5.Off_peak_chain = emprand(Nvec_off) 6.IF (HE is peak): P = log(S) + On_peak_chain Else: P = log(S) + Off_peak_chain 7.P = exp(P) + X where X ~ a + b*U(0,1) random variable








31 Conclusion Thin supply stack causes wild price variation Generators dispatching intelligently – Scarcity pricing, shadow bidding Naïve approach seems to yield reasonable results (back tested over 1 year of data) Flexible tool to allow users to assess the risk of various hedge scenarios (7x24, 6x16, etc)

Download ppt "Simulation of Alberta Pool Prices Scott MacDonald."

Similar presentations

Ads by Google