Showing posts with label walrus. Show all posts
Showing posts with label walrus. Show all posts

Saturday, March 28, 2009

Programming Update

Today was New England Code Camp 11: Developer Stimulus Package. What an awesome name. Thanks to Chris Bowen for organizing it. Unfortunately for me, I could only stay for the first four sessions. Got to learn about Silverlight, F#, and .NET 4.0. As always, Richard Hale Shaw was excellent, and Andy Beaulieu was also quite good. Fun times for all.

These programming conventions always give me extra energy for working on projects. This one came at a great time, because I had stopped work on Walrus since all of my fantasy baseball teams had already drafted. I now know (thanks to RHS) how F# really fits in, and how to use it as a library extension to my C# projects. Yay!

I also need to work on smaller projects. Things I can build quickly and learn small things at once. I plan to build an ASP.NET MVC app soon, but it has to be super simple so I can get it out the door fast. Maybe I'll build a blog. Easy, but somewhat boring. I haven't thought this through yet.

Nick is also urging me on, mostly by blogging and conversations on the train. He's on Twitter now at @nswarr, so you can follow him if you want. Eric always gets mad points for energy boosts. 

Any ideas for what to put on edschwehm.com?

Thursday, March 5, 2009

Moneyball in Fantasy Sports

The main message of Moneyball was that Billy Beane built winning teams on the cheap by finding inefficiencies in the market and exploiting them. We can use that same tactic in fantasy baseball.

Let's examine a common fantasy expert recommendation: don't draft top-rated catchers in the top 100 picks. If you've been in many drafts, you've probably seen people who wait until the 19th round to pick up a catcher. In the same draft, someone probably drafted Joe Mauer in the 5th round. When you're deciding when to draft a catcher, you want to know what people think about catchers and the above recommendation. If you somehow know that everyone is following the above recommendation, you can bet that Russell Martin will be available in the 9th round and draft accordingly. That's a market inefficiency.

Another example: a common draft tenet is to not draft top-rated closers. If you know everyone is following this rule, but you really want Jonathan Papelbon, you can wait a few rounds more than you would normally to draft him.

It can be hard to figure out the trends of the draft while it's going on, especially in timed drafts like Yahoo's (90 seconds is not a lot of time). Some signs are obivous; position runs are the most obvious ones. When everyone is taking closers, the other positions are being neglected. Notice these trends.

Others inefficiencies are harder to spot. Typically you will only know how a drafter feels about single-spot positions (i.e. SS, 2B, and C) when they draft them, and then it's too late. The positions you can learn the most about are OF (undifferentiated), SP, and RP, since teams need multiple players for those positions. If you have time to keep track of your opponents drafting habits, you can see how they value those positions and make guesses as to when they might draft the next player.

You can also look at stat categories. Maybe runs are being undervalued. Maybe drafters are rushing to grab stolen bases. Keep an eye on available stats left on the board and how fast they leave the board.

You're not drafting in a vacuum; every other drafter is making moves, and every move they make carries a lot of information. In addition to your one draft sheet (you only have one, right?), you should have one scouting sheet. Take notes on your opponents. If you've played with them before, jot down your thoughts about them before the draft. If you can spot these trends before others do, you can get a huge advantage. 

