Accuracy scores

Quarterbacks:

passing TDs: [0.63, 0.76, 0.85, 0.92, 0.83, 1.0, 0.71, 1.1, 1.07, 1.0, 0.88, 0.92, 1.01, 0.91, 0.95, 1.03, 0.9] [0.53, 1.02, 1.03, 1.43, 0.96, 1.48, 0.85, 1.9, 1.96, 1.5, 0.94, 1.18, 1.94, 1.21, 1.17, 1.48, 1.24] 0.91 on whatifsports

[0.6, 0.87, 0.95, 0.85, 0.8, 1.17, 0.75, 0.87, 1.2, 1.08, 0.94, 0.86, 1.19, 0.95, 0.88, 1.11] [0.58, 1.1, 1.46, 1.19, 1.05, 2.25, 0.84, 1.38, 2.12, 1.67, 1.25, 1.02, 2.42, 1.51, 1.14, 1.94] 0.941875 on cbs

[0.53, 0.81, 1.05, 0.86, 0.96, 1.0, 0.77, 0.8, 1.05, 0.89, 1.05, 1.12, 0.82, 0.9, 0.75, 1.11, 0.83] [0.63, 1.1, 1.59, 1.23, 1.22, 1.82, 0.95, 1.12, 2.11, 1.42, 1.55, 1.59, 1.27, 1.57, 1.05, 1.89, 1.33] 0.9 on fftoday

passing yards: [59.12, 51.41, 60.38, 43.42, 62.75, 54.61, 46.65, 68.16, 64.57, 47.98, 53.18, 48.2, 71.17, 60.53, 76.0, 74.13, 70.32] [60995.76, 59483.15, 59421.12, 64051.5, 64188.71, 63307.72, 63942.7, 63250.07, 60478.05, 65358.25, 61798.69, 62601.31, 62197.21, 61948.94, 61671.71, 61495.65, 62673.05] 59.5635294118 on whatifsports

[57.33, 57.27, 65.56, 53.19, 66.27, 59.45, 49.37, 65.93, 51.9, 45.85, 48.87, 62.05, 76.22, 59.81, 75.95, 70.15] [4696.47, 4615.95, 6968.3, 4309.71, 7132.73, 4933.04, 4356.9, 7628.72, 4837.57, 3511.65, 3579.66, 5767.87, 7632.98, 5801.06, 9379.48, 7397.7] 60.323125 on cbs

[55.32, 56.86, 59.27, 51.59, 59.78, 70.41, 56.77, 67.44, 54.68, 48.95, 56.05, 57.35, 82.32, 50.43, 75.5, 81.11, 56.38] [4463.53, 4453.43, 5968.09, 3725.41, 6741.26, 7232.41, 5276.86, 8146.64, 4843.21, 3758.84, 3983.45, 5496.76, 8471.77, 4551.1, 7806.1, 9869.89, 5973.04] 61.1888235294 on fftoday

interceptions: [0.8, 0.83, 0.78, 0.8, 0.6, 0.65, 0.75, 0.73, 0.72, 0.89, 0.86, 0.59, 0.83, 0.68, 0.73, 0.74, 0.82] [0.95, 1.15, 0.83, 1.01, 0.63, 0.64, 0.79, 0.75, 0.77, 1.1, 1.24, 0.59, 0.89, 0.63, 0.73, 0.93, 0.94] 0.752941176471 on whatifsports

[0.76, 0.88, 0.73, 0.81, 0.75, 0.77, 0.78, 0.7, 0.74, 0.88, 0.93, 0.62, 0.89, 0.63, 0.73, 0.84] [1.0, 1.56, 0.78, 1.15, 0.99, 1.03, 0.88, 0.82, 0.95, 1.31, 1.57, 0.74, 0.99, 0.72, 0.91, 1.34] 0.7775 on cbs

[0.58, 0.86, 0.64, 0.77, 0.83, 0.64, 0.64, 0.88, 1.11, 0.95, 0.7, 0.35, 0.73, 0.67, 0.8, 0.61, 0.67] [0.89, 1.43, 0.73, 1.5, 1.26, 0.82, 0.82, 1.28, 1.74, 1.89, 1.4, 0.35, 1.27, 1.05, 1.0, 0.94, 1.0] 0.731176470588 on fftoday

rushing yards: [8.53, 10.7, 8.31, 11.18, 11.77, 9.97, 9.49, 8.04, 10.82, 10.13, 7.17, 10.04, 7.33, 7.72, 8.15, 15.11, 10.45] [140.51, 264.21, 157.46, 225.06, 450.58, 294.74, 309.71, 140.98, 221.05, 324.15, 106.84, 215.07, 148.0, 123.81, 119.92, 731.37, 247.35] 9.70058823529 on whatifsports

[9.95, 9.76, 8.0, 11.5, 13.09, 13.86, 10.77, 9.32, 8.37, 11.21, 8.55, 13.18, 6.86, 11.24, 10.3, 18.56, 13.04] [178.47, 254.62, 101.91, 235.14, 517.26, 596.95, 311.32, 148.92, 112.05, 377.74, 176.75, 271.65, 96.23, 247.52, 164.3, 1207.67, 334.54] 11.0329411765 on fftoday

