Esempio n. 1
0
def get_event_odds(db_session, db_event):

    # Get event info from OddsChecker web site
    oc = OddsChecker()
    info = oc.get_racing_info(event.course.lower().replace(' ', '-'),
                              event.date_time.strftime('%H:%M'), 'winner')

    # Create checkpoint
    db_checkpoint = Checkpoint(event=event,
                               date_time=dt.datetime.now(),
                               source='OddsChecker')
    db_session.add(db_checkpoint)
    for bookie in info['bookies']:
        db_bookie = db_session.query(Bookie).filter_by(
            name=bookie.name).one_or_none()
        if not db_bookie:
            db_bookie = Bookie(name=bookie.name)
            db_session.add(db_bookie)
        db_bookie_event = db_session.query(BookieEvent).filter_by(
            event=db_event, bookie=db_bookie).one_or_none()
        if not db_bookie_event:
            db_bookie_event = BookieEvent(event=db_event,
                                          bookie=db_bookie,
                                          ew_places=bookie.ew_places or 0,
                                          ew_divider=bookie.ew_divider or 1)
            db_session.add(db_bookie_event)
    for horse in info['horses']:
        db_runner = db_session.query(Runner).filter_by(
            event=db_event, name=horse.name).one_or_none()
        if not db_runner:
            db_runner = Runner(event=db_event, name=horse.name)
            db_session.add(db_runner)
        for bookie, odds in horse.odds.items():
            db_bookie = db_session.query(Bookie).filter_by(name=bookie).one()
            db_odds = Odds(checkpoint=db_checkpoint,
                           runner=db_runner,
                           bookie=db_bookie,
                           win=odds,
                           place=0)
            db_session.add(db_odds)
    db_session.commit()
    db_event.last_checkpoint = db_checkpoint
    db_session.commit()
Esempio n. 2
0
def fixture_stats():
    """
    Calculate the predicted home and away goals for a fixture
    and store those values in the database.
    """
    fixtures = db.session.query(Fixture).filter_by(completed=False)
    for fixture in fixtures:
        league_stats = db.session.query(League_Stats).filter_by(
            league_id=fixture.league_id).one()

        home_stats = db.session.query(Team_Stats).filter_by(
            team_id=fixture.home_team_id).one()

        away_stats = db.session.query(Team_Stats).filter_by(
            team_id=fixture.away_team_id).one()

        home_goals = (home_stats.home_attack_strength) * (
            away_stats.away_defense_strength) * (league_stats.avg_home_goals)

        away_goals = (away_stats.away_attack_strength) * (
            home_stats.home_defense_strength) * (league_stats.avg_away_goals)

        prediction = db.session.query(Prediction).filter_by(
            fixture_id=fixture.id).first()

        if not prediction:
            prediction = Prediction(fixture)

        prediction.home_goals = home_goals
        prediction.away_goals = away_goals

        prediction = _fixture_probabilities(fixture, prediction)

        odds = db.session.query(Odds).filter_by(fixture_id=fixture.id).first()

        if not odds:
            odds = Odds(fixture)

    db.session.commit()
Esempio n. 3
0
    # This will store all the games we create
    games_added = []
    odds_added = []
    pull_id = arrow.now().timestamp

    for event in events:

        game_id = event.rundown_id

        try:
            game = Games.query.get(game_id)
        except Exception:
            print(f'game not found:{game_id}')
            continue

        if not game:
            print(f'game not found:{game_id}')
            continue

        odds = Odds()
        odds.pull_id = pull_id
        odds.game_id = event.rundown_id
        odds.moneyline_id = event.moneyline_id
        odds.moneyline_away = event.moneyline_odds_away
        odds.moneyline_home = event.moneyline_odds_home
        odds_added.append(odds)

    db.session.add_all(games_added)
    db.session.add_all(odds_added)
    db.session.commit()