While Brian Kenny turned #KillTheWin into a Twitter meme, Tom Tango has proposed redefining it. Rather than using the old definition, he suggests computing “win points” and “loss points” for each game, and then giving the player with the most win points on the winning team a win, while the player with the most loss points on the losing team gets the loss. This is intended as a “descriptive” stat, not an analytic one. It’s based on actual wins and losses, but rather than using the old rule, it tries, via a rather simple formula, to find the most deserving pitcher to get the win or loss.

His original suggestion was to give 1 win point per out recorded, and -4 win points per run allowed (whether earned or not) to each pitcher. Highest total gets the loss. In case of ties, the win goes to the pitcher giving up the fewest runs among tied pitchers; if still tied, then give it to the one getting the most outs; finally, if still tied, go with the one who entered the game first.

Loss points were similar: 6 points per run allowed (again whether earned or not), and -1 points per out recorded. For losses, though, you ignore any pitcher who does not give up a run (you don’t deserve a loss if they don’t score on you!). The tiebreakers there are symmetric: first give the loss to the pitcher giving up the most runs; then give it to the one getting the fewest outs; finally, go with the one who entered the game first.

I’ve created a page on my site that computes Tango wins following these rules for seasons from 2010 onward. Well, not exactly. The page actually lets you try your own coefficients,  after a discussion on Tango’s site about results from the earlier model. So I’ve generalized, and in tinkering I think using -5 points per run allowed for win points, and 10 points per run allowed for loss points, gives a better distribution of wins and losses between relievers. That’s the default I use on the page now. I do notice that the traditional rule has a much more stable breakdown in winning percentage of starters and relievers than the Tango proposal, no matter what coefficients I try.

This seems like a promising alternative to traditional wins and losses. The rules are actually simpler to describe than the present MLB rules, and it looks like it removes much of the luck from the traditional allocation. It is still theoretically possible under this system to get a loss you don’t “deserve”. Suppose the starter pitches in the bottom of the 9th inning of a scoreless game, and strikes out the first two batters, but then walks one. The closer comes in, and gives up a triple to end the game. Since the run allowed is charged to the starter, he takes the Tango Loss, as he’s the only one to give up a run, even though the 2-out triple had more to do with that run scoring than the 2-out walk. But that’s a minor quibble, and if anything its more of an indictment of how runs are allocated when pitchers leave with men on base than of the win proposal anyhow. If the run allowed were charged to the closer in that case, he’d get the loss.

It’s also possible to get a Tango Win in a game where current rules would credit you with a save.

I did try to adjust one of the tiebreakers. The Win Points and Loss Points definitions and even tiebreakers are almost perfectly symmetric: positive coefficients in win points are replaced by negative ones in loss points; most tiebreakers in win points are replaced by fewest tiebreakers in loss points. So I wondered what would happen if I switched the last tiebreaker for loss points, giving the loss to the last pitcher to enter the game, rather than the first. Well, so far in 2014, nothing changes, as the loss breakdown between starters and relievers remained unchanged. Even in prior years, just a handful of games were affected. So that tweak basically doesn’t matter. I’d still prefer to give it to the last tied pitcher, though, as it would match current practice if there were a tie for most loss points in a walk-off game.

One other side benefit of this little project: I’ve discovered a data error in my database, as total wins and losses don’t equal each other for 2011 and 2012. I’ll have to get that fixed!

Posted in Major League Baseball, Sabermetrics | 4 Comments

When the hurling Buehrle’s won… or perhaps why!

Blue Jays’ starter Mark Buehrle is off to a great start so far this season, leading the majors with 6 wins, with an ERA of 1.91. While not as impressive as his ERA, Buehrle’s FIP, fielding-independent pitching, is a still-excellent 3.04, which would be a career best by nearly half a run, and is more than a full run under his career mark of 4.10.

