Saturday, February 12, 2011

Is Semyon Varlamov Elite?

Well, let's take a look. I ran 100,000 trials of Varlamov's career to date, assuming a .915 talent total and .920 at even strength (approximately NHL average).

Varlamov thus far has been .930 at ES and .918 total (he had a brutal PK sv% last season, about 80%, only better than Vesa Toskala).

Results:

          0.904    0.909    0.914    0.919     0.924     0.929     0.934    0.939    0.944    1.000
ES      2472    6380     14007    22662    24754    17897    8691    2629     451       57
Total   1969    5982     16916   24357     25097    18152    5889    1485     143       10

The numbers denote the number of times I got a save percentage less than or equal to the one heading the column, but greater than the one heading the previous column (so first column is save percentage under .904, second is .904 to .909, etc).


So there's still roughly a 11% chance Varlamov is simply average and overperforming at even strength. That's not all that big. It's tougher to say where Varlamov lies overall.

Looks to me like George McPhee has a 22-year old stud on his hands.

Code is after the jump. I think it's fairly straightforward should you ever want to edit it. If you aren't familiar with Java and want standard deviation and mean coded in, shoot me an email and I'll send you a revised program.

 public class VarlamovSim
   {
   //At ES Varlamov is career 1122 on 1207 shots for .930
   //Total Varlamov is career 1366 on 1488 shots for .918
      private static final int TRIALS=100000;
      private static final int ESSHOTS=1207;
      private static final int SHOTS=1488;
      private static int[][] freqdist=new int[2][10];
       /*intervals: .000 to .904, .905 to .909, .910 to .914, .915 to .919, .920 to .924
                       .925 to .929, .930 to .934, .935 to .939, .940 to .944, .945 to 1.000
                   first row is ES, second row is total    */
       public static void main(String[] args)
      {
      //If Varlamov is a .920 talent goalie at ES, what are the chances he posts .930?
      //If Varlamov is a .915 talent goalie, what are the chances he posts a .918?
     
         int essaves;
         int saves;
         double essvpct;
         double svpct;
         for(int n=1; n<=TRIALS; n++)
         {
            essaves=0;
            saves=0;
            for(int shots=1; shots<=ESSHOTS; shots++)
               if(Math.random()<.920)
                  essaves++;
            saves = essaves;
            //special teams shots = SHOTS - ESSHOTS
            for(int spshots=1; spshots<=SHOTS-ESSHOTS; spshots++)
               if(Math.random()<.915)
                  saves++;
            essvpct=essaves/(double)ESSHOTS;
            svpct=saves/(double)SHOTS;
            if(essvpct<=.904)
               freqdist[0][0]++;
            else if(essvpct<=.909)
               freqdist[0][1]++;
            else if(essvpct<=.914)
               freqdist[0][2]++;
            else if(essvpct<=.919)
               freqdist[0][3]++;
            else if(essvpct<=.924)
               freqdist[0][4]++;
            else if(essvpct<=.929)
               freqdist[0][5]++;
            else if(essvpct<=.934)
               freqdist[0][6]++;
            else if(essvpct<=.939)
               freqdist[0][7]++;
            else if(essvpct<=.944)
               freqdist[0][8]++;
            else
               freqdist[0][9]++;
              
            if(svpct<=.904)
               freqdist[1][0]++;
            else if(svpct<=.909)
               freqdist[1][1]++;
            else if(svpct<=.914)
               freqdist[1][2]++;
            else if(svpct<=.919)
               freqdist[1][3]++;
            else if(svpct<=.924)
               freqdist[1][4]++;
            else if(svpct<=.929)
               freqdist[1][5]++;
            else if(svpct<=.934)
               freqdist[1][6]++;
            else if(svpct<=.939)
               freqdist[1][7]++;
            else if(svpct<=.944)
               freqdist[1][8]++;
            else
               freqdist[1][9]++;
         }
         for(int r=0; r
         {
            for(int c=0; c
               System.out.print(freqdist[r][c]+"\t");
            System.out.println();
         }
      }
   }



No comments:

Post a Comment