At the end of my last post, “Maybe I’m Wrong About BvP“, I mentioned an online survey was forthcoming… And here it is.
I say nobody should go it alone because my hope with this survey is to use the SFBB community to identify the best DFS tools out there, what types of information people want to see, and what sites are currently providing that information. Once we have that information, we can start figuring out the best way to bring it all together.
Please take the time to complete this survey, especially if you are using specific websites, tools, or resources to develop and set your daily lineups.
The survey should load right below, or you can go here to contribute.
I’m a little embarrassed about this. One of the reasons I started this site is because it aggravates me when people over-simplify things or fail to do proper analysis before making claims.
And I just did this myself.
What I Did Wrong
To fully understand where I went wrong, you should probably read Part 2 in my series documenting my DFS journey, “The Book and Addressing the Myths“.
I read The Book. And it’s clear. It’s right there in black and white for all to see. Don’t use BvP to make decisions.
So what’s the problem?
It might help if we first take a step back. When we’re analyzing a particular baseball statistic (pick one), we often find that they’re not predictive from one year to the next. Take batting average for instance. We know that just because a batter hit .300 last year, it’s not a safe bet to count on that repeating itself.
What do we do in this case? We disaggregate the data. We break it down into other component statistics that we can much more reliably project. Instead of looking only at batting average, we’ll start to look at strikeout rate, walk rate, batted ball profiles, historical BABIP, and more.
I Should Have Done This with Batter-Vs-Pitcher Stats
I should have thought to disagreggate things. After all, just like I get along well with certain people and others make me want to drink bleach, some hitters are going to “have an edge” on certain pitchers and they’re going to be overmatched by others.
Not all pitchers are created equal. Not all hitters are created equal.
Whether it’s a batter’s swing path, a pitcher’s arm slot, a batter’s ability to go the other way, a pitcher’s level of deception, a batter’s inability to hit the down-and-in pitch, or a pitcher’s proclivity to throw a changeup in two-strike counts, there are many variables at play in a BvP matchup.
And it is VERY likely that these variables give an edge to the pitcher or the hitter. It’s VERY possible that one of these variables could put the odds overwhelmingly in one party’s favor. It’s also VERY possible that for every factor giving an edge to the hitter that there is an equal and offsetting factor giving an advantage to the pitcher.
It’s not that BvP is useless. It’s not that it has no predictive value. Certain hitters have an edge over specific pitchers. And vice versa. Of course they do. It just makes sense.
The problem is that we don’t know how to separate out the BvP matchups that are predictive those that don’t. Due to small sample sizes, when you go to break it down, BvP matchups probably fall into these nine buckets:
Bucket
Description
1.
Hitters with an edge over a pitcher, exceeding the expectations due to good luck
2.
Hitters with an edge over a pitcher, performing right at expectations due to neutral luck
3.
Hitters with an edge over a pitcher, underperforming the expectations due to bad luck
4.
Hitter with a neutral matchup against a pitcher, exceeding the expectations due to good luck
5.
Hitters with a neutral matchup against a pitcher, performing right at expectations due to neutral luck
6.
Hitters with a neutral matchup against a pitcher, underperforming the expectations due to bad luck
7.
Hitters overmatched by a pitcher, exceeding the expectations due to good luck
8.
Hitters overmatched by a pitcher, performing right at expectations due to neutral luck
9.
Hitters overmatched by a pitcher, underperforming the expectations due to bad luck
And just like when you combine a bunch of bright colors of Play Doh into one and end up with brown; when you combine all of these different buckets into one, you end up thinking that batter versus pitcher matchups don’t matter.
Welcome to the third part in my series documenting my journey of getting started with daily fantasy baseball. In the first segment, I did some introductory background reading. In the second segment, I took a look at some common statistics that you might be inclined to look at but that have been proven to be misleading (Batter versus Pitcher stats and players in the midst of hot or cold streaks).
The book is a tremendous resource if you’re like me and just getting started. I presume it’s also quite helpful even if you’ve been playing the daily game for a while.
If I’m being honest, you will save yourself a lot of time by buying his book instead of waiting for me to slowly process my own way through DFS and writing about it. Once you read Bales’ book, then come back to me to see how to implement the topics covered in an Excel solution. Bales has created an excellent beginner’s guide to daily fantasy baseball by giving you strategies, tools, websites, and outlining the exact information you should be looking at when generating lineups.
One topic I’ve seen mentioned in the book and repeated many times online is that to be successful at DFS you need to play the game regularly (“grind”) and as such you need to develop an efficient routine that allows you to create quality optimized lineups regularly. My hope is to use Excel (and maybe other technology tools) to do this.
My “Aha Moment”
There are two significant benefits I got from “Fantasy Baseball For Smart People”. The first is that it’s a convenient and complete package. You could probably get nearly all of the information from the book by reading through the various articles I linked to in Part 1 of this series. If you go that route you even get the information for free. But this book will save you time and puts them in a nice easy-to-use and convenient package.
As much as I love technology, I’m still a “book-in-hand” kind of guy. So I bought the paperback, which lets me dog ear pages I want to remember and reference easily in the future. There’s no easy way to do that with the 20-30 articles I linked to in Part 1.
The second big benefit I get from the book is an insight I did not see anywhere else in my prior readings.
The goal isn’t to maximize points (in your lineup), but to maximize win probability.
~ Jonathan Bales – Fantasy Baseball for Smart People
Maybe this is obvious to everyone, but it wasn’t to me. It’s a significant difference between season-long leagues and DFS.
I can’t envision a scenario in a season-long rotisserie league that you would not want to maximize your projected points in the standings. It’s a simple concept that having the most points in the standings gives you the greatest likelihood of winning the league.
But there’s an interesting wrinkle that I alluded to in Part 1 that changes things in DFS. Player selection is not mutually exclusive. I know, I know. There I go again using math words. This is a fancy way of saying that the players you choose for your team can (and inevitably will) overlap with players chosen for other teams.
Bales’ point can be illustrated by a simple example… (more…)
Now that the season is underway and you no longer need to exert so much energy on draft preparation, it’s a great time to read a book, check out in-season analysis tools, or try listening to new MLB or fantasy baseball podcasts.
I’ve broken the resources page down into segments for books, free tools, premium tools, and podcasts. Know of a great tool that I’m missing? Please let me know on Twitter.
Welcome to the second segment in my series documenting my own journey of getting started with daily fantasy baseball. In the first segment I did some introductory background reading, started to identify some analysts I can trust, took notes about research topics to focus on, and started planning features to be included in an Excel spreadsheet.
In this next segment we will take a closer look at some of the biggest myths that I’m seeing perpetuated out there.
I Can’t Believe We Even Have to Talk About This
I didn’t think I’d have to say anything like that until my daughters were teenagers… But here we are.
Just because you read something on the internet doesn’t make it true. We’ve all heard that before, right? I got up on my soapbox at the end of Part 1 and warned you to be careful out there… And here’s an example of why:
I would argue that BvPs are the most reliable out of all the sets we commonly use because they have the most amount of similar variables.
While it is wrong to accept BvPs as fact, it is equally wrong to discount their merit entirely.
BvPs are just one of the many things you should consider when building a roster but they are not the only thing.
Those are all from the same article talking about the merits of BvPs, or “Batter versus Pitcher” statistics. I promise you the article exists but I am not going to link to it. I’m not here to start fights. I merely want to point out that this misinformation exists, both in the form of online advice and it must also be a viable strategy in some DFS players’ minds.
Why Are You So Confident That BvPs Don’t Matter?
I can definitively say they don’t because it’s been studied by people much smarter than me. Studies using years and years of MLB data have been completed on this topic multiple times and have found that batter-vs-pitcher (or “BvPs”) information is not predictive unless you are talking at least a history of over 100 ABs between the two players.
So we have credible studies based on oodles of data performed by very smart people. Or we have baseless claims, anecdotes of individual examples, and Paul Goldschmidt’s numbers against Tim Lincecum on the other side.
If you find a study that suggest BvPs are meaningful, please let me know. But from what I have seen so far, it appears to be very irresponsible to suggest BvPs have value.
What Research Are You Referring To?
The main and most well known study I’m referring to is from “The Book” by Tom Tango, Mitchel Lichtman, and Andrew Dolphin. They studied “batters owning pitchers” and flipped it and studied “pitchers owning batters” from the time frame of 1999-2001. They identified players that “owned” other players during that three year span. Then they looked at what happened for those same players in 2002. In a very nice coincidence, in 2002 the hitters had 361 plate appearances against the pitchers they “owned”. And in that same season the pitchers had 361 plate appearances against hitters they “owned”.
The results were that the hitters had a wOBA of .349 against the pitchers they owned. These 30 hitters that were studied had wOBAs against those same pitchers ranging from .500 – .800 the two prior seasons. Then in 2002 they hit a combined .349, which is essentially league average.
And the pitchers that had dominated a group of batters allowed a wOBA of .343. Those 30 pitchers had wOBAs allowed ranging from below .100 to .210 from 1999 – 2001. Then in 2002 they too only allowed a league average wOBA against.
I’ve been playing rotisserie baseball for darn near 20 years at this point, but as I write this article, I’ve never before played a day of daily fantasy sports.
I’m generally familiar with the concept. I’ve read many strategy articles on the topic. But I’ve never put together an effort to dive in and develop a formal plan about how I’m going to attack this new game.
In this series of posts I will document my journey and the resources I’m using to get myself familiar with the game. I must repeat that I have never done this before. I can’t sit here and promise you daily fantasy riches. But my goal is to find a way to play this daily game smartly, efficiently, and strategically.
Be Careful. Be Smart.
I know we’re not playing poker here. But because I’m an ultra-conservative accountant that hates giving away money, I’m reminded of this famous quote from the movie Rounders.
I’m not about to jump in the DFS waters without getting a plan together. While there are probably a ton of new players jumping into daily fantasy baseball when the season starts, I know there are a lot of sharks swimming in those waters.
I can’t go in blindly. I can’t go in lazily. And I can’t assume my knowledge of baseball will be enough to win.
Many readers of this site probably know A LOT more about the topics and tools for this game than I do. I’m going to share the resources and articles that seem helpful to me, but I’m sure there are other (and better) resources out there. Please share those tools and resources you find most helpful in the comments below so we can all do this more effectively. And if you think I’m wrong in something that I’ve said or if I’m leading people in the right direction, let me know. Let’s have a cordial debate.
I’m excited and nervous… Let’s go!
How Have You Never Played DFS Before?
Good question. I suppose I should address this before we get started.
I’ve mentioned many times on this site before that I’m married and have two daughters, I work full-time, and try to run this site on the side. From what I do know about daily fantasy baseball, my impression is that it takes a good amount of effort and time to play effectively. I know that weather can be a big factor in games. Lineups may change late in the afternoon. And I work until 6PM EST most nights. I can’t get on many of the DFS sites at work. So if I get home at 6:30, that doesn’t leave much time to eat dinner with my family, set a lineup, check the weather, make late lineup swaps, etc.
So that’s the angle I’m operating from. I’m not only looking to learn the most effective ways to play. I also I need to find ways to play this game well in that environment. It might mean coming up with lineups the day before. It might mean finding services or apps that can notify me of lineup or weather problems. Or it might mean only playing on the weekends. I don’t know yet. But if I can’t find a way to play on a level playing field during the week, I won’t do it.
There has to be a way.
Prerequisites
A lot of the introductory material about getting started with DFS baseball assumes you come in without any advanced (or even moderate) knowledge of baseball statistics.
My first thought about that is it’s actually intriguing that there’s a need to explain some of those statistics. See the Matt Damon video quote above. Maybe I won’t be the sucker at the table.
With that said, I’m going to assume you know what FIP, K/9, wOBA, regression, and SIERA are.
I don’t mean that you can rattle off the exact formula for wOBA or even know the specific differences between SIERA and FIP, but just that you have a rough concept of what those terms are. If those terms are Greek to you, I might suggest digging around the Fangraphs Glossary for a while to acclimate yourself to the sabermetric terminology.
My Notes
I’m going to start on this journey by reading up on as much strategy as I can. I’m not talking about player-specific information. Just general strategies at how to win at this new game. I’ll try to summarize my findings here and then I’ll link to the articles I’ve read at the bottom of this post.
My notes are below. I want to reiterate that I am just compiling this information from the web and summarizing my thoughts. Credit for these original works goes to the authors mentioned later in this article.
I know, I know. It’s mid-March, college basketball is taking over your time, and you’re in the final push of draft preparation for your baseball leagues. The last thing you want to do right now is start tinkering with your draft spreadsheet and screw something up.
Then here I come with another monster Excel post…
NOT THIS TIME! I swear. This is an easy one and you might find it helpful.
In this post I’ll show you how to use Excel’s conditional formatting to gray out players that have been chosen during your draft.
Excel’s Conditional Formatting
Conditional Formatting is a way to adjust the format of individual (or many) cells based upon the information within that cell. If you were using this in a business spreadsheet you might want really high sales months to show up in bolded font or below average sales people to show up shaded in red.
For fantasy baseball you might want all players projected to hit 30 HR to have their HR projection in bold red font. Who knows.
The point is you can tell Excel “what to format” and “how to format it”.
Here’s an example of what I’ll show you in this specific post:
Assumptions
I’m using Excel 2013 in the screenshots below. I think this will work on Excel 2007 or 2010 without any issues. I’m also assuming you’re starting with a spreadsheet you created following either this standings gain points series or this points league series.
In this post I’ll show you how to link live average draft position information from the web into your draft spreadsheet. Every time you open your rankings file it will pull down updated ADP information. Bam!
How We’re Going To Do This
We will use a powerful feature of Excel called web querying to pull in the ADP information aggregated by FantasyPros.com (please note, I’m an affiliate of Fantasy Pros). The web query will suck up that table of ADP information and bring it directly into Excel for us to then VLOOKUP into our existing “Hitter Ranks” and “Pitcher Ranks” tabs.
Assumptions
I am assuming that you’ve followed my Standings Gain Points or Points-League Ranking series and are already starting with a spreadsheet that is based off one of those (you don’t have to have those exact spreadsheets, but something similar).
Excel Functions and Concepts Used in this Post
Web Query
As you can probably imagine, the power of the web query is that it automatically updates the data in your Excel file without you having to do ANYTHING after the initial setup.
Web queries are created from the “Data” tab on the Excel Ribbon, under the “Get External Data” icon grouping. There are several ways to get data from outside sources into Excel, we will be using the “From Web” button.
One “weakness” I have found in web queries is that they cannot work with “tables” in Excel. You cannot pull a web query in as the data of a table. If you’re a big follower of this site you know that’s a bit of an issue for me because I use tables all the time. Thankfully this doesn’t prevent us from doing things, I just point it out because you might wonder why I set things up the way I do in the instructions below.
Find
The FIND function searches within a specified cell for a string of text that you provide. If the FIND function locates the string, it will return the character position where the string starts at.
I know, you’re thinking “What the heck does that even mean?”. Here’s an example. Let’s say we have the text “Mike Trout (LAA)” in a cell and every player in our whole spreadsheet follows that format. If we want to pull out each player’s team we will need to start by figuring out where the team name starts in that cell. And we can’t just say it will always start at the 13th character each time when we have players like this hanging around MLB.
Instead we can use the FIND formula to intelligently determine where that opening parenthesis is for each player (it starts at 12 for Trout and 23 for Salty).
This formula requires two inputs:
FIND(Find_text, Within_text)
Find_text – This is the string of text you are searching for and keep in mind it is case-sensitive. You would wrap the string you are searching for in quotation marks. So in our example above, to look for the opening parenthesis you would enter “(” here. Or if you’re trying to be slightly more precise, you could enter ” (“, a space before the parenthesis.
Within_text – This is the text you want to search WITHIN. This can be a cell number.
Left
The LEFT function gives you the leftmost number of characters in a text string. You also get to specify the number of characters to specify.
For example, if you have a text string of “Mike Trout (LAA)” and you ask for the 10 leftmost characters in that string, you would get “Mike Trout” back.
This formula requires two inputs:
LEFT(Text, Num_chars)
Text – This is the text string you want the leftmost characters from.
Num_chars – This is the number of characters you want from the string. This can be a hard entered number (e.g. 10) or it can be a formula itself that results in a number.
Combining Functions Together
We can do something pretty powerful by combining the FIND and LEFT functions together. I’ve been hinting at it with this “Mike Trout (LAA)” example. Recall from above that the LEFT function wants to know our text string (“Mike Trout (LAA)”) and the number of characters on the left to pull from that string.
Assume that cell B2 has a value of “Mike Trout (LAA)”. Instead of using this formula:
LEFT(B2, 10)
We can use this:
LEFT(B2, FIND(" (",B2)-1)
The FIND(" (",B2)-1 part of the formula returns a 10 (if you don’t subtract the one it returns an 11), and “Mike Trout” has 10 characters in it (including the space). By using this combination of functions we don’t have to type in a “10” for Mike Trout and a “21” for Saltalamacchia.
Important Prerequisite
Before you’re able to proceed with the instructions below you must make sure the PLAYERIDMAP in the file you’re working with was updated after February 21st, 2015. I added a column to the Player ID Map called “FANTPROSNAME” that is necessary for the steps below to work.
Instructions for updating your PLAYERIDMAP can be found here. Completing the update should only take five minutes or so.
Warning – The instructions below are likely only relevant if you are following some of my much older work. The Player ID Map has since been updated to allow much easier updating. If you’re looking for guidance relating to a spreadsheet you’ve built or purchased since 2015, you likely want to be looking here for guidance relating to the Player ID Map.
You’ve been following the site for a while. You’ve even created a spreadsheet to develop your own points league or SGP rankings. You’ve spent all this time building this spreadsheet but it’s getting to be a bit out of date. Players have been traded, rookies have been called up from the minors…
How do you update things? Do you have to rebuild your spreadsheets from scratch each season?
In this post I’ll show you how to quickly and easily update the Player ID Map in your spreadsheet so you can get updated MLB teams and have new players available to tie in to your projections.
Warning!
All we’re really doing here is downloading the new version of the Player ID Map and pasting it on top of our existing Player ID Map already in your ranking file. The key is that you have to be very particular about how you paste the new version in. If you’re not careful you will break all the existing formulas in your spreadsheet that reference the PLAYERIDMAP named table.
Read carefully!
Step-by-Step Instructions
Step
Description
1.
Open your existing rankings spreadsheet, the one in which you want the new Player ID Map information. Save a backup copy of the file, just in case something were to go wrong during this process.
Go to the PLAYERIDMAP tab.
2.
We will soon be pasting information onto this sheet so it is important to make sure all the data is currently showing.
Click on Excel’s “Data” tab and then click the “Clear” button of the “Sort & Filter” icon grouping.
Once the download completes, open the file. If Excel is displaying any kind of warning message, enable your ability to edit the file (provided you trust this site).
Now refresh the content to pull in any recently added players. Do this by right-clicking on a cell within the table (somewhere within the blue and white rows of data). Then choose the option to “Refresh.”
4.
Place your mouse in cell A1 of the newly downloaded Player ID Map. Then hit the CTRL + SHIFT + End keys all at once. After you’ve done this release the keys. Then hit SHIFT + the up arrow key.
This set of key strokes should select the entire Player ID Map table and then deselect the “Last Player”.
Now hit CTRL + C to copy the selected data.
5.
Return to your customized rankings spreadsheet. Select cell A1 with your mouse and then paste the data you just copied over cell A1.
The reasoning behind this specific set of copying and pasting instruction is so that the existing table named “PLAYERIDMAP” in your rankings spreadsheet will not be renamed during this process. If you don’t deselect the “Last Player” before copying, the entire Player ID Map table will be renamed and it will break all existing VLOOKUP formulas you have looking for this information.
6.
That’s it!
Well, kind of. Any new players added to the PLAYERIDMAP will not yet be listed on your “Hitter Ranks” or “Pitcher Ranks” worksheets.
This is where you have a decision to make.
If you have taken notes next to players, entered keeper dollar values, or otherwise “hard entered” information that relates to a specific player, then you manually add the player IDs of “new” players to your “Hitter Ranks” or “Pitcher Ranks” tabs.
For example, simply go to the “Hitter Ranks” tab and type the player’s ID at the very bottom of the first column. When you hit enter the Excel table should grow to add your new player and all the other formulas should automatically copy down (another benefit of using Excel tables!).
If you’re not sure what players were added to the PLAYERIDMAP, you can look on the “CHANGE LOG” tab on the newly downloaded Player ID file to see a brief note of all the players added or updated recently.
I try to put brief descriptions of the players that have been added so you can manually add to your “Hitter Ranks” or “Pitcher Ranks” sheets, if necessary.
7.
If you have not edited dollar values or added player notes, you can copy and paste the hitter IDs onto the “Hitter Ranks” sheet and the pitcher IDs on to the “Pitcher Ranks” sheet.
To do this, go to the PLAYERIDMAP tab in your spreadsheet and apply a filter to only show hitters. On the “POS” column filter, uncheck the “N/A” (if there are any) and “P” check boxes. This will only display the hitters.
Then select cell the first cell below the header in column A and hit the SHIFT + CTRL + Down Arrow Key. Copy this information and go to your “Hitter Ranks” tab and paste it into the first cell below the header in column A there.
After you do this all the other information on the tab should update immediately.
No go back to the PLAYERIDMAP tab and adjust the filter to only show pitchers and repeat the process by pasting those players onto the “Pitcher Ranks” tab.
Now you’re done!
Have Any Questions?
Please leave a comment on this post.
I have to do this quite frequently to keep all the spreadsheets I maintain for the site up-to-date, but this is probably something you’ll only need to do a few times a year. Maybe after the season ends, to get all the new players I’ve added during the season, late February, to get all the players that have changed teams, and once during the season, if you’re doing in-season rankings.
Want More Tips Like This
Make sure to follow me on Twitter, that’s the best place to hear about new posts and updates at the site.
After over a year of working on this and getting feedback from a very helpful group of SFBB readers, the “Projection Aggregator” Excel file is finally ready!
The Projection Aggregator is an easy to use Excel spreadsheet that can combine (or average) up to three different projection sets to give you the best possible set of projections to use for the upcoming season. You can use just about any well known projection source you have at your disposal. Download your favorite projections, fill out some settings, and you’re done.
No complicated formulas. No VLOOKUPs. Just download your projections, bring them in to the Aggregator, and you’ll have better projections in minutes. Click here to find out more.
“The Process”, My Latest Book, with Jeff Zimmerman
The 2024 edition of The Process, by Jeff Zimmerman and Tanner Bell, is now available! Click here to read what folks like John Pausma, Phil Dussault, Eno Sarris, Clay Link, Rob Silver, Rudy Gamble, and others have to say about the book.
The Process is your one-stop resource for better drafting, in-season management, and developing strategies to become a better manager. The book is loaded with unique studies, tips, and strategies you won't find anywhere else. Click here for more details.