Buehrle has been a workhorse, noted more for his durability than anything else. The lefthander has made at least 30 starts, and pitched at least 200 innings, for 13 straight seasons. He has made 4 All-Star teams, and so far seems a good bet to make a fifth, but only once, in 2005, did he ever receive votes for the Cy Young Award. He’s been an innings eater, reliable, but not an ace. This year, however, he’s pitched like an ace.

So what’s behind his sudden improvement? Will he continue to dominate, or will owners who expect that face a tragedy of nearly Shakespearean proportions?

Continue reading

Posted in AL, Major League Baseball, Projections | Comments Off on When the hurling Buehrle’s won… or perhaps why!

Introducing RV Current

Today I’m introducing a new projections source, which I’m calling RV Current. The idea is to use the same basic projection model I use in the preseason, but also include current year data in the model. The goal is a current “true talent” estimate for each player.

So in addition to taking up to 3 years past data, I also add in current year’s stats. I give the current year weight based on the portion of the season we’ve played, such that after 81 games, I’d count this year’s stats as heavily as last year’s, and by the end of the season this year would count twice as much.

After doing the raw projections, I still make playing time adjustments based on depth charts and injury status. When a player is on an injury report with an estimated return timeframe, I’ll pick a date in the middle as a projected return date. When showing future statistics, I’ll use those dates to adjust projected playing time for players. The depth chart checks try to ensure starters get some minimum projected playing time, while bench players are capped (unless they’re on an injury report). Finally, I check a team’s projected totals to ensure they’re reasonable, both at the overall team level and at a per-position level.

Continue reading

Posted in Fantasy Strategy, Major League Baseball, Projections, RotoValue, Sabermetrics | Comments Off on Introducing RV Current

Hedging Your Bets on the Nets?

On Monday, Nate Silver looked at the odds of winning a second-round playoff series after going 7 games to win the first round, and found that your chances to win go down:

 Original SRS odds: Miami 88 percent to win the series.

Modified SRS odds: Miami 95 percent to win the series.

Miami swept its opening-round series, while Brooklyn needed seven games to beat the Toronto Raptors. Hence, the Nets have gone from really big underdogs to really, really big underdogs.

Today, FiveThirtyEight writer Benjamin Morris notes that the Nets beat the Heat in all four regular-season games between the two:

Brooklyn mainly has one thing going for it: The team swept its regular-season series against Miami, winning all four games.

Morris plugs this information into a model, and he summarizes his findings:

  • For teams of even strength, the home team is a 66 percent favorite if it was 4-0 against its opponent in the regular season, but a 45 percent underdog if it was 0-4.

  • The shift in odds for a two-game advantage (usually because of a 3-1 or 2-0 head-to-head record) is approximately the same as the value of having home-court advantage for the series(!).

  • While moderately impressive, this gets us nowhere close to making Brooklyn a favorite against Miami by virtue of its 4-0 record alone (though if this were all the information in the world, the 72 percent odds of Miami winning here would be much worse than the 85 percent predicted by the market).

I’ve been a Nets fan since they took University of Maryland teamates Buck Williams and Albert King together in the first round of the 1981 draft, so I hope Morris’s take carries more weight than his boss’s!

And initially, that seems to be the case: Silver estimated their chances of winning dropped about 7% because of going 7 games, while Morris’s finding about the regular-season sweep implies improving their chances by about twice that.

No matter who wins, one of these stories will make it look like these guys really know something!

Posted in NBA Basketball, Sabermetrics | Comments Off on Hedging Your Bets on the Nets?

Improving Future Statistics

While we can’t know the future, we can make educated guesses and projections about it. RotoValue does this by displaying projected stats (both my own projections, and for baseball, projections contributed from outside sources, Steamer, Marcel, and MORPS), and also by letting you choose prorated stats for the current year or the previous year.