(I'm hoping to handle some of this in Walrus, so keep your eyes peeled!)

Wednesday, January 14, 2009

Johan Santana SP +++ Is Pretty Good

Every baseball off season I prepare a note sheet with things I read or learn about baseball players that might help me come draft season. An example note from last season: "michael bourn of + like a cheap Juan Pierre; will get steals but kill your average". Sometimes I'm right ("brad lidge rp + give him a looksee") and sometimes I'm wrong ("nick swisher of/1b + especially in OBP leagues, slg .824 in ST over .464 career"). But I like writing these things down and taking stock.

My HSL note sheet for this off season has grown to 41 players (from A.J. Burnett to Zack Greinke, alpha-sorted by first name). I'm a little concerned that the majority of my notes are on starting pitchers (17). I also only have one negative note (sorry J.J. Putz). I've added a draft column to the sheet to suggest to myself what round I should target the player in. This information will work great with Walrus's "must-draft-by" feature.

There's just so much information out there and we can't keep it all in our heads the whole time. My HSL note sheet has been step one to organize my information. Walrus is step two.

Monday, December 22, 2008

You Know It's Fantasy Baseball Season When...

  • My Hot Stove League note sheet is already two pages long.
  • I'm posting on other fantasy baseball blogs.
  • I've restarted work on my mid-draft fantasy baseball analysis tool (Walrus).
  • I've had a 2-hour conference call with league co-commissioners to determine rules for next year.

Thursday, October 16, 2008

Walk the Walk!

So I talk about development here. F#, nullable types, Walrus, Falcon... but what have I done lately? Nothing!

I have so much crap going on in the fall that I just get drained of energy. Pep band on Tuesdays and Thursdays, plus the games on Saturdays. Winterizing the home. Softball games.

Well, it all ends in November. Pep band and softball will be done, plus the house should be mostly winterized. If I don't start being productive by my birthday, I'm in trouble.

F#: For Me?

So I realized that Walrus could possibly use F# for the rules engine for recommendations. How cool would that be? I could have a second project in F# that takes the draft object (containing the team rosters, draft order, league settings, and free agents) and spits out the recommendation list. I think that's what I'll do.

Thursday, October 9, 2008

New Project, Codenamed Falcon

I've started working on a new project. It's codenamed "Falcon." Why? Because that was the first animal name I thought of when I decided to name it after an animal. Now I've got Walrus and Falcon.

I have to keep mum on Falcon though, because I actually think it could be really cool.

Wednesday, October 1, 2008

10 Things From a Developer

Two small thoughts:

I have to stop getting any coffee in the office as soon as I get in. It's messing up my stomach and impacting my productivity.

I have to realize that I'm a pretty good developer and actually use my skills to accomplish all the things I want to accomplish. This include Walrus, as well as some other projects.

Wednesday, September 24, 2008

God I Am Such a Nerd

I recently bought an MP3 player almost exclusively for the Stackoverflow podcast. I don't know why I wanted it so badly, but that's another story. I started listening to just SO and NPR's "Wait Wait Don't Tell Me", but I added like 8 more to my sync list (thanks Mark!). I listened to DotNet Rocks this morning. They were talking about Parallel Extensions to the .NET framework and WPF, and all I wanted to do was run home and start rewriting Walrus to use all these fun new tools. I'm such a nerd.

Wednesday, March 12, 2008

Walrus Mark, uh, Zero

The Romans never had a symbol for zero because they were that awesome.

I got some good work done on Walrus tonight (ok yeah, I had Baseball Mogul open in the background... and Comedy Central on the TV). Mostly a lot of groundwork for getting the One True List into the app. I now know how to load data from Excel files. I'm going to hardcode everything for Rotoworld for now (following the "hardcode first, hardcode second, generalize third" rule), but it should be easy to import any set. Hot.

A few more features I'd like to add:

  • Must-draft options: Add the ability for a user to set a draft round for a player that if the player drops to that round the user "must" draft him. The system would highlight the player somehow.
  • Notes: Both a text note and possibly a "+/-/=" rating (for gut feelings). I could have players with notes brought to the forefront (maybe use tooltips?).
  • Fantasy replacement level by postion: Set the replacement level for each position (that is, the point after which you either don't draft a player or pick only sleepers).

Fun times!

Friday, March 7, 2008

Fantasy Baseball Draft App - Walrus!

I've been playing fantasy baseball for a few years, and as I've said before, the draft is my weakest link. I've tried giving myself a cheat sheet with a clear one-value system for evaluating players. I've also tried providing myself with tons of information. Yet I always fall too far to one side of the information-overload/lack of info problem.

Enter Fantasy Baseball Draft App, codenamed Walrus (I just made up that code name because I didn't want to call it "Fantasy Baseball Draft App" or "FBDA"). I've started writing a windows application (in C#.NET w/ VS 2005) to help me with my draft. Basically I want a way to display to me "The One True List" (whatever ranking list you have) but with all/any set of analysis that I want as needed. For example, I could provide information about position scarcity compared to all teams' rosters (let's say there are only four tier three shortstops left, but only three teams don't have a SS already; that's valuable information). Or I could show fantasy-team-average stats compared to what I (or my opponents) have already drafted (and how a given player would impact them). These are just a few of the things I want to do.

Here's a basic feature list:

  • Import projections/rankings from Excel files. This is tricky; first of all, importing from Excel is never straightforward. Secondly, what formats do I support? ESPN, Rotoworld, Rotowire, Baseball Prospectus? Likely I'll start with one format and go from there.
  • Format projections to match league settings. Depends on how I set league settings...
  • Set league settings. Yeah, I know.
  • Set stat goals. Obvious and simple.
  • Display "The One True List" with sorting and filter options. Easy.
  • Display my roster and other rosters. Pretty simple.
  • Allow a player to be drafted to my team or another team with a button click. This part requires some design decisions; do I have 1 or 2 buttons? How do I correct mistakes?
  • Input total roster count and draft order. Simple.
  • Provide a variety of calculations: ADP, position scarcity, etc. Depends on what I actually do.

That's just off the top of my head. I'll see how far I get with "Walrus Mark I".

All rights reserved. Take that!