/// <summary> /// Segment II (weeks 5-8) /// Pointer Twelve: (p 74) /// Big Scoring Teams /// As in the first 4 games, I look to bet against a favourite that scored a total of /// 30 or more points in each of the last two weeks in winning efforts. /// </summary> /// <param name="team"></param> /// <param name="upcomingGame"></param> /// <returns></returns> public static bool BigScoringTeam( NflTeam team, NFLGame upcomingGame ) { bool isBigScorer = false; if ( upcomingGame.IsFavourite( team ) ) { NFLGame prevGame = team.PreviousGame( upcomingGame.GameDate ); if ( prevGame.Won( team ) ) if ( prevGame.ScoreFor( team ) >= KBigScore ) { NFLGame prevPrevGame = team.PreviousGame( prevGame.GameDate ); if ( prevGame.Won( team ) ) { if ( prevPrevGame.ScoreFor( team ) >= KBigScore ) isBigScorer = true; } } } return isBigScorer; }
internal static bool LastGamePhonyLoss(NflTeam team, NFLGame upcomingGame) { bool isLastGamePhonyLoss = false; NFLGame prevGame = team.PreviousGame(upcomingGame.GameDate); if (prevGame.WasPhonyWin()) { if (prevGame.Lost(team)) { isLastGamePhonyLoss = true; } } return isLastGamePhonyLoss; }
/// <summary> /// Segment I (Weeks 1-4) /// Pointer Eleven: (p 70) /// Sandwich Game /// I look to wager against a team ina divisional series "sandwich game". /// A sandwich game is a non-divisional game that takes placewhen a team has just played /// at least two straight divisional games and has at least 2 more straight divisional /// games coming up after the non divisional contest. /// </summary> public static bool TeamSandwiched( NflTeam t, NFLGame nextGame ) { bool sandwichGame = false; if ( ! nextGame.IsDivisionalGame() ) { NFLGame lastGame = t.PreviousGame( nextGame.GameDate ); if ( lastGame.IsDivisionalGame() ) { NFLGame lastLastGame = t.PreviousGame( lastGame.GameDate ); if ( lastLastGame.IsDivisionalGame() ) { // now what about the next game? NFLGame nextNextGame = t.NextGame( nextGame.GameDate ); if (nextNextGame != null) { if (nextNextGame.IsDivisionalGame()) { // finally another one NFLGame nextNextNextgame = t.NextGame(nextNextGame.GameDate); if (nextNextNextgame.IsDivisionalGame()) sandwichGame = true; } } } } } return sandwichGame; }
/// <summary> /// Segment II (Weeks 5-8) /// Pointer Two A: (p 72) /// Embarrasing Performances. I look to wager on a team that has _just_ suffered a humiliating loss /// either by a big score or to a bad club. I also look to bet a team that has very poor offensive /// or defensive numbers in their last game, or to wager against a team that has just put up /// outstanding offensive or defensive numbers. /// </summary> /// <param name="t"></param> /// <param name="when"></param> /// <returns></returns> public static bool TeamEmbarrased( NflTeam t, DateTime when ) { // get their previous game NFLGame prevGame = t.PreviousGame( when ); if ( prevGame != null ) if ( prevGame.WasRout() ) if ( prevGame.Lost( t ) ) return true; return false; }
/// <summary> /// Segment II (Weeks 5-8) /// Pointer Eleven: (p 74) /// Under-the-Lights followup. /// As in the first four games, I look to wager on teams that lost a rout on Sunday or /// Monday night and look to wager against teams that won a rout under the night /// lights of national television. /// </summary> /// <param name="team"></param> /// <param name="upcomingGame"></param> /// <returns></returns> public static bool SundayOrMondayNightRout( NflTeam team, NFLGame upcomingGame ) { bool isSundayOrMondayNightRout = false; NFLGame prevGame = team.PreviousGame( upcomingGame.GameDate ); if ( prevGame.IsPrimeTime() ) { if ( prevGame.WasRout() ) if ( prevGame.Lost( team ) ) isSundayOrMondayNightRout = true; } return isSundayOrMondayNightRout; }
/// <summary> /// Segment II (Weeks 5-8) /// Pointer: Six (p 73) /// Out-of-Division Favourites. /// As in games one through four, if a team has played 2 or more consecutive divisional games /// and is now playing a nondivisional game, I look to wager against the team if they are /// favoured by 7 or more. /// </summary> /// <param name="team"></param> /// <param name="upcomingGame"></param> /// <returns></returns> public static bool OutOfDivisionFavourites( NflTeam team, NFLGame upcomingGame ) { var isOutOfDivisionFavourite = false; if ( ! upcomingGame.IsDivisionalGame() ) { if ( upcomingGame.IsFavourite( team ) ) { if ( Math.Abs( upcomingGame.Spread ) >= 7 ) { var lastGame = team.PreviousGame( upcomingGame.GameDate ); if ( lastGame.IsDivisionalGame() ) { var previousToLastGame = team.PreviousGame( lastGame.GameDate ); if (previousToLastGame.IsDivisionalGame()) isOutOfDivisionFavourite = true; } } } } return isOutOfDivisionFavourite; }
/// <summary> /// Segment II ( Weeks 5-8) /// Pointer Eight: (p73) /// Monday Night Followup. /// As in the first four games, I look to bet /// against a team that has won and covered a Monday night game against a /// divisional opponent, and who is now playing a non divisional team. /// </summary> /// <param name="team"></param> /// <param name="upcomingGame"></param> /// <returns></returns> public static bool MondayNightFollowUp( NflTeam team, NFLGame upcomingGame ) { var isMnfFollowup = false; if ( ! upcomingGame.IsDivisionalGame() ) { var previousGame = team.PreviousGame( upcomingGame.GameDate ); if ( previousGame.IsMondayNight() ) { if ( previousGame.IsDivisionalGame() ) if ( previousGame.WonVsSpread( team ) ) isMnfFollowup = true; } } return isMnfFollowup; }
/// <summary> /// Segment I (Weeks 1-4) /// Pointer Twelve: (p 71) /// PhonyWins and Phony Losses. /// I look to bet against a team coming off a phony win and on a team coming /// off a phony loss. /// In most games the team with the higher-average-gain per pass wins. If a /// team wins a game having the lower average and the losing team committed more /// turnovers, the team that won has gained a phony win. /// </summary> /// <returns></returns> public static bool LastGamePhonyWin(NflTeam team, NFLGame upcomingGame) { bool isLastGamePhonyWin = false; NFLGame prevGame = team.PreviousGame( upcomingGame.GameDate ); if ( prevGame.WasPhonyWin() ) { if ( prevGame.Won( team ) ) { isLastGamePhonyWin = true; } } return isLastGamePhonyWin; }
/// <summary> /// Segment II (Weeks 5-8) /// Pointer Nine: (p73-4) /// Large Point Swings. /// As in the first four games, I use the 50-point swing model. In other words, /// if Team A's margin of win and Team B's margin of loss the previous week add up /// to 50 points or more, I am looking to bet Team B this week. /// </summary> /// <param name="team"></param> /// <param name="upcomingGame"></param> /// <returns></returns> public static bool LargePointSwing( NflTeam team, NFLGame upcomingGame ) { bool largePointSwing = false; NFLGame prevGame = team.PreviousGame( upcomingGame.GameDate ); if ( prevGame.Lost( team ) ) { NflTeam opponent = upcomingGame.OpponentTeam( team.TeamCode ); NFLGame prevOpponentGame = opponent.PreviousGame( upcomingGame.GameDate ); if ( prevOpponentGame.Won( opponent ) ) { int margin = prevGame.MarginOfVictory() + prevOpponentGame.MarginOfVictory(); if ( margin >= KLargePointSwingMargin ) largePointSwing = true; } } return largePointSwing; }
/// <summary> /// Segment I (Weeks 1-4) /// Pointer Two: (p 63, 73) /// Home Dog After Home Loss as Favourite. /// When a team loses as a favourite at home and is the home dog next week, /// look to bet on the underdog /// </summary> public static bool HomeDogBounce( NflTeam team, NFLGame nextGame ) { bool bounce = false; NFLGame lastGame = team.PreviousGame( nextGame.GameDate ); if ( lastGame.IsFavourite( team ) ) if ( lastGame.Lost( team ) ) { if ( nextGame.IsDog( team ) ) if ( nextGame.IsHome( team.TeamCode ) ) bounce = true; } return bounce; }
/// <summary> /// Segment II ( Weeks 5-8) /// Pointer Seven: (p73) /// Follow-up Performances. /// If a team is strong against the spread after an outright loss (I check back one year on this) /// I will look to bet them after a loss. If a team plays poorly after a win, I will look to bet /// against them after a win. Getting to know each team's personality is important using /// this model. /// Interpretation: Team is strong if they cover the spread >= 60%, week if they lose to the /// spread >= 60%. /// /// </summary> /// <param name="team"></param> /// <param name="upcomingGame"></param> /// <returns></returns> public static string FollowupPerformance( NflTeam team, NFLGame upcomingGame ) { string followupCode = ""; decimal spreadRecord; NFLGame previousGame = team.PreviousGame( upcomingGame.GameDate ); if ( previousGame.Won( team ) ) { spreadRecord = team.SpreadRecordAfterWin( upcomingGame.GameDate ); if ( spreadRecord >= KStrongAgainstSpread ) followupCode = "s"; else if ( spreadRecord <= KWeekAgainstSpread ) followupCode = "w"; } else { spreadRecord = team.SpreadRecordAfterLoss( upcomingGame.GameDate ); if ( spreadRecord >= KStrongAgainstSpread ) followupCode = "w"; else if ( spreadRecord <= KWeekAgainstSpread ) followupCode = "s"; } return followupCode; }