[8.45, 10.32, 9.53, 12.12, 11.72, 12.88, 10.15, 10.03, 9.3, 12.98, 8.48, 9.09, 9.16, 9.41, 9.41, 15.95] [130.86, 228.51, 183.78, 249.23, 425.46, 476.07, 271.77, 196.63, 154.11, 446.09, 140.67, 161.87, 220.97, 151.8, 161.2, 802.14] 10.56125 on cbs

rushing TDs: [0.1, 0.14, 0.06, 0.16, 0.16, 0.09, 0.06, 0.17, 0.13, 0.11, 0.04, 0.08, 0.17, 0.25, 0.08, 0.1, 0.09] [0.07, 0.17, 0.03, 0.13, 0.12, 0.05, 0.03, 0.2, 0.08, 0.06, 0.01, 0.04, 0.13, 0.21, 0.04, 0.06, 0.06] 0.117058823529 on whatifsports

[0.1, 0.17, 0.18, 0.19, 0.3, 0.17, 0.12, 0.25, 0.22, 0.08, 0.09, 0.09, 0.22, 0.27, 0.15, 0.19] [0.07, 0.2, 0.12, 0.13, 0.25, 0.12, 0.07, 0.29, 0.21, 0.06, 0.06, 0.08, 0.19, 0.23, 0.12, 0.13] 0.174375 on cbs

[0.16, 0.1, 0.0, 0.14, 0.13, 0.05, 0.0, 0.16, 0.11, 0.11, 0.05, 0.06, 0.14, 0.24, 0.05, 0.11, 0.08] [0.16, 0.1, 0.0, 0.14, 0.13, 0.05, 0.0, 0.24, 0.11, 0.11, 0.05, 0.06, 0.14, 0.24, 0.05, 0.11, 0.08] 0.0994117647059 on fftoday

total error: [4.47, 4.75, 5.94, 6.03, 5.59, 6.45, 5.27, 5.62, 5.37, 4.92, 4.65, 7.29, 5.92, 5.96, 6.49, 6.32, 5.46] [4.6, 4.52, 5.57, 5.92, 5.6, 6.27, 5.11, 6.07, 6.02, 4.76, 5.05, 6.79, 6.66, 6.7, 6.65, 6.76, 5.04] [4.96, 4.38, 5.89, 5.92, 5.69, 6.74, 4.85, 6.0, 6.02, 4.74, 5.45, 6.06, 6.94, 6.78, 6.2, 6.99, 5.39]

RBs:

rushing yards: [23.28, 25.12, 25.61, 25.36, 25.13, 21.29, 20.39, 21.45, 21.04, 24.33, 27.74, 24.57, 24.5, 25.23, 19.01, 23.94, 28.1] [891.69, 1217.32, 1189.12, 1218.16, 1001.17, 804.73, 622.94, 862.2, 761.77, 989.51, 1604.37, 1147.15, 1053.09, 1127.02, 648.89, 857.02, 1300.21] 23.8876470588 on whatifsports

[25.7, 26.22, 24.7, 26.51, 28.12, 27.55, 25.06, 22.74, 24.3, 24.63, 29.99, 26.09, 26.7, 27.43, 22.31, 26.11] [1050.97, 1143.76, 1216.15, 1011.8, 1253.68, 1145.34, 908.55, 953.71, 943.59, 944.87, 1641.71, 1336.37, 1214.32, 1409.29, 828.53, 1215.3] 25.885 on cbs

[21.89, 22.76, 22.44, 30.65, 22.38, 20.64, 23.18, 24.87, 21.08, 18.27, 27.39, 25.88, 18.92, 24.11, 21.21, 21.68, 27.24] [945.73, 842.22, 947.69, 1659.96, 829.08, 759.79, 979.03, 1037.03, 696.08, 564.15, 2195.61, 1441.24, 696.1, 1136.59, 823.56, 890.21, 1327.85] 23.2111764706 on fftoday

rushing TDs: [0.47, 0.46, 0.46, 0.47, 0.48, 0.46, 0.42, 0.5, 0.43, 0.47, 0.45, 0.49, 0.45, 0.41, 0.45, 0.39, 0.46] [0.29, 0.28, 0.27, 0.38, 0.31, 0.3, 0.26, 0.4, 0.39, 0.45, 0.45, 0.38, 0.3, 0.29, 0.29, 0.23, 0.33] 0.454117647059 on whatifsports

[0.44, 0.47, 0.44, 0.5, 0.5, 0.46, 0.41, 0.45, 0.5, 0.53, 0.41, 0.39, 0.44, 0.41, 0.44, 0.28] [0.39, 0.41, 0.43, 0.58, 0.45, 0.42, 0.39, 0.43, 0.6, 0.69, 0.61, 0.42, 0.46, 0.41, 0.42, 0.23] 0.441875 on cbs

[0.35, 0.35, 0.34, 0.46, 0.43, 0.39, 0.39, 0.37, 0.42, 0.42, 0.39, 0.35, 0.31, 0.3, 0.31, 0.26, 0.37] [0.35, 0.41, 0.34, 0.54, 0.43, 0.39, 0.45, 0.42, 0.67, 0.48, 0.82, 0.41, 0.31, 0.3, 0.31, 0.26, 0.41] 0.365294117647 on fftoday

receptions:

