A Different Way to Play Fantasy Baseball

Since 2013, I have been the commissioner of what I would refer to as my home fantasy baseball league. This is definitely my favorite league to play in as I get to compete against, and sometimes dominate, my friends. It has always been a 12 team keeper league that started with rotisserie (roto) scoring with the intent to limit the randomness that is apparent in the head-to-head (H2H) format. The rest of the league details are not important. What is important is that the league is constantly evolving year over year. I schedule an off season winter meeting where we discuss ways to improve the league each year and then send out surveys to get votes from all managers to enact the changes. This concept is not unique to our league as I have read about other long running leagues that do things like this. However, what I believe is unique is a change we enacted that came about prior to the start of the 2016 season that has definitely improved the way we play fantasy baseball. I would like to share that change with you now.

This is the part where I would normally go on about the background behind this decision before eventually telling you what it was one or two paragraphs later. Today I feel like bypassing the exposition and cutting right to it: the league plays both roto and H2H formats simultaneously. Yes, two formats, same season, same league, twice the winners, twice the prizes. I will now answer most of the questions you might have (or do not have) about this league set up.

Why: Simply to keep more teams engaged deeper into the season. From 2013 to 2015, the roto victories for the first place team were all blow outs and some of the teams at the bottom definitely lost interest, which is understandable. While it is a small keeper set, keep 4, and you can trade draft picks for the following season, there is only so much you can do to prepare for next season. As a result of this change, we have actually had several teams well out of roto contention make late season runs to make the H2H playoffs.

Where: The league has always been run on the Yahoo client. This league, while competitive, does not require more of the advanced options offered by other sites. That said, this solution is not limited to only Yahoo, but I have not tried it on the others. Plus Yahoo definitely has the best app by far of the major sites. If only they could add the trade block feature to it…

How (The Most Important Question): Since there is no option to play both formats at once, what I have done is selected the H2H categories format for the league (this option would be much more difficult to recreate). I then take the total stats accumulated by each team, which Yahoo provides, and copy them to a google sheet. It allows me to give everyone access to the standings and for me to calculate the points based on the accumulated stats. However, having a programming background, I realized there had to be a better way than copying, pasting and formatting the stats each week as I did not always have time for that every Monday.

For the 2017 season, I wrote a basic Python script to web scrape the total stats for me into the format I needed. This saved some time, but because I was lazy, the script still required me to paste the results into the google sheet. I could have spent time to write it so it updated it on its own (I think), but again, I was lazy.

This past offseason, instead of improving the script, I found there are functions that already exists for this purpose in google sheets (also in excel). These functions allow for you to import structured data from a website automatically in your sheet. This link has a tutorial for using the functions. With the stat totals being automatically updated in the sheet and the formulas I set up already calculating points, the only thing I need to now do before the season ends is to capture any history if I want it (for a particular week), make sure it works (it does), and watch as my team loses to Melvin (Curse you Melvin!).

Reception by the League: Overall positive. It definitely accomplishes the goal of keeping more teams engaged further into the season. For the past two seasons, we have had no one complain and all the comments I have received have been good.


While the current set up works, it does have its limitations which I will now share with you.

1. In order for this, or the web scrape, solution to work, you need to set the league to publicly view able (setting commissioners can change very easily).  You could also probably use Yahoo’s API to do this as an alternative, but again, I was lazy.

2. Like any automation, it takes time to implement, especially if you want to make changes. For instance, my sheet currently does not deal with ties. I just deal with them at the end of the season manually, but it is definitely something I want to add.

3. Your league has to be open to the idea. I got lucky mine was. Now if I can only get us to agree on roster expansion so easily…

4. There is an second place that needs to be maintained by the commissioner and visited by the league to know everything that is going on. On the plus side, I am using the google sheet anyway to keep track of keepers each year, so I do not mind it so much, but this could be a problem for others.

5. If you want to keep scoring history, you have to manually copy it to another place before putting the updated stat totals in.

Future Ideas for improvement

If I have some free time on my hands, these are the items on my list I want to get to to improve the current set up.

1. Have the google sheet deal with ties. This one is super feasible. I am sure I will get to it someday.

2. Setting up a database instead of the google sheet to keep league history automatically. This one will take some time, but is probably doable.

Again, this system is not perfect, but it works for us and has definitely been one of the better and more unique additions we made to the league. It’s possible that a fantasy site will allow this option in the future and if so, I would certainly consider moving this league there, but for the time being, our set up will continue. If you are curious about any other aspects of this format and how we have it set up, let me know in the comments or on twitter, and I will happily answer any queries. I think I may do a follow up post with specific tutorial to help anyone who would want to set up this format for their league as well.

Original post on IVthoughts.com.

4 thoughts on “A Different Way to Play Fantasy Baseball

    1. Thanks JBJ. They way I do it requires the scripting language python. I use Anaconda/Spyder as my IDE which are free to download, but I know there are others options out there that some prefer.


  1. Give u a lot of credit for doing all that work to set up the roto scoring outside of Yahoo. I’ve traditionally done a H2H keeper league (we keep 5 guys in a 16-team league) but also joined a year long roto. It’s crazy how different they are. Much different strategy with the roto. I think I still like the H2H better especially in a league where we’re all friends.

    Liked by 1 person

    1. Thanks! They are really different beasts all to their own. I used to not like H2H at all, but it has certainly grown on me. Leagues with people you know are definitely more fun, which is why I like this one as well.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s