Summary
From the plot of games played under the Caro-Kann ECO codes (B10-19), the advance variation (in B12, but B12 does hold some other miscellaneous variations) has been consistently the most popular line since the 1990's and peaked at 1,803 games in 2008.
Methodology
- I extracted the games from the Fritz for Fun 13 into PGN format
- I ran the following R code, which extracts the year (mandatory) and the ECO (optional). The games are filtered to ECO codes B10-19 (Caro-Kann) and for games from 1927. Why 1927? That is when it debuted at the top:
He [Capablanca] used it [the Caro-Kann] in his crushing strategic destruction of Aaron Nimzowitsch in the great New York tournament of 1927.
Source: The Caro-Kann: Move-by-Move by IM Lakdawala
- The raw number of games are then plotted over time. Unfortunately my data only goes to 2009
library(ggplot2) # For making the charts look nice
dat <- readLines("C:/Users/Peter/SkyDrive/Chess/Fritz for fun 13 database.pgn") # Read in the data from a local file
eco <- dat[grep("\\[ECO ",dat)] # Extract the ECO, if there is one
eco <- sub("\\[ECO \"","",eco)
eco <- sub("\"\\]","",eco)
year <- dat[grep("\\[Date ",dat)]
year <- sub("\\[Date [\"]","",year)
year <- sub("\\..*","",year)
year <- as.numeric(year)
ecoindex <- grep("\\[ECO ",dat) # Find which lines have an eco
yearindex <- grep("\\[Date ",dat)
yearindex <- yearindex + 5 # The date is always the 3rd pgn tag and is mandatory. The ECO, if present, is the 8th tag
matchindex <- yearindex %in% ecoindex # This code finds which games have both a year and eco tag
year <- year[matchindex] # Filter out games without an ECO
countgame <- table(eco,year)
countgame <- as.data.frame(countgame) # Convert to a data frame
Carocode <- paste("B",10:19,sep="") # ECO codes for the Caro-Kann are B10-B19
Carogame <- countgame[which(countgame$eco %in% Carocode),] # Keep the data for the Caro-Kann ECO codes
Carogame$year <- as.numeric(as.character(Carogame$year))
Carogame <- Carogame[Carogame$year>=1927,]
p1 <- ggplot(Carogame,aes(x=year,y=Freq,group=eco))+geom_line(aes(colour=eco)) # Plot count of games
p1 <- p1 + ggtitle("Number of Caro-Kann games over time") + ylab("Number of games")
print(p1)