[1.52, 1.41, 1.77, 1.39, 1.81, 1.59, 1.23, 1.49, 1.2, 1.59, 1.41, 1.46, 1.59, 1.55, 1.38, 1.51] [3.45, 3.22, 4.65, 3.14, 5.03, 3.87, 2.19, 4.02, 2.48, 3.52, 3.37, 3.34, 3.84, 4.21, 3.12, 4.03] 1.49375 on cbs

[1.22, 1.35, 1.63, 1.19, 1.38, 1.46, 1.42, 1.53, 1.33, 1.52, 1.32, 1.12, 1.51, 1.54, 1.51, 1.61, 1.3] [2.78, 3.35, 4.88, 2.65, 4.41, 4.82, 3.58, 4.53, 2.75, 4.06, 3.96, 2.47, 3.46, 4.95, 3.77, 4.39, 3.17] 1.40823529412 on fftoday

receiving yards: [12.03, 14.12, 13.19, 12.59, 17.4, 12.56, 11.63, 14.51, 13.86, 11.0, 12.41, 10.09, 13.68, 10.51, 12.79, 13.38, 11.31] [345.71, 547.65, 347.76, 274.61, 730.59, 280.79, 269.37, 498.68, 387.46, 309.07, 330.6, 204.7, 472.97, 193.44, 363.82, 360.09, 234.1] 12.7682352941 on whatifsports

[13.97, 16.28, 17.71, 15.52, 18.48, 15.23, 14.94, 16.76, 13.91, 13.94, 14.79, 13.48, 15.86, 11.15, 12.33, 11.69] [358.26, 675.58, 485.56, 470.05, 582.3, 391.23, 383.85, 654.34, 310.59, 322.38, 358.57, 279.67, 618.3, 188.64, 279.09, 296.29] 14.7525 on cbs

[10.14, 16.24, 13.97, 12.46, 14.43, 13.79, 13.21, 15.32, 15.33, 12.3, 12.71, 9.85, 16.18, 11.95, 14.56, 14.92, 13.93] [205.43, 689.97, 398.91, 266.23, 526.27, 375.36, 320.16, 603.21, 486.0, 329.58, 325.14, 204.68, 726.03, 262.16, 377.59, 408.45, 315.93] 13.6052941176 on fftoday

receiving TDs: [0.15, 0.16, 0.11, 0.13, 0.16, 0.11, 0.2, 0.1, 0.13, 0.09, 0.09, 0.13, 0.17, 0.17, 0.11, 0.13, 0.12] [0.08, 0.12, 0.05, 0.1, 0.09, 0.04, 0.16, 0.04, 0.08, 0.04, 0.02, 0.07, 0.1, 0.1, 0.03, 0.05, 0.05] 0.132941176471 on whatifsports

[0.13, 0.11, 0.08, 0.09, 0.12, 0.09, 0.17, 0.17, 0.15, 0.05, 0.07, 0.06, 0.12, 0.08, 0.01, 0.07] [0.1, 0.14, 0.06, 0.12, 0.1, 0.07, 0.19, 0.14, 0.14, 0.05, 0.06, 0.05, 0.1, 0.06, 0.01, 0.07] 0.098125 on cbs

[0.05, 0.05, 0.03, 0.0, 0.08, 0.04, 0.13, 0.11, 0.08, 0.09, 0.04, 0.09, 0.1, 0.14, 0.03, 0.11, 0.09] [0.05, 0.05, 0.03, 0.0, 0.08, 0.04, 0.13, 0.11, 0.08, 0.09, 0.04, 0.09, 0.1, 0.14, 0.03, 0.11, 0.09] 0.0741176470588 on fftoday

total error: [4.98, 4.97, 4.93, 4.77, 5.89, 4.56, 4.94, 4.71, 4.18, 5.53, 4.24, 4.73, 4.19, 4.63, 4.87, 4.61, 4.65] [4.79, 4.9, 4.82, 4.69, 6.19, 4.65, 5.09, 4.82, 4.32, 5.27, 4.33, 4.9, 4.12, 5.02, 5.12, 4.41, 4.7] [4.96, 5.09, 4.69, 5.09, 5.97, 4.98, 4.98, 4.53, 4.64, 5.58, 4.9, 4.74, 4.77, 5.14, 4.62, 4.75, 4.88]

WRs:

receptions: [1.69, 1.79, 1.96, 1.66, 1.72, 1.84, 1.53, 2.02, 1.88, 1.85, 1.78, 1.98, 2.01, 1.97, 1.91, 1.54, 1.91] [4.51, 4.92, 6.54, 4.07, 4.41, 5.44, 3.8, 6.39, 5.74, 5.42, 4.77, 5.94, 5.69, 5.86, 5.37, 4.09, 5.61] 1.82588235294 on whatifsports

[1.49, 1.9, 2.28, 2.03, 1.95, 2.05, 1.79, 2.18, 1.67, 1.9, 1.87, 2.32, 1.98, 2.26, 1.54, 1.8] [3.9, 5.97, 7.36, 6.46, 5.62, 6.52, 4.88, 7.3, 4.12, 5.38, 5.62, 8.34, 5.6, 7.12, 3.58, 5.52] 1.938125 on cbs

[1.69, 1.89, 1.82, 1.82, 2.0, 1.97, 2.03, 1.86, 1.6, 1.88, 1.67, 2.3, 2.26, 2.19, 2.0, 1.84, 2.17] [4.36, 5.34, 5.88, 5.88, 6.22, 5.92, 6.3, 6.36, 4.12, 5.63, 4.84, 7.7, 6.97, 6.95, 6.0, 5.14, 7.0] 1.94058823529 on fftoday