When I first implemented prorated numbers, I simply divided a player’s current stats by the number of games his team had played, and then multiplied by the number of games in the season. If you were showing stats for less than the full season, I’d prorate to the number of games his team had scheduled over that time. That was a decent first-cut, but for players who missed much of the season so far, their prorated future numbers were too low. So, for example, Clayton Kershaw won his first start, pitching very well, but then went on the DL. Under my old model, since he pitched just one of the Dodgers’ 26 games so far, I’d prorate him to start just 1 out of every 26 games, or about 6 starts. His fantasy owners (not to mention the Dodgers) surely hope he pitches a lot more than that! Now, however, I’m tracking when players are actually on a team’s active roster, and using that information to better prorate statistics. Kershaw has made just 1 start, but since he was on the disabled list most of the time, I currently prorate him to make a total of 25 starts.

Simply prorating stats has another bias, though, one that also affects searches based on projected statistics. Now that the season is under way, players do get injured, and preseason projections did not reflect that information. Josh Hamilton tore a ligament in his thumb and is out for 6-8 weeks according to my injury reports. But the preseason projections for Hamilton don’t account for this new knowledge, but I now try to do that. I now compute a “target return” date for injured players, based on the data shown in the injury reports I receive. In Hamilton’s case, I’m adding 7 weeks to the April 9th date listed for his injury, and I set the target return to May 28th. So rather than showing Hamilton’s stats assuming he’ll play all the team’s remaining games, I prorate the projections as if he’ll only play from May 28th onward.HamiltonSearch
Here I’ve reduced the playing time for Hamilton, but kept his rate numbers the same as the original preseason Steamer projections:

This should better reflect the future value Hamilton might have to fantasy owners. So when you’re viewing projections in a Search page, or as part of a projected standings page, I’ll adjust projections based on a player’s target return from injury. The Player Detail page will continue to show the original projections as given to me by the source (or computed by me).

The target return date is used not only when showing projections, but also when showing prorated statistics. Where the injury report gives an estimate of the player’s return, I use that to get the target return date. If he’s on the disabled list, but without any other guidance, I use the first date he’s eligible to come off, unless that date is in the past, in which case I’ll arbitrarily say he’ll miss 10 more days. At this point I’m updating based on the injury reports themselves, and not other news stories about a player’s return. So while I’ve seen reports that Bryce Harper will be out until July, because the injury report currently just lists him on the 15-day DL, I’ve set his target return to May 11th, 15 days after he was put on the DL.

These enhancements are also used when I compute projected standings for a league, so those values should be improved overall.

One caveat, however: by ignoring time a player is not on the active roster for prorated stats, I do expose small sample size issues. Because he has made only one start so far, Kershaw prorates to have the 1.35 ERA and 0.900 WHIP he had in that one start, while Hamilton hit .444 in the 8 games he played before going on the DL. While the rate stats, are way overly optimistic, the cumulative totals are better than they would be if I simply assumed both players would only play a tiny fraction of the season, which is what the old prorating model did.

Numbers should never drive all your decisions in fantasy sports, but getting better numbers can better inform your decisions. And the projected and prorated statistics shown at RotoValue have just gotten better.

Posted in Fantasy Strategy, Projections, RotoValue | Comments Off on Improving Future Statistics

Throwing your Weight Around

Much of the point of RotoValue dollar values is that the parameters of your league are relevant to how you should value players. When you start 2 catchers per team, top catchers are worth more than if you start just 1. Many players that have value in deeper leagues aren’t worth owning in shallower ones. My pricing model implicitly takes this into consideration.

But the site can customize even more than that. For a long time, the site has let RotoValue Analyst customers manually override the category weights, and also select extra categories to display for your league. Under the Settings menu, they’ll see a choice “RotoValue & Display”:

RotoValue Analyst customers can choose their own categories, and weights.

So if, for example, you’ve traded away all your closers, you could give the Saves category a weight of 0, and the RotoValue prices for your league would adjust to reflect the fact that you no longer care about a category. Similarly if you have a seemingly insurmountable lead in a category, you could give it 0 weight, or if a category is very close, you could give it double, or even triple weight. This page lets you set the weights for the categories in any RotoValue calculations, helping you find free agents (or evaluate trades) that are more relevant to your team’s situation. You get to manually set whatever weights you want, or, by clicking on the Reset button at the bottom of that page, remove all custom settings, and revert to using the scoring weights for your league in price calculations.

