from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import pandas as pd from math import sqrt bookkeeper_odds_df = pd.read_excel('prescreening_UK/bookkeeper_odds.xlsx') # class MatchBet_a(Page): # form_model = 'player' # form_fields = ['matchbet_1_win', 'matchbet_1_draw', 'matchbet_1_lose', 'matchbet_1_sum', 'matchbet_1_winodds', 'matchbet_1_drawodds', # 'matchbet_1_loseodds', 'match_1_watch', 'MatchBet_a_time'] # def vars_for_template(self): # bm_home = bookkeeper_odds_df['match1_home_team_odds'].iloc[0] # bm_draw = bookkeeper_odds_df['match1_draw_odds'].iloc[0] # bm_away = bookkeeper_odds_df['match1_away_team_odds'].iloc[0] # wedge = self.player.participant.vars['wedge1'] # if wedge != 0: # probability_wedge = (sqrt((4*bm_away*bm_home*(wedge**2)) + (bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home)**2) + bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home) / (2 * bm_away * bm_home * wedge) # else: # probability_wedge = 0 # home_team_odds = round(1 / ((1/bm_home) + probability_wedge), 2) # away_team_odds = round(1 / ((1/bm_away) - probability_wedge), 2) # return dict( # # match_num=self.player.participant.vars['task_rounds']['A'], # match_num = 1, # home_team_abbv = bookkeeper_odds_df['match1_home_team_abbv'].iloc[0], # home_team_odds = home_team_odds, # away_team_abbv = bookkeeper_odds_df['match1_away_team_abbv'].iloc[0], # away_team_odds = away_team_odds, # draw_odds = bm_draw, # home_team=bookkeeper_odds_df['match1_home_team'].iloc[0], # away_team=bookkeeper_odds_df['match1_away_team'].iloc[0], # ) # # def is_displayed(self): # # return self.player.round_number == self.player.participant.vars['task_rounds']['A'] # def before_next_page(self): # self.player.participant.vars['matchbet_1_win'] = self.player.matchbet_1_win # self.player.participant.vars['matchbet_1_draw'] = self.player.matchbet_1_draw # self.player.participant.vars['matchbet_1_lose'] = self.player.matchbet_1_lose # self.player.participant.vars['matchbet_1_winodds'] = self.player.matchbet_1_winodds # self.player.participant.vars['matchbet_1_drawodds'] = self.player.matchbet_1_drawodds # self.player.participant.vars['matchbet_1_loseodds'] = self.player.matchbet_1_loseodds class MatchBet_b(Page): form_model = 'player' form_fields = ['matchbet_2_win', 'matchbet_2_draw', 'matchbet_2_lose', 'matchbet_2_sum', 'matchbet_2_winodds', 'matchbet_2_drawodds', 'matchbet_2_loseodds', 'match_2_watch', 'MatchBet_b_time'] def vars_for_template(self): bm_home = bookkeeper_odds_df['match2_home_team_odds'].iloc[0] bm_draw = bookkeeper_odds_df['match2_draw_odds'].iloc[0] bm_away = bookkeeper_odds_df['match2_away_team_odds'].iloc[0] wedge = self.player.participant.vars['wedge2'] if wedge != 0: probability_wedge = (sqrt((4*bm_away*bm_home*(wedge**2)) + (bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home)**2) + bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home) / (2 * bm_away * bm_home * wedge) else: probability_wedge = 0 home_team_odds = round(1 / ((1/bm_home) + probability_wedge), 2) away_team_odds = round(1 / ((1/bm_away) - probability_wedge), 2) return dict( match_num=self.player.participant.vars['task_rounds']['B'] + 1, # match_num = 2, home_team_abbv = bookkeeper_odds_df['match2_home_team_abbv'].iloc[0], home_team_odds = home_team_odds, away_team_abbv = bookkeeper_odds_df['match2_away_team_abbv'].iloc[0], away_team_odds = away_team_odds, draw_odds = bm_draw, home_team=bookkeeper_odds_df['match2_home_team'].iloc[0], away_team=bookkeeper_odds_df['match2_away_team'].iloc[0], ) def is_displayed(self): return self.player.round_number == self.player.participant.vars['task_rounds']['B'] def before_next_page(self): self.player.participant.vars['matchbet_2_win'] = self.player.matchbet_2_win self.player.participant.vars['matchbet_2_draw'] = self.player.matchbet_2_draw self.player.participant.vars['matchbet_2_lose'] = self.player.matchbet_2_lose self.player.participant.vars['matchbet_2_winodds'] = self.player.matchbet_2_winodds self.player.participant.vars['matchbet_2_drawodds'] = self.player.matchbet_2_drawodds self.player.participant.vars['matchbet_2_loseodds'] = self.player.matchbet_2_loseodds class MatchBet_c(Page): form_model = 'player' form_fields = ['matchbet_3_win', 'matchbet_3_draw', 'matchbet_3_lose', 'matchbet_3_sum', 'matchbet_3_winodds', 'matchbet_3_drawodds', 'matchbet_3_loseodds', 'match_3_watch', 'MatchBet_c_time'] def vars_for_template(self): bm_home = bookkeeper_odds_df['match3_home_team_odds'].iloc[0] bm_draw = bookkeeper_odds_df['match3_draw_odds'].iloc[0] bm_away = bookkeeper_odds_df['match3_away_team_odds'].iloc[0] wedge = self.player.participant.vars['wedge3'] if wedge != 0: probability_wedge = (sqrt((4*bm_away*bm_home*(wedge**2)) + (bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home)**2) + bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home) / (2 * bm_away * bm_home * wedge) else: probability_wedge = 0 home_team_odds = round(1 / ((1/bm_home) + probability_wedge), 2) away_team_odds = round(1 / ((1/bm_away) - probability_wedge), 2) return dict( match_num=self.player.participant.vars['task_rounds']['C'] + 1, # match_num = 3, home_team_abbv = bookkeeper_odds_df['match3_home_team_abbv'].iloc[0], home_team_odds = home_team_odds, away_team_abbv = bookkeeper_odds_df['match3_away_team_abbv'].iloc[0], away_team_odds = away_team_odds, draw_odds = bm_draw, home_team=bookkeeper_odds_df['match3_home_team'].iloc[0], away_team=bookkeeper_odds_df['match3_away_team'].iloc[0], ) def is_displayed(self): return self.player.round_number == self.player.participant.vars['task_rounds']['C'] def before_next_page(self): self.player.participant.vars['matchbet_3_win'] = self.player.matchbet_3_win self.player.participant.vars['matchbet_3_draw'] = self.player.matchbet_3_draw self.player.participant.vars['matchbet_3_lose'] = self.player.matchbet_3_lose self.player.participant.vars['matchbet_3_winodds'] = self.player.matchbet_3_winodds self.player.participant.vars['matchbet_3_drawodds'] = self.player.matchbet_3_drawodds self.player.participant.vars['matchbet_3_loseodds'] = self.player.matchbet_3_loseodds class MatchBet_d(Page): form_model = 'player' form_fields = ['matchbet_4_win', 'matchbet_4_draw', 'matchbet_4_lose', 'matchbet_4_sum', 'matchbet_4_winodds', 'matchbet_4_drawodds', 'matchbet_4_loseodds', 'match_4_watch', 'MatchBet_d_time'] def vars_for_template(self): bm_home = bookkeeper_odds_df['match4_home_team_odds'].iloc[0] bm_draw = bookkeeper_odds_df['match4_draw_odds'].iloc[0] bm_away = bookkeeper_odds_df['match4_away_team_odds'].iloc[0] wedge = self.player.participant.vars['wedge4'] if wedge != 0: probability_wedge = (sqrt((4*bm_away*bm_home*(wedge**2)) + (bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home)**2) + bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home) / (2 * bm_away * bm_home * wedge) else: probability_wedge = 0 home_team_odds = round(1 / ((1/bm_home) + probability_wedge), 2) away_team_odds = round(1 / ((1/bm_away) - probability_wedge), 2) return dict( match_num=self.player.participant.vars['task_rounds']['D'] + 1, # match_num = 4, home_team_abbv = bookkeeper_odds_df['match4_home_team_abbv'].iloc[0], home_team_odds = home_team_odds, away_team_abbv = bookkeeper_odds_df['match4_away_team_abbv'].iloc[0], away_team_odds = away_team_odds, draw_odds = bm_draw, home_team=bookkeeper_odds_df['match4_home_team'].iloc[0], away_team=bookkeeper_odds_df['match4_away_team'].iloc[0], ) def is_displayed(self): return self.player.round_number == self.player.participant.vars['task_rounds']['D'] def before_next_page(self): self.player.participant.vars['matchbet_4_win'] = self.player.matchbet_4_win self.player.participant.vars['matchbet_4_draw'] = self.player.matchbet_4_draw self.player.participant.vars['matchbet_4_lose'] = self.player.matchbet_4_lose self.player.participant.vars['matchbet_4_winodds'] = self.player.matchbet_4_winodds self.player.participant.vars['matchbet_4_drawodds'] = self.player.matchbet_4_drawodds self.player.participant.vars['matchbet_4_loseodds'] = self.player.matchbet_4_loseodds # class MatchBet_e(Page): # form_model = 'player' # form_fields = ['matchbet_5_win', 'matchbet_5_draw', 'matchbet_5_lose', 'matchbet_5_sum', 'matchbet_5_winodds', 'matchbet_5_drawodds', # 'matchbet_5_loseodds', 'match_5_watch', 'MatchBet_e_time'] # def vars_for_template(self): # bm_home = bookkeeper_odds_df['match5_home_team_odds'].iloc[0] # bm_draw = bookkeeper_odds_df['match5_draw_odds'].iloc[0] # bm_away = bookkeeper_odds_df['match5_away_team_odds'].iloc[0] # wedge = self.player.participant.vars['wedge5'] # if wedge != 0: # probability_wedge = (sqrt((4*bm_away*bm_home*(wedge**2)) + (bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home)**2) + bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home) / (2 * bm_away * bm_home * wedge) # else: # probability_wedge = 0 # home_team_odds = round(1 / ((1/bm_home) + probability_wedge), 2) # away_team_odds = round(1 / ((1/bm_away) - probability_wedge), 2) # return dict( # match_num = 5, # home_team_abbv = bookkeeper_odds_df['match5_home_team_abbv'].iloc[0], # home_team_odds = home_team_odds, # away_team_abbv = bookkeeper_odds_df['match5_away_team_abbv'].iloc[0], # away_team_odds = away_team_odds, # draw_odds = bm_draw, # home_team=bookkeeper_odds_df['match5_home_team'].iloc[0], # away_team=bookkeeper_odds_df['match5_away_team'].iloc[0], # ) # def before_next_page(self): # self.player.participant.vars['matchbet_5_win'] = self.player.matchbet_5_win # self.player.participant.vars['matchbet_5_draw'] = self.player.matchbet_5_draw # self.player.participant.vars['matchbet_5_lose'] = self.player.matchbet_5_lose # self.player.participant.vars['matchbet_5_winodds'] = self.player.matchbet_5_winodds # self.player.participant.vars['matchbet_5_drawodds'] = self.player.matchbet_5_drawodds # self.player.participant.vars['matchbet_5_loseodds'] = self.player.matchbet_5_loseodds # class MatchBet_f(Page): # form_model = 'player' # form_fields = ['matchbet_6_win', 'matchbet_6_draw', 'matchbet_6_lose', 'matchbet_6_sum', 'matchbet_6_winodds', 'matchbet_6_drawodds', # 'matchbet_6_loseodds', 'match_6_watch', 'MatchBet_f_time'] # def vars_for_template(self): # bm_home = bookkeeper_odds_df['match6_home_team_odds'].iloc[0] # bm_draw = bookkeeper_odds_df['match6_draw_odds'].iloc[0] # bm_away = bookkeeper_odds_df['match6_away_team_odds'].iloc[0] # wedge = self.player.participant.vars['wedge6'] # if wedge != 0: # probability_wedge = (sqrt((4*bm_away*bm_home*(wedge**2)) + (bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home)**2) + bm_away*(-wedge) - bm_away + (bm_home*wedge) - bm_home) / (2 * bm_away * bm_home * wedge) # else: # probability_wedge = 0 # home_team_odds = round(1 / ((1/bm_home) + probability_wedge), 2) # away_team_odds = round(1 / ((1/bm_away) - probability_wedge), 2) # return dict( # match_num = 6, # home_team_abbv = bookkeeper_odds_df['match6_home_team_abbv'].iloc[0], # home_team_odds = home_team_odds, # away_team_abbv = bookkeeper_odds_df['match6_away_team_abbv'].iloc[0], # away_team_odds = away_team_odds, # draw_odds = bm_draw, # home_team=bookkeeper_odds_df['match6_home_team'].iloc[0], # away_team=bookkeeper_odds_df['match6_away_team'].iloc[0], # ) # def before_next_page(self): # self.player.participant.vars['matchbet_6_win'] = self.player.matchbet_6_win # self.player.participant.vars['matchbet_6_draw'] = self.player.matchbet_6_draw # self.player.participant.vars['matchbet_6_lose'] = self.player.matchbet_6_lose # self.player.participant.vars['matchbet_6_winodds'] = self.player.matchbet_6_winodds # self.player.participant.vars['matchbet_6_drawodds'] = self.player.matchbet_6_drawodds # self.player.participant.vars['matchbet_6_loseodds'] = self.player.matchbet_6_loseodds page_sequence = [ # MatchBet_a, MatchBet_b, MatchBet_c, MatchBet_d # MatchBet_e, # MatchBet_f ]