receiving yards: [26.34, 28.37, 28.76, 26.67, 26.7, 29.13, 28.43, 33.85, 29.0, 30.94, 30.04, 28.55, 31.49, 34.02, 30.06, 23.2, 31.03] [998.51, 1203.41, 1288.88, 1082.98, 1282.73, 1152.78, 1253.11, 1820.66, 1455.12, 1398.08, 1387.65, 1125.29, 1825.35, 2069.8, 1167.04, 933.06, 1728.94] 29.2105882353 on whatifsports

[29.9, 33.51, 37.4, 36.28, 36.11, 32.44, 36.57, 37.71, 29.0, 33.98, 32.38, 30.7, 34.54, 40.89, 27.43, 29.99] [1220.24, 1717.57, 1979.06, 1853.33, 1964.11, 1485.6, 1839.77, 2248.43, 1213.87, 1783.57, 1611.59, 1443.44, 2154.91, 2513.77, 1029.23, 1242.77] 33.676875 on cbs

[28.31, 28.59, 28.36, 27.21, 32.24, 30.19, 32.57, 33.02, 32.51, 32.98, 29.63, 31.27, 39.94, 35.41, 28.86, 25.11, 31.24] [1209.23, 1334.64, 1225.03, 1254.73, 1722.89, 1333.05, 1468.89, 1689.11, 1502.74, 1643.22, 1510.74, 1292.62, 2535.61, 2147.57, 1127.93, 982.78, 1717.85] 31.0258823529 on fftoday

receiving TDs: [0.44, 0.43, 0.46, 0.49, 0.49, 0.47, 0.47, 0.47, 0.47, 0.46, 0.46, 0.47, 0.51, 0.43, 0.42, 0.48, 0.44] [0.24, 0.3, 0.33, 0.36, 0.36, 0.31, 0.3, 0.36, 0.34, 0.33, 0.3, 0.37, 0.4, 0.24, 0.34, 0.37, 0.29] 0.462352941176 on whatifsports

[0.6, 0.47, 0.53, 0.54, 0.6, 0.59, 0.5, 0.59, 0.49, 0.58, 0.46, 0.61, 0.71, 0.57, 0.57, 0.49] [0.53, 0.44, 0.47, 0.53, 0.6, 0.55, 0.42, 0.59, 0.44, 0.55, 0.41, 0.62, 0.7, 0.55, 0.57, 0.48] 0.55625 on cbs

[0.62, 0.45, 0.45, 0.55, 0.65, 0.43, 0.49, 0.59, 0.42, 0.49, 0.53, 0.54, 0.58, 0.51, 0.53, 0.62, 0.46] [0.67, 0.45, 0.45, 0.61, 0.7, 0.54, 0.54, 0.68, 0.51, 0.54, 0.58, 0.59, 0.58, 0.51, 0.63, 0.62, 0.5] 0.524117647059 on fftoday

total error: [4.75, 5.8, 5.52, 5.46, 6.05, 5.32, 5.45, 6.62, 6.03, 6.01, 5.35, 6.09, 6.15, 6.79, 4.94, 4.65, 6.05] [4.95, 5.74, 5.56, 5.37, 5.9, 5.28, 5.43, 6.65, 6.15, 5.88, 5.39, 5.63, 6.93, 6.51, 4.87, 4.42, 5.84] [4.63, 5.65, 5.59, 5.56, 6.01, 5.72, 5.52, 6.63, 6.22, 5.93, 5.7, 5.92, 6.61, 6.92, 4.92, 4.59, 5.74]

TEs:

receptions: [1.93, 1.88, 1.55, 1.74, 1.49, 1.74, 1.55, 2.01, 1.78, 1.41, 1.41, 1.12, 1.76, 1.88, 1.8, 2.01, 1.7] [5.95, 5.77, 3.35, 5.28, 3.38, 5.82, 3.57, 5.94, 4.42, 3.17, 3.42, 2.0, 4.79, 6.5, 4.95, 9.31, 4.5] 1.69176470588 on whatifsports

[1.9, 1.88, 1.53, 1.9, 1.56, 1.56, 1.66, 1.77, 1.94, 1.52, 1.52, 1.26, 1.93, 1.9, 1.81, 2.35] [5.27, 5.92, 3.73, 5.78, 4.38, 3.91, 4.93, 4.74, 5.26, 3.86, 3.39, 2.27, 5.75, 6.39, 5.29, 12.49] 1.749375 on cbs

[1.88, 1.52, 1.38, 1.73, 1.46, 1.54, 1.52, 1.67, 2.04, 1.47, 1.65, 1.35, 1.57, 1.17, 1.32, 2.04, 1.68] [5.32, 4.14, 2.62, 5.45, 3.96, 4.96, 3.71, 5.59, 6.48, 3.94, 4.45, 3.35, 4.09, 2.57, 3.25, 10.73, 4.75] 1.58764705882 on fftoday