To use the customized weights, though, you have to opt in, by going to the settings page and updating them. I’ve just added a checkbox at the top of the page, “Compute weights based on your team’s stats and standings?”. This can automate the process of determining weights for you. If you select this option, the code will look at projected standings for your league, as well as the players in the active lineup on your team, and it will see how close you are to other owners in each category. The closer you are to passing or being passed by other owners, the more weight I will give a category. And if you save with this box checked, the algorithm runs very early each morning, after the previous day’s games, to recompute new weights based on updated standings data (and lineup changes).

Highlight auto-computed weightsIn this case my team projects near the bottom in Stolen Bases, and, more importantly, far from most other teams, so the algorithm gives that category the least weight, but WHIP projects to be the closest category, so it gives the most weight there. These different weights will affect RotoValue price calculations, guiding me towards players who are more likely to help my team, not only in general, but in the particular context of my league and opponents. The weights are scaled relative to the original league’s weight, so SB is given only 62% of its normal weight, while WHIP is given 134% of its weight. If your league weights certain categories differently for scoring purposes, then these calculations take that into account.

These auto-generated weights will tune RotoValue price calculations not only to the specifics of your league’s scoring and roster sizes, but also to the particular situation of your team and its current active roster relative to others. This information can help you make better decisions about pickups, trades, or even whom to put in your active lineup, and help you win your league.

Read on to see the how much difference this can have, and also details of the algorithm’s implementation. Continue reading

Posted in Fantasy Strategy, RotoValue | Comments Off on Throwing your Weight Around

Statistics Correction

I’ve discovered and corrected a bug in my 2014 major league baseball statistics.

Last Monday’s Reds/Pirates game was suspended by rain that night, and then completed on Tuesday, followed by the regularly scheduled game. RotoValue saves the live statistics of games in progress, and later it replaces them with a summary from the official boxscore. Well, in this case, the official boxscore for the completion came on Tuesday, with the date of the game as Tuesday April 15th also. Even MLB.com shares this confusion, as their scoreboard page shows that game for April 15th, not April 14th.

While the site properly shifted the boxscore data from April 14th to the 15th for that game, it did not adjust the year-to-date totals, and so it wound up counting the partial data from the 14th and the full data from the completion of the game on the 15th. So the net effect was that many Reds and Pirates players showed up with more statistics than they should have because that game was (mostly) double-counted. Win, loss, and save totals were unaffected, since the game had not been completed, but any stats compiled before the game was suspended Monday were double-counted.

I’ve reloaded the YTD totals for the full season from all the boxscores, correcting the data. And now RotoValue is again showing correct statistics for all games, and I apologize for any inconvenience this caused.


Posted in Corrections, RotoValue | Comments Off on Statistics Correction

One more benefit of FAAB: Easier Trading

In my post this morning forgot to mention another benefit of using FAAB: you can trade it! This encourages trading in multiple ways. First, trading FAAB can help balance out a trade offer. Sometimes you’re close to agreement, but think the current offer favors the other owner a little more. When you can trade FAAB, you can propose adding some FAAB to the deal, and then the negotiation becomes simply over how much FAAB to include. It’s a good way to make small deals happen that otherwise might not.

Say I have an extra middle infielder on my bench when your shortstop goes on the DL. Your bench doesn’t have anyone I’m interested in, and you don’t want to weaken your lineup by giving me an upgrade at some position. Perhaps I agree to take one of your bench players plus some FAAB – you get the short-term guy to fill a hole, and I get some potential future value.

Near the trading deadline, or when highly sought after free agents are new to a league, then owners who want to bid on the new player will often make trades to acquire more FAAB. Without FAAB there’s no incentive for such trades, nor is there a nicely divisible commodity (money) to try to balance out other deals. So using FAAB not only is a better way to allocate new talent in your league, it also helps make trading easier, too.

