Introduction
The New York Independent System Operator is a non-profit that manages New York State’s electricity grid and administers electricity markets through auctions. This data from NYISO shows auction results for a six-month period between November 2015 and April 2016.
Load packages.
## Warning: package 'knitr' was built under R version 3.2.4
## Warning: package 'stringr' was built under R version 3.2.4
## Warning: package 'tidyr' was built under R version 3.2.4
## Warning: package 'dplyr' was built under R version 3.2.4
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Warning: package 'ggplot2' was built under R version 3.2.4
## Loading required package: bitops
##
## Attaching package: 'RCurl'
## The following object is masked from 'package:tidyr':
##
## complete
Import CSV, column header = True.
Season: Winter 2015-2016
auction<-data.frame(read.csv(file="auction.csv", header=T, stringsAsFactors = FALSE))
kable(auction)
| G-J Locality |
Awarded (MW) |
434.4 |
192.5 |
127.1 |
117.5 |
126 |
112 |
| G-J Locality |
Price ($/kW - Month) |
$3.78 |
$3.75 |
$3.80 |
$3.75 |
$3.74 |
$3.70 |
| LI |
Awarded (MW) |
34.2 |
27.2 |
38.2 |
38.2 |
23.2 |
19.2 |
| LI |
Price ($/kW - Month) |
$1.55 |
$1.55 |
$1.85 |
$1.85 |
$1.55 |
$1.55 |
| NYC |
Awarded (MW) |
996.1 |
417.6 |
350.3 |
298.9 |
295.7 |
260.6 |
| NYC |
Price ($/kW - Month) |
$6.65 |
$6.42 |
$6.32 |
$6.32 |
$6.22 |
$6.22 |
| NYCA |
Awarded (MW) |
2004.5 |
497.5 |
557.7 |
438.4 |
485.5 |
337.9 |
| NYCA |
Price ($/kW - Month) |
$0.66 |
$1.48 |
$1.72 |
$1.75 |
$0.75 |
$0.50 |
| HQ |
Awarded (MW) |
400 |
0 |
0 |
0 |
0 |
0 |
| HQ |
Price ($/kW - Month) |
$0.66 |
$1.48 |
$1.72 |
$1.75 |
$0.75 |
$0.50 |
| IESO |
Awarded (MW) |
0 |
0 |
0 |
0 |
0 |
0 |
| IESO |
Price ($/kW - Month) |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
| NE |
Awarded (MW) |
0 |
0 |
0 |
0 |
0 |
0 |
| NE |
Price ($/kW - Month) |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
| PJM |
Awarded (MW) |
0 |
0 |
0 |
0 |
0 |
0 |
| PJM |
Price ($/kW - Month) |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
$0.00 |
Remove dollar sign, convert to numeric.
auction<-as.data.frame(lapply(auction, function(y) gsub("\\$", "", y)))
auction[, c(3:7)] <- sapply(auction[, c(3:7)], as.character)
auction[, c(3:7)] <- sapply(auction[, c(3:7)], as.numeric)
kable(auction)
| G-J Locality |
Awarded (MW) |
434.40 |
192.50 |
127.10 |
117.50 |
126.00 |
112 |
| G-J Locality |
Price (/kW - Month) |
3.78 |
3.75 |
3.80 |
3.75 |
3.74 |
3.70 |
| LI |
Awarded (MW) |
34.20 |
27.20 |
38.20 |
38.20 |
23.20 |
19.2 |
| LI |
Price (/kW - Month) |
1.55 |
1.55 |
1.85 |
1.85 |
1.55 |
1.55 |
| NYC |
Awarded (MW) |
996.10 |
417.60 |
350.30 |
298.90 |
295.70 |
260.6 |
| NYC |
Price (/kW - Month) |
6.65 |
6.42 |
6.32 |
6.32 |
6.22 |
6.22 |
| NYCA |
Awarded (MW) |
2004.50 |
497.50 |
557.70 |
438.40 |
485.50 |
337.9 |
| NYCA |
Price (/kW - Month) |
0.66 |
1.48 |
1.72 |
1.75 |
0.75 |
0.50 |
| HQ |
Awarded (MW) |
400.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0 |
| HQ |
Price (/kW - Month) |
0.66 |
1.48 |
1.72 |
1.75 |
0.75 |
0.50 |
| IESO |
Awarded (MW) |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0 |
| IESO |
Price (/kW - Month) |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
| NE |
Awarded (MW) |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0 |
| NE |
Price (/kW - Month) |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
| PJM |
Awarded (MW) |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0 |
| PJM |
Price (/kW - Month) |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0.00 |
## 'data.frame': 16 obs. of 8 variables:
## $ Bidder: Factor w/ 8 levels "G-J Locality",..: 1 1 4 4 6 6 7 7 2 2 ...
## $ Result: Factor w/ 2 levels "Awarded (MW)",..: 1 2 1 2 1 2 1 2 1 2 ...
## $ Nov : num 434.4 3.78 34.2 1.55 996.1 ...
## $ Dec : num 192.5 3.75 27.2 1.55 417.6 ...
## $ Jan : num 127.1 3.8 38.2 1.85 350.3 ...
## $ Feb : num 117.5 3.75 38.2 1.85 298.9 ...
## $ Mar : num 126 3.74 23.2 1.55 295.7 ...
## $ Apr : Factor w/ 10 levels "0","0.00 ","0.50 ",..: 5 8 6 4 7 10 9 3 1 3 ...
Subset of just non-zero rows.
auction <- subset(auction[c(1:10),])
kable(auction)
| G-J Locality |
Awarded (MW) |
434.40 |
192.50 |
127.10 |
117.50 |
126.00 |
112 |
| G-J Locality |
Price (/kW - Month) |
3.78 |
3.75 |
3.80 |
3.75 |
3.74 |
3.70 |
| LI |
Awarded (MW) |
34.20 |
27.20 |
38.20 |
38.20 |
23.20 |
19.2 |
| LI |
Price (/kW - Month) |
1.55 |
1.55 |
1.85 |
1.85 |
1.55 |
1.55 |
| NYC |
Awarded (MW) |
996.10 |
417.60 |
350.30 |
298.90 |
295.70 |
260.6 |
| NYC |
Price (/kW - Month) |
6.65 |
6.42 |
6.32 |
6.32 |
6.22 |
6.22 |
| NYCA |
Awarded (MW) |
2004.50 |
497.50 |
557.70 |
438.40 |
485.50 |
337.9 |
| NYCA |
Price (/kW - Month) |
0.66 |
1.48 |
1.72 |
1.75 |
0.75 |
0.50 |
| HQ |
Awarded (MW) |
400.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0 |
| HQ |
Price (/kW - Month) |
0.66 |
1.48 |
1.72 |
1.75 |
0.75 |
0.50 |
Rename columns.
colnames(auction)[c(3:8)] <- c("2015-11","2015-12","2016-01","2016-02","2016-03","2016-04")
kable(auction)
| G-J Locality |
Awarded (MW) |
434.40 |
192.50 |
127.10 |
117.50 |
126.00 |
112 |
| G-J Locality |
Price (/kW - Month) |
3.78 |
3.75 |
3.80 |
3.75 |
3.74 |
3.70 |
| LI |
Awarded (MW) |
34.20 |
27.20 |
38.20 |
38.20 |
23.20 |
19.2 |
| LI |
Price (/kW - Month) |
1.55 |
1.55 |
1.85 |
1.85 |
1.55 |
1.55 |
| NYC |
Awarded (MW) |
996.10 |
417.60 |
350.30 |
298.90 |
295.70 |
260.6 |
| NYC |
Price (/kW - Month) |
6.65 |
6.42 |
6.32 |
6.32 |
6.22 |
6.22 |
| NYCA |
Awarded (MW) |
2004.50 |
497.50 |
557.70 |
438.40 |
485.50 |
337.9 |
| NYCA |
Price (/kW - Month) |
0.66 |
1.48 |
1.72 |
1.75 |
0.75 |
0.50 |
| HQ |
Awarded (MW) |
400.00 |
0.00 |
0.00 |
0.00 |
0.00 |
0 |
| HQ |
Price (/kW - Month) |
0.66 |
1.48 |
1.72 |
1.75 |
0.75 |
0.50 |
Reshape data to create month rows.
auction<-gather(auction,"Result","Amount",3:8)
## Warning: attributes are not identical across measure variables; they will
## be dropped
colnames(auction)[c(3)] <- c("Month")
kable(auction)
| G-J Locality |
Awarded (MW) |
2015-11 |
434.4 |
| G-J Locality |
Price (/kW - Month) |
2015-11 |
3.78 |
| LI |
Awarded (MW) |
2015-11 |
34.2 |
| LI |
Price (/kW - Month) |
2015-11 |
1.55 |
| NYC |
Awarded (MW) |
2015-11 |
996.1 |
| NYC |
Price (/kW - Month) |
2015-11 |
6.65 |
| NYCA |
Awarded (MW) |
2015-11 |
2004.5 |
| NYCA |
Price (/kW - Month) |
2015-11 |
0.66 |
| HQ |
Awarded (MW) |
2015-11 |
400 |
| HQ |
Price (/kW - Month) |
2015-11 |
0.66 |
| G-J Locality |
Awarded (MW) |
2015-12 |
192.5 |
| G-J Locality |
Price (/kW - Month) |
2015-12 |
3.75 |
| LI |
Awarded (MW) |
2015-12 |
27.2 |
| LI |
Price (/kW - Month) |
2015-12 |
1.55 |
| NYC |
Awarded (MW) |
2015-12 |
417.6 |
| NYC |
Price (/kW - Month) |
2015-12 |
6.42 |
| NYCA |
Awarded (MW) |
2015-12 |
497.5 |
| NYCA |
Price (/kW - Month) |
2015-12 |
1.48 |
| HQ |
Awarded (MW) |
2015-12 |
0 |
| HQ |
Price (/kW - Month) |
2015-12 |
1.48 |
| G-J Locality |
Awarded (MW) |
2016-01 |
127.1 |
| G-J Locality |
Price (/kW - Month) |
2016-01 |
3.8 |
| LI |
Awarded (MW) |
2016-01 |
38.2 |
| LI |
Price (/kW - Month) |
2016-01 |
1.85 |
| NYC |
Awarded (MW) |
2016-01 |
350.3 |
| NYC |
Price (/kW - Month) |
2016-01 |
6.32 |
| NYCA |
Awarded (MW) |
2016-01 |
557.7 |
| NYCA |
Price (/kW - Month) |
2016-01 |
1.72 |
| HQ |
Awarded (MW) |
2016-01 |
0 |
| HQ |
Price (/kW - Month) |
2016-01 |
1.72 |
| G-J Locality |
Awarded (MW) |
2016-02 |
117.5 |
| G-J Locality |
Price (/kW - Month) |
2016-02 |
3.75 |
| LI |
Awarded (MW) |
2016-02 |
38.2 |
| LI |
Price (/kW - Month) |
2016-02 |
1.85 |
| NYC |
Awarded (MW) |
2016-02 |
298.9 |
| NYC |
Price (/kW - Month) |
2016-02 |
6.32 |
| NYCA |
Awarded (MW) |
2016-02 |
438.4 |
| NYCA |
Price (/kW - Month) |
2016-02 |
1.75 |
| HQ |
Awarded (MW) |
2016-02 |
0 |
| HQ |
Price (/kW - Month) |
2016-02 |
1.75 |
| G-J Locality |
Awarded (MW) |
2016-03 |
126 |
| G-J Locality |
Price (/kW - Month) |
2016-03 |
3.74 |
| LI |
Awarded (MW) |
2016-03 |
23.2 |
| LI |
Price (/kW - Month) |
2016-03 |
1.55 |
| NYC |
Awarded (MW) |
2016-03 |
295.7 |
| NYC |
Price (/kW - Month) |
2016-03 |
6.22 |
| NYCA |
Awarded (MW) |
2016-03 |
485.5 |
| NYCA |
Price (/kW - Month) |
2016-03 |
0.75 |
| HQ |
Awarded (MW) |
2016-03 |
0 |
| HQ |
Price (/kW - Month) |
2016-03 |
0.75 |
| G-J Locality |
Awarded (MW) |
2016-04 |
112 |
| G-J Locality |
Price (/kW - Month) |
2016-04 |
3.70 |
| LI |
Awarded (MW) |
2016-04 |
19.2 |
| LI |
Price (/kW - Month) |
2016-04 |
1.55 |
| NYC |
Awarded (MW) |
2016-04 |
260.6 |
| NYC |
Price (/kW - Month) |
2016-04 |
6.22 |
| NYCA |
Awarded (MW) |
2016-04 |
337.9 |
| NYCA |
Price (/kW - Month) |
2016-04 |
0.50 |
| HQ |
Awarded (MW) |
2016-04 |
0 |
| HQ |
Price (/kW - Month) |
2016-04 |
0.50 |
Reshape data to create result columns.
auction<-spread(auction,Result,Amount)
colnames(auction)[c(3,4)] <- c("Awarded","Price")
str(auction)
## 'data.frame': 30 obs. of 4 variables:
## $ Bidder : Factor w/ 8 levels "G-J Locality",..: 1 1 1 1 1 1 2 2 2 2 ...
## $ Month : chr "2015-11" "2015-12" "2016-01" "2016-02" ...
## $ Awarded: chr "434.4" "192.5" "127.1" "117.5" ...
## $ Price : chr "3.78" "3.75" "3.8" "3.75" ...
auction[, c(3:4)] <- sapply(auction[, c(3:4)], as.numeric)
str(auction)
## 'data.frame': 30 obs. of 4 variables:
## $ Bidder : Factor w/ 8 levels "G-J Locality",..: 1 1 1 1 1 1 2 2 2 2 ...
## $ Month : chr "2015-11" "2015-12" "2016-01" "2016-02" ...
## $ Awarded: num 434 192 127 118 126 ...
## $ Price : num 3.78 3.75 3.8 3.75 3.74 3.7 0.66 1.48 1.72 1.75 ...
| G-J Locality |
2015-11 |
434.4 |
3.78 |
| G-J Locality |
2015-12 |
192.5 |
3.75 |
| G-J Locality |
2016-01 |
127.1 |
3.80 |
| G-J Locality |
2016-02 |
117.5 |
3.75 |
| G-J Locality |
2016-03 |
126.0 |
3.74 |
| G-J Locality |
2016-04 |
112.0 |
3.70 |
| HQ |
2015-11 |
400.0 |
0.66 |
| HQ |
2015-12 |
0.0 |
1.48 |
| HQ |
2016-01 |
0.0 |
1.72 |
| HQ |
2016-02 |
0.0 |
1.75 |
| HQ |
2016-03 |
0.0 |
0.75 |
| HQ |
2016-04 |
0.0 |
0.50 |
| LI |
2015-11 |
34.2 |
1.55 |
| LI |
2015-12 |
27.2 |
1.55 |
| LI |
2016-01 |
38.2 |
1.85 |
| LI |
2016-02 |
38.2 |
1.85 |
| LI |
2016-03 |
23.2 |
1.55 |
| LI |
2016-04 |
19.2 |
1.55 |
| NYC |
2015-11 |
996.1 |
6.65 |
| NYC |
2015-12 |
417.6 |
6.42 |
| NYC |
2016-01 |
350.3 |
6.32 |
| NYC |
2016-02 |
298.9 |
6.32 |
| NYC |
2016-03 |
295.7 |
6.22 |
| NYC |
2016-04 |
260.6 |
6.22 |
| NYCA |
2015-11 |
2004.5 |
0.66 |
| NYCA |
2015-12 |
497.5 |
1.48 |
| NYCA |
2016-01 |
557.7 |
1.72 |
| NYCA |
2016-02 |
438.4 |
1.75 |
| NYCA |
2016-03 |
485.5 |
0.75 |
| NYCA |
2016-04 |
337.9 |
0.50 |
Show plots.
ggplot(
auction, aes(x = Month, y = Awarded, fill=Bidder)) +
geom_bar(stat="identity", position="dodge") + scale_fill_brewer()+
ggtitle("Awarded Megawatts by Bidder")+
theme(panel.grid.minor.x=element_blank(), panel.grid.major.x=element_blank(),axis.text=element_text(angle=0))+
labs(x="Year and Month",y="Awarded Megawatts")

ggplot(
auction, aes(x = Month, y = Price, fill=Bidder)) +
geom_bar(stat="identity", position="dodge") + scale_fill_brewer()+
ggtitle("Price per KW by Bidder")+
theme(panel.grid.minor.x=element_blank(), panel.grid.major.x=element_blank(),axis.text=element_text(angle=0))+
labs(x="Year and Month",y="Price in $")

Conclusion
The New York Control Area (NYCA) had an outlier in November 2015 with a significantly higher amount of awarded megawatts. The NYCA consistently received the largest amount of awarded megawatts. Hyrdo-Quebec (HQ) had few to no awarded megawatts between December 2015 and April 2016. Price per KW was more stable for each locality, with NYC registering prices double or triple the other zone bidders.