receiving yards: [21.12, 23.25, 20.22, 20.6, 19.8, 25.05, 21.24, 25.6, 22.07, 17.52, 22.38, 21.21, 28.78, 24.62, 22.42, 25.47, 15.47] [653.3, 1029.07, 521.04, 737.38, 625.95, 983.26, 644.23, 1125.89, 651.77, 521.08, 1023.5, 792.96, 1290.78, 900.17, 660.48, 1065.52, 365.31] 22.1658823529 on whatifsports

[23.69, 24.64, 22.91, 26.03, 21.8, 24.73, 20.86, 23.79, 23.45, 22.53, 24.43, 21.15, 30.1, 26.65, 22.81, 41.35] [788.06, 1040.55, 761.94, 1074.02, 771.9, 895.25, 801.9, 914.72, 883.52, 1020.83, 957.27, 964.38, 1404.23, 1041.89, 780.74, 2489.05] 25.0575 on cbs

[22.2, 19.9, 17.86, 22.27, 16.42, 20.17, 19.95, 20.74, 24.57, 27.53, 22.85, 17.15, 23.65, 24.48, 16.93, 30.65, 14.75] [678.52, 747.69, 506.71, 803.36, 513.25, 550.08, 639.48, 893.11, 847.61, 1334.24, 1085.25, 430.45, 786.35, 935.7, 424.57, 1691.12, 324.54] 21.2982352941 on fftoday

receiving TDs: [0.48, 0.44, 0.38, 0.41, 0.41, 0.45, 0.33, 0.5, 0.5, 0.43, 0.36, 0.38, 0.35, 0.4, 0.31, 0.39, 0.36] [0.53, 0.49, 0.26, 0.41, 0.38, 0.33, 0.16, 0.55, 0.41, 0.34, 0.25, 0.3, 0.23, 0.26, 0.12, 0.25, 0.23] 0.404705882353 on whatifsports

[0.44, 0.61, 0.44, 0.4, 0.47, 0.44, 0.53, 0.5, 0.44, 0.52, 0.47, 0.5, 0.38, 0.48, 0.44, 0.44] [0.44, 0.77, 0.38, 0.48, 0.42, 0.4, 0.51, 0.54, 0.46, 0.46, 0.48, 0.46, 0.33, 0.5, 0.38, 0.41] 0.46875 on cbs

[0.36, 0.31, 0.29, 0.41, 0.25, 0.38, 0.43, 0.33, 0.48, 0.47, 0.4, 0.2, 0.35, 0.43, 0.25, 0.46, 0.25] [0.44, 0.31, 0.29, 0.5, 0.25, 0.38, 0.43, 0.41, 0.57, 0.47, 0.4, 0.2, 0.35, 0.52, 0.25, 0.54, 0.25] 0.355882352941 on fftoday

total error: [3.92, 4.62, 4.34, 4.24, 4.26, 3.8, 4.67, 4.37, 4.69, 3.56, 4.06, 3.94, 3.65, 4.54, 3.09, 5.24, 2.74] [4.1, 4.61, 4.09, 4.82, 4.55, 3.77, 4.86, 4.92, 4.82, 3.67, 3.89, 3.97, 4.39, 4.63, 3.25, 5.42, 2.69] [4.29, 4.09, 4.05, 4.25, 5.02, 3.88, 4.98, 5.16, 4.66, 3.52, 4.24, 3.76, 4.22, 4.8, 3.22, 5.53, 3.0]

Ks:

fgs: [0.92, 1.17, 1.05, 1.13, 0.89, 0.86, 0.97, 0.93, 1.07, 0.85, 0.96, 0.89, 1.27, 1.0, 0.99, 1.25, 0.96] [1.47, 1.83, 1.52, 1.66, 1.46, 0.95, 1.39, 1.16, 1.42, 1.07, 1.61, 1.33, 2.32, 1.71, 1.65, 2.39, 1.43] 1.00941176471 on whatifsports

[1.08, 1.16, 1.2, 1.33, 1.12, 1.07, 1.34, 0.95, 1.34, 1.04, 1.13, 1.1, 1.26, 1.1, 1.15, 1.42] [2.35, 1.98, 2.2, 2.38, 1.8, 1.66, 2.33, 1.43, 2.37, 1.75, 2.31, 1.77, 2.35, 2.05, 2.09, 3.2] 1.174375 on cbs

[1.16, 1.11, 1.04, 1.39, 1.26, 0.96, 0.88, 1.12, 1.05, 0.95, 1.24, 1.04, 1.08, 1.2, 0.72, 1.42, 1.21] [2.36, 2.25, 1.88, 2.7, 3.0, 1.42, 1.6, 1.96, 2.19, 1.5, 2.44, 1.58, 2.31, 2.56, 1.2, 3.27, 2.38] 1.10764705882 on fftoday

pats: [1.02, 0.88, 1.25, 1.12, 1.16, 1.07, 0.98, 1.38, 1.04, 1.1, 1.21, 1.12, 1.36, 1.06, 1.26, 1.33, 0.99] [1.54, 1.23, 2.51, 2.42, 1.99, 1.88, 1.66, 2.89, 1.51, 2.17, 2.28, 1.66, 2.89, 1.65, 2.16, 2.5, 1.61] 1.13705882353 on whatifsports

[1.13, 1.13, 1.27, 1.37, 1.16, 1.33, 0.91, 1.35, 1.16, 1.1, 1.29, 1.32, 1.48, 1.27, 1.08, 1.42] [1.86, 1.95, 2.77, 2.68, 1.8, 2.85, 1.73, 2.81, 2.24, 2.16, 2.34, 2.42, 3.95, 2.62, 1.72, 3.26] 1.235625 on cbs