Needless to say, RotoValue supports including FAAB in trade offers, and indeed before the auction for George Springer we had two trades involving FAAB, as owners scrambled to increase their budgets. Indeed one trade was simply some FAAB for a player!

Posted in Auction, Fantasy Strategy, RotoValue | Comments Off on One more benefit of FAAB: Easier Trading

Free Agent Handling and FAAB

My two long-time baseball leagues, the Park Slope Rotisserie League, and the Ezra Stiles Rotisserie Association, both share the same free agent bidding/handling system, and I like it quite a bit.

One of the big questions in fantasy sports leagues is how should you allocate players who are new to the league? Many leagues use a waiver process, where teams ranked lower in the standings, or maybe teams that have gone longest without making a pickup, get priority. For high value players, this is unsatisfying, as plenty of owners will want the guy, but some arbitrary rule determines who will get him.

Some leagues simply have a first-come, first served policy, where whoever makes the pickup first gets the player. That rewards owners for paying close attention to news, or perhaps simply being able to pay attention, so I like this a little better than a waiver process, but it still doesn’t seem fair, and there can be a race to make a move in response to news. I still recall hearing about a trade that sent Lee Smith to the Cardinals in 1990 on the radio, and rushing to call our league commissioner while hoping he hadn’t heard of the move first. I was lucky enough to win Smith, who then saved 27 games for the Cardinals after the move.

Others use a FAAB (Free Agent Acquisition Budget) bidding process, where teams start with a fixed budget, and enter sealed bids, with the highest bid winning a player.

Our leagues use a hybrid of the latter two. These are Rotisserie scoring leagues, and lineup changes only take effect weekly. So we have a FAAB auction, scheduled to run at 6:00 AM EDT on the first day of the week. The highest bid on an unowned player in that auction wins him.

The problem with FAAB bidding as some sites process it, however, is that if you lose your bid(s), you might not get a new player to replace an injured player. Our leagues handle this situation by having a short window of first-come, first-served pickups, between the bidding deadline and the weekly move deadline. So if you need to make a pickup for your injured player, but you don’t win the FAAB auction on the guy you wanted, you can pick someone else, whom nobody else bid on, to replace your injured guy. You get the best of both worlds: competitive bidding for highly valued players, but flexibility to fill a slot with somebody no one else bothered to bid on, all before your weekly deadline! And while you still need to pay attention, you don’t have to stay plugged in 24/7 to transaction news.

Continue reading

Posted in Auction, RotoValue | Comments Off on Free Agent Handling and FAAB

RotoValue UserProfile and e-mail Settings

I’ve added a new switch to the UserProfile page at RotoValue. In addition to check boxes which let you control what transactions generate an automated e-mail, I’d added a box to control whether you show your e-mail address to other league members on team roster pages.

Here’s a view of the UserProfile page:

User Profile pageRotoValue can generate e-mail alerting you to league transactions. By default, you’ll get an e-mail about someone adding, cutting, or trading players, as well as e-mail about trade offers and any FAAB bids you may make. In addition, you can turn on e-mail alerting you to lineup changes, but that is, by default, disabled. You can turn off any or all of these by unchecking the relevant box on the UserProfile page.

The sitecan generate a daily e-mail to owners about their teams, including a boxscore of what the players did last night, and a list of any news stories on those players in the past 24 hours. This job usually runs at about 4:00 AM EDT. By default, you’d get both player stats and news, but you can opt out entirely, or ask to get only the boxscores from the above page.

If you’ve checked “Show e-mail to league members, then in addition to seeing your name under your team as an owner, league members viewing your roster, like this:

Roster page

People viewing the roster who are not league members will see neither your e-mail or your name – clicking on the image goes to the same page, but since most readers likely aren’t in that league, they won’t see my name or e-mail.

By default, the site will not show your e-mail at all, and it will only show the name from your profile to people with teams in the same league. So you’d have to opt in to let other league members see your e-mail.

Posted in RotoValue | Comments Off on RotoValue UserProfile and e-mail Settings