def analyze_by_metric(): factors_by_metric = {} count = 0 for race in race_feed(2000): if len([ s for s in race if s.final_odds < 0.01 or len(s.entry_indicator.strip()) > 0 ]) > 0: continue assign_metrics(race) for m in race.metrics: if m not in factors_by_metric: factors_by_metric[m] = [ FactorStats(f) for f in [just_broke_the_maiden] ] try: race.takeout = 1.0 - 1.0 / sum( [1.0 / (1.0 + s.final_odds) for s in race]) for starter in race: starter.crowd_probability = (1.0 - race.takeout) / ( 1.0 + starter.final_odds) for m in race.metrics: factor_stats = factors_by_metric[m] map(lambda f: f.add(race), factor_stats) count += 1 except Exception as e: print 'here', e, race.parent.track, race.parent.date, race.number for m in factors_by_metric: print m factor_stats = factors_by_metric[m] map(lambda f: f.show_details(), factor_stats)
def analyze_by_metric(): factors_by_metric = {} count = 0 for race in race_feed(2000): if len([s for s in race if s.final_odds < 0.01 or len(s.entry_indicator.strip()) > 0]) > 0: continue assign_metrics(race) for m in race.metrics: if m not in factors_by_metric: factors_by_metric[m] = [FactorStats(f) for f in [just_broke_the_maiden]] try: race.takeout = 1.0 - 1.0 / sum([1.0 / (1.0 + s.final_odds) for s in race]) for starter in race: starter.crowd_probability = (1.0 - race.takeout) / (1.0 + starter.final_odds) for m in race.metrics: factor_stats = factors_by_metric[m] map(lambda f: f.add(race), factor_stats) count += 1 except Exception as e: print "here", e, race.parent.track, race.parent.date, race.number for m in factors_by_metric: print m factor_stats = factors_by_metric[m] map(lambda f: f.show_details(), factor_stats)
def analyze_favorites(): #factor_stats =[all_favorites, first_time_out, short_layoff, layoff, long_layoff, second_of_layoff, third_of_layoff, deep_form_cycle] #factor_stats = [ FactorStats(f) for f in factor_stats] factor_stats = [] for days_off in range(20,200,15): f = foo(days_off) f.__name__ = 'layoff_{0}'.format(days_off) func = FactorStats(f) factor_stats.append(func) f = slo(days_off) f.__name__ = '2nd of layoff_{0}'.format(days_off) func = FactorStats(f) factor_stats.append(func) f = tlo(days_off) f.__name__ = '3rd of layoff_{0}'.format(days_off) func = FactorStats(f) factor_stats.append(func) count = 0 for race in race_feed(): if len([s for s in race if s.final_odds < 0.01 or len(s.entry_indicator.strip()) > 0]) > 0: continue try: race.takeout = 1.0 - 1.0 / sum( [ 1.0 / (1.0 + s.final_odds) for s in race] ) for starter in race: starter.crowd_probability = 1.0 / ( (race.takeout + 1.0) * ( 1.0 + starter.final_odds)) map(lambda f : f.add(race.favorite), factor_stats) count += 1 except Exception as e: print 'here',e, race.parent.track, race.parent.date, race.number s = '{0:35} '.format('factor') s += '{0:12} '.format('expected') s += '{0:12}'.format('observed') s += '{0:12}'.format('rate') s += '{0:12}'.format('roi') print s print for factor in factor_stats: print str(factor) #factor.show_details() print 'number of races:', count
def recency_histogram(): counter = Counter() for race in race_feed(): if len([s for s in race if s.final_odds < 0.01 or len(s.entry_indicator.strip()) > 0]) > 0: continue try: for starter in race: if first_time_out(starter): pass else: counter[int(starter.days_off)] += 1 except Exception as e: print 'here',e, race.parent.track, race.parent.date, race.number keys = sorted(counter.keys()) for k in keys: print '{0},{1}'.format(k, counter[k])
def analyze(factors): factor_stats = [FactorStats(f) for f in factors] count = 0 for race in race_feed(): if len([s for s in race if s.final_odds < 0.01 or len(s.entry_indicator.strip()) > 0]) > 0: continue try: race.takeout = 1.0 - 1.0 / sum([1.0 / (1.0 + s.final_odds) for s in race]) for starter in race: starter.crowd_probability = (1.0 - race.takeout) / (1.0 + starter.final_odds) map(lambda f: f.add(race), factor_stats) count += 1 except Exception as e: print "here", e, race.parent.track, race.parent.date, race.number map(lambda f: f.show_details(), factor_stats)
def analyze(factors): factor_stats = [FactorStats(f) for f in factors] count = 0 for race in race_feed(): if len([ s for s in race if s.final_odds < 0.01 or len(s.entry_indicator.strip()) > 0 ]) > 0: continue try: race.takeout = 1.0 - 1.0 / sum( [1.0 / (1.0 + s.final_odds) for s in race]) for starter in race: starter.crowd_probability = (1.0 - race.takeout) / ( 1.0 + starter.final_odds) map(lambda f: f.add(race), factor_stats) count += 1 except Exception as e: print 'here', e, race.parent.track, race.parent.date, race.number map(lambda f: f.show_details(), factor_stats)
def evaluate_opening_call_of_race(pp): return get_evaluator().evaluate_opening_call_of_race(pp) def evaluate_final_time_of_race(pp): return get_evaluator().evaluate_final_time_of_race(pp) def evaluate_closing_for_starter(pp): return get_evaluator().evaluate_closing_for_starter(pp) def get_closing_time_for_starter(pp): return get_evaluator().get_closing_time_for_starter(pp) def get_fractions_for_starter(pp): return get_evaluator().get_fractions_for_starter(pp) if __name__ == '__main__': from card_loader import race_feed for race in race_feed(): for starter in race.starters: for pp in starter.past_performances: print fancy_format(evaluate_opening_call_of_race(pp), 'OPEN'), print evaluate_opening_call_of_race(pp), print fancy_format(evaluate_final_time_of_race(pp), 'FINAL'), print evaluate_final_time_of_race(pp), print evaluate_closing_for_starter(pp)
if distance_metrics is None: distance_metrics = DistanceMetrics() assert(None is not distance_metrics) return distance_metrics def evaluate_opening_call_of_race(pp): return get_evaluator().evaluate_opening_call_of_race(pp) def evaluate_final_time_of_race(pp): return get_evaluator().evaluate_final_time_of_race(pp) def evaluate_closing_for_starter(pp): return get_evaluator().evaluate_closing_for_starter(pp) def get_closing_time_for_starter(pp): return get_evaluator().get_closing_time_for_starter(pp) def get_fractions_for_starter(pp): return get_evaluator().get_fractions_for_starter(pp) if __name__ == '__main__': from card_loader import race_feed for race in race_feed(): for starter in race.starters: for pp in starter.past_performances: print fancy_format(evaluate_opening_call_of_race(pp), 'OPEN'), print evaluate_opening_call_of_race(pp), print fancy_format(evaluate_final_time_of_race(pp), 'FINAL'), print evaluate_final_time_of_race(pp), print evaluate_closing_for_starter(pp)