[0.96, 0.93, 1.27, 1.09, 1.3, 1.27, 0.8, 1.19, 0.95, 1.05, 1.36, 1.12, 1.42, 1.2, 1.16, 1.46, 1.07] [1.52, 1.5, 2.81, 2.48, 2.26, 2.96, 1.04, 2.5, 1.52, 2.14, 2.8, 1.73, 3.19, 2.16, 1.8, 3.08, 2.03] 1.15294117647 on fftoday

total error: [3.88, 4.43, 4.01, 3.87, 3.29, 3.28, 3.14, 3.4, 3.45, 2.77, 3.24, 2.55, 3.15, 3.52, 3.9, 4.65, 3.29] [3.88, 4.28, 3.81, 4.08, 3.31, 3.15, 3.5, 3.18, 3.83, 3.2, 3.57, 1.93, 3.59, 3.7, 3.84, 4.37, 3.57] [4.0, 4.33, 3.87, 3.96, 3.49, 3.33, 3.61, 3.86, 3.56, 3.15, 3.63, 2.58, 3.75, 3.72, 4.09, 4.39, 3.47]

DEFs:

fumbles: [0.61, 0.64, 0.73, 0.6, 0.83, 0.55, 0.8, 0.6, 0.52, 0.63, 0.52, 0.75, 0.59, 0.59, 0.59, 0.58] [0.66, 0.68, 0.99, 0.68, 1.28, 0.54, 1.15, 0.72, 0.36, 0.86, 0.53, 0.99, 0.7, 0.58, 0.53, 0.68] 0.633125 on cbs

sacks: [1.32, 1.73, 1.55, 1.3, 1.39, 1.85, 1.29, 1.33, 1.32, 1.8, 1.48, 1.6, 1.41, 1.91, 1.85, 1.58, 1.38] [2.51, 5.06, 3.25, 2.7, 2.81, 5.52, 2.54, 2.54, 3.35, 5.55, 3.43, 3.97, 3.46, 5.58, 5.69, 3.8, 2.93] 1.53470588235 on whatifsports

[1.3, 1.89, 1.69, 1.44, 1.72, 1.85, 1.22, 1.78, 1.4, 1.6, 1.71, 1.7, 1.52, 1.83, 1.72, 1.91] [2.65, 5.88, 4.11, 3.14, 4.61, 5.31, 2.58, 4.51, 3.55, 4.01, 4.18, 4.48, 3.04, 4.99, 4.83, 5.56] 1.6425 on cbs

ints: [0.8, 0.84, 0.72, 0.87, 0.62, 0.65, 0.75, 0.75, 0.77, 0.9, 0.9, 0.59, 0.92, 0.65, 0.71, 0.69, 0.82] [0.94, 1.14, 0.73, 1.16, 0.66, 0.64, 0.79, 0.86, 0.93, 1.12, 1.31, 0.6, 1.1, 0.58, 0.71, 0.88, 0.92] 0.761764705882 on whatifsports

[0.83, 0.83, 0.75, 0.87, 0.78, 0.77, 0.78, 0.68, 0.77, 0.9, 0.96, 0.65, 0.98, 0.59, 0.78, 0.75] [0.96, 1.27, 0.83, 1.28, 1.02, 1.0, 0.88, 0.89, 1.0, 1.26, 1.66, 0.79, 1.24, 0.7, 1.02, 1.28] 0.791875 on cbs

pts: [6.77, 6.86, 7.83, 8.94, 7.42, 7.62, 6.59, 7.9, 8.58, 6.82, 8.84, 7.68, 9.39, 8.83, 8.63, 9.01, 7.51] [66.1, 68.43, 89.69, 117.73, 93.6, 97.02, 78.43, 105.49, 109.18, 80.98, 118.76, 88.27, 114.71, 120.83, 104.33, 107.11, 82.94] 7.95411764706 on whatifsports

[6.88, 8.28, 8.0, 9.73, 7.55, 9.17, 7.58, 8.0, 9.38, 7.1, 9.66, 8.32, 9.61, 9.78, 6.8, 10.66] [75.64, 105.95, 103.19, 146.98, 87.69, 147.38, 95.89, 106.05, 143.17, 89.57, 134.88, 95.99, 149.4, 146.72, 73.1, 150.63] 8.53125 on cbs

[5.2, 5.85, 5.38, 5.6, 4.96, 5.27, 4.28, 4.66, 4.11, 4.55, 4.79, 5.37, 5.22, 4.85, 4.35, 5.71, 4.62] [4.46, 5.81, 5.31, 5.85, 4.89, 4.91, 4.12, 5.4, 4.86, 5.14, 4.67, 8.7, 4.82, 5.76, 4.18, 5.34, 4.7] [4.46, 5.81, 5.31, 5.85, 4.89, 4.91, 4.12, 5.4, 4.86, 5.14, 4.67, 8.7, 4.82, 5.76, 4.18, 5.34, 4.7]

Accuracy scores

NFL – Preseason Week 1

This week will be the beginning of my foray into daily fantasy, as DraftKings is offering contests for the NFL preseason. For week 1, the starters will be playing at most a series or two, so it is useless to project based off of statistics from last year. I will mostly be looking at second or third-string players and picking the players who have the greatest opportunity to play. This guy did preseason predictions last year; a few of his posts on be found on his blog: https://rotogrinders.com/profiles/sethayates/blog-posts.

I will be targeting players who have the most opportunities to play based on injuries to other players. We will assume the non-injured/suspended player highest on the depth chart will get the first-team snaps and not bother with rostering them.

Pittsburgh, Minnesota, Green Bay, New England, New Orleans, Baltimore, New York Jets, Detroit, Miami, Chicago, Washington, Cleveland, Dallas, and San Diego are the teams playing this week.

Looking at depth charts from FootballGuys (http://subscribers.footballguys.com/apps/depthchart.php), Ourlads (http://www.ourlads.com/nfldepthcharts/), and RotoWorld (http://www.rotoworld.com/teams/depth-charts/NFL.aspx), we see that the following teams stand out for their lack of depth in certain positions:

QBs: Pittsburgh (Landry Jones), Patriots (Jimmy Garrappolo), Jets (Bryce Petty), Browns (Manziel), Packers (Tolzein), Jimmy Clausen

RBs: Dallas (Gus Johnson), Cleveland RB: Isaiah Crowell, New England (), New York Jets (), New Orleans

WRs: Miami (Matt Hazel, Rishard Matthews), Baltimore: DeAndre Carter, Michael Campanaro, New England (Josh Boyce, Aaron Dobson), Cleveland (), Green Bay (), Lucky Whitehead, Josh Lenz, Ty Montgomery

TEs: New Orleans (Jack Tabb and Kevin Brock), Washington (Chase Dixon)

NFL – Preseason Week 1

PRank Algorithm

The PRank algorithm is a modification of the perceptron classifier. It aims to classify items into tiers, where the tiers are ordered.

def prank(stats, tiers, n_tiers, iters):
    '''
    Implementation of the PRank algorithm (http://papers.nips.cc/paper/2023-pranking-with-ranking.pdf)
    stats: array of features, a column per feature
    tiers: array of rankings, one ranking per player
    n_tiers: number of tiers, tiers are numbered 0,1,2,...,n_tiers-1
    iters: number of iterations of loop
    '''
    n_players = len(stats)
    n_features = len(stats[0])
    w = np.zeros([n_features])   # weight of features
    b = np.zeros([n_tiers])      # cutoffs for rankings
    b[-1] = np.inf
    loss = 0    # total loss incurred by algorithm
    for i in range(iters):      # update w and b given training example x
        n = i%n_players
        x = stats[n].copy()
        y = np.argmax(b > np.dot(x,w))   # get rank of x as determined by current w and b
        y_act = tiers[n]
        loss += abs(y-y_act)
        if y != tiers[n]:      # if predicted rank is not actual rank, update w and b
            y_arr = np.repeat([1,-1],[y_act,n_tiers-1-y_act])   # create y array
            t_arr = np.zeros([n_tiers-1])
            y_n = np.argmax(b >= np.dot(x,w))
            if y_act > y_n:
                t_arr = np.repeat([0,1,0],[y_n,y_act-y_n,n_tiers-1-y_act])
            else:
                t_arr = np.repeat([0,-1,0],[y_act,y_n-y_act,n_tiers-1-y_n])
            w = w + np.sum(t_arr)*x
            b[:-1] = b[:-1] - t_arr
    return w, b, 1.0*loss/iters

def rank(x,w,b):
    '''
    Subroutine for use in PRank
    Calculates rank of example x given feature weights w and rank cutoffs b
    '''
    return np.argmax(b > np.dot(x,w))
PRank Algorithm

Knapsack Algorithm

Daily fantasy lineups contain a set number of players: for example, DraftKings has 1 QB, 2 RB, 3 WR, 1 TE, 1 flex, and 1 defense. This is the perfect setup for the multiple-choice knapsack problem (see http://www.diku.dk/users/pisinger/95-1.pdf).

We will use a modified version of the dynamic programming method used to solve the regular knapsack problem in order to solve the multiple-choice knapsack problem. We deal with the problem of flex picks by solving problems with restrictions of 3 RB, 4WR, and 2 flex, respectively, and then picking the highest-scoring solution.

The code for the algorithm is as follows. The remove_dom function is an auxiliary used to remove dominated items to speed up the algorithm and return an approximation. We do not use it.

# objects is an array of items, each item has a name, weight, and price
def remove_dom(objects):
    # sort objects in increasing order of weight
    objects = objects[objects[:,1].argsort()]
    # iterate through all pairs of objects, if there is an object i such that w_i>w_j but p_i<p_j,
    # remove object i because it is dominated by object j
    new_objects = np.empty([len(objects[0])])
    for i in range(len(objects)):
        is_dom = False
        for j in range(i):
            if objects[i][2] < objects[j][2]:
                is_dom = True
        if not is_dom:
            new_objects = np.vstack((new_objects,objects[i]))
    return new_objects[1:]

class Contents:
    items = []
    types = []
    value = 0
    def __init__(self, num_types):
        self.types = [0 for i in range(num_types)]
    def add(self, object_num, object_value, object_type):
        new_contents = Contents(len(self.types))
        new_contents.items = list(self.items)
        new_contents.items.append(object_num)
        new_contents.types = list(self.types)
        new_contents.types[object_type] += 1
        new_contents.value = self.value
        new_contents.value += object_value
        return new_contents

# objects array has form [name, weight, value, type]
# cat_indices is a list of the last indices for each category; for example, if cat_indices=[1,2],
# item 0 would be in category 0, item 1 would be in category 1, and the rest of the items would be in category 2
# cap_cap is a list of the capacity, or maximum number of items, in each category
def multi_knapsack(objects, weight_limit, cat_indices, cat_cap):
    assert len(cat_indices) == len(cat_cap)
    cat = len(cat_indices) # number of categories
    
    # don't remove dominated objects; this makes it harder to exactly fulfill the salary cap
    '''
    split_arr = np.split(objects, cat_indices)
    for i in range(len(split_arr)-1):
        split_arr[i] = remove_dom(split_arr[i])
        after_index = len(split_arr[i])
        # update cat_indices to account for dropped items
        if i==0:
            cat_indices[i] = after_index
        else:
            cat_indices[i] = cat_indices[i-1] + after_index
    new_objects = np.vstack(split_arr[:-1])
    '''
    
    new_objects = objects
    max_array = [[[Contents(len(cat_cap)) for k in range(cat_cap[int(new_objects[j][3])]+1)] for i in range(weight_limit+1)] for j in range(len(new_objects))]
    max_array = [[[Contents(len(cat_cap))] for i in range(weight_limit+1)]] + max_array
    
    for i in range(len(new_objects)):
        weight = int(new_objects[i][1])
        value = int(new_objects[i][2])
        object_type = int(new_objects[i][3])
        last_same_type = False
        if i != 0:
            last_same_type = object_type == int(new_objects[i-1][3])
        
        for w in range(1,weight_limit+1):
            for n in range(cat_cap[object_type]+1):
                if weight  max_array[i][w][n].value:
                            max_array[i+1][w][n] = max_array[i][w-weight][n-1].add(i,value,object_type)
                        else:
                            max_array[i+1][w][n] = max_array[i][w][n]
                    elif n==1:
                        max_array[i+1][w][n] = max_array[i][w-weight][-1].add(i,value,object_type)
                else:
                    if last_same_type:
                        max_array[i+1][w][n] = max_array[i][w][n]
                    else:
                        max_array[i+1][w][n] = max_array[i][w][-1]
                    
    return [new_objects[i][0] for i in max_array[len(new_objects)][weight_limit][-1].items]
Knapsack Algorithm

Accuracy of Automatic Player

At the end of this study, we wish to be 95% confident of the interval in which the true winning percentage p lies. We can model the outcome of entering head-to-heads as having a binomial distribution with parameter p (here we assume the contests are independent, which is generally true for head-to-heads). Suppose that we win w games and lose l games. Then, our current estimate of p is r=w/(w+l). We also desire that our error e=|p-r|<0.02. The variance of r is then r(1-r)/n, where n is the number of contests entered. Thus, if a z-score of z is desired, z \sqrt(r(1-r)/n)<e, or n>r(1-r)z^2/e^2. r is approximately p, and we would like z=2 and e=0.02. Thus, n>2400. There are 17 weeks in the NFL season, so we would have to enter around 150 contests per week.

We wish to maintain enough bankroll to play for an entire season. Thus, assuming that we bet x percent of our original bankroll on each week, we would like to have less than a 1% chance of losing our entire bankroll by the end of the season. To perform a worst case analysis, suppose that we lose all of our bets in losing weeks, and break even in winning weeks. Then, we lose all of our bankroll if we have 100/x losing weeks. If we assume, probability of having a losing week is 40%, then we must have x<8 (http://www.wolframalpha.com/input/?i=sum+from+i%3D12+to+17+of+%2817+choose+i%29*0.4^i*0.6^%2817-i%29). Since this is a worst-case scenario, we may set x=10, so we bet 10% of our bankroll each week. This is still a very conservative number though, so we can probably raise this to 15-20% and still be safe.
We plan to play in low-stakes head-to-head ($1, $2, or $5 buy-ins) so we expect our average buy-in to be about $3. Since we play 150 contests per week, we will bet around $500 per week, so our total bankroll will be $5000.
Accuracy of Automatic Player

Fantasy Football

Fantasy sites offer several different types of fantasy games, including head-to-head, 50/50, and tournaments. Head-to-head pits the user against one other user, and the user whose team scores the most points is paid. 50/50 games enter the user into a large pool of other users, and the top half of high-scoring users is paid. Tournaments also enter the user into a large field, but only the top 10-20% of high scorers are paid.

We plan to enter most of the money in head-to-heads, since this will be the best way to test the accuracy of our automatic player while reducing risk. Tournaments are not optimal because they involve a huge amount of variance and can be disproportionately influenced by fluke events. We plan to use only a few different lineups each week, so 50/50s are riskier than head-to-heads. If we enter a badly predicted lineup into many 50/50s, it is likely that we will lose all the 50/50s for that week, whereas head-to-heads are more independent events.

The “juice”, or percentage of the entry fee that sites keep for themselves, is 10% both on DraftKings and FanDuel, the two largest daily fantasy sites. This means that we would have to have a long-term winning percentage of 55.6% to break even on head-to-heads. Our automatic player aims for a winning percentage of 60%: not too optimistic, but still in the money.
Fantasy Football