Example #1
0
def match_up(player1, player2):
	spw_p1, counter_p1 = predictions(player1,player2)
	spw_p2, counter_p2 = predictions(player2,player1)
	# ask if its a five setter tournament
	five_setter = 1
	#normalizing values
	avg_p1spw = spw_p1/counter_p1
	avg_p2spw = spw_p2/counter_p2
	delta_a_b = avg_p1spw - avg_p2spw
	p1_win_probability = markov.match_win_probability_5(0.6+delta_a_b,(1-0.6))+markov.match_win_probability_5(0.6,(1-(0.6-delta_a_b)))
	p1_win_probability = p1_win_probability/2
	p2_win_probability = 1-p1_win_probability
	predicted_odds_p1 = 1/p1_win_probability
	predicted_odds_p2 = 1/p2_win_probability
	print str(avg_p1spw) + ", " + str(avg_p2spw)
	print "In a match up between " + player1 + " and " + player2 + " on " + str(time.strftime("%d/%m/%Y"))
	print "Player 1 win probability: " + str(p1_win_probability*100) + "%"
	print "Player 2 win probability: " + str(p2_win_probability*100) + "%"
	print "Only bet on Player 1 if the odds>$"+str(predicted_odds_p1)
	print "Only bet on Player 2 if the odds>$"+str(predicted_odds_p2)
def match_up(player1, player2):
    spw_p1, counter_p1 = predictions(player1, player2)
    spw_p2, counter_p2 = predictions(player2, player1)
    # ask if its a five setter tournament
    five_setter = 1
    # normalizing values
    avg_p1spw = spw_p1 / counter_p1
    avg_p2spw = spw_p2 / counter_p2
    delta_a_b = avg_p1spw - avg_p2spw
    p1_win_probability = markov.match_win_probability_5(0.6 + delta_a_b, (1 - 0.6)) + markov.match_win_probability_5(
        0.6, (1 - (0.6 - delta_a_b))
    )
    p1_win_probability = p1_win_probability / 2
    p2_win_probability = 1 - p1_win_probability
    predicted_odds_p1 = 1 / p1_win_probability
    predicted_odds_p2 = 1 / p2_win_probability
    print str(avg_p1spw) + ", " + str(avg_p2spw)
    print "In a match up between " + player1 + " and " + player2 + " on " + str(time.strftime("%d/%m/%Y"))
    print "Player 1 win probability: " + str(p1_win_probability * 100) + "%"
    print "Player 2 win probability: " + str(p2_win_probability * 100) + "%"
    print "Only bet on Player 1 if the odds>$" + str(predicted_odds_p1)
    print "Only bet on Player 2 if the odds>$" + str(predicted_odds_p2)
def simulate_bets():
	fixtures = csv.DictReader(open("final_fixtures.csv"))
	roi = 0
	matches_bet_on = 0
	correct_bets = 0
	wrong_bets = 0
	output_results = []
	for fixture in fixtures:
		delta_a_b = 0
		winner = -1
		five_setter=0
		if ("Jerzy" in fixture["player1"]) or ("Jerzy" in fixture["player2"]):
			continue
		if (fixture["winner"]==fixture["player1"]):
			winner=1
		elif (fixture["winner"]==fixture["player2"]):
			winner=2
		if winner<0:
			print "ERROR, DOES NOT READ PLAYER 1 AND 2 CORRECTLY"
		# remove the $ symbol and convert to float
		market_odds_p1 = float(fixture["p1odds"][1:])
		market_odds_p2 = float(fixture["p2odds"][1:])
		tournament = fixture["tournament"]
		# if grand slam or davis cup, its a 5 setter match
		if "Slam" in tournament:
			five_setter = 1
		p1spw = float(fixture["p1spw"])
		p2spw = float(fixture["p2spw"])
		p1_spwcount = float(fixture["p1_spwcount"])
		p2_spwcount = float(fixture["p2_spwcount"])
		#if (p1_spwcount==0 or p2_spwcount==0 or p1_spwcount==1 or p2_spwcount==1):
		if (p1_spwcount==0 or p2_spwcount==0 or p1_spwcount==1 or p2_spwcount==1):
			#dont bet because there isnt enough clustering info
			continue
		#normalizing values
		avg_p1spw = p1spw/p1_spwcount
		avg_p2spw = p2spw/p2_spwcount
		delta_a_b = avg_p1spw - avg_p2spw
		delta_b_a = avg_p2spw - avg_p1spw

		if (five_setter):
			#use five setter formula
			p1_win_probability = markov.match_win_probability_5(0.6+delta_a_b,(1-0.6))+markov.match_win_probability_5(0.6,(1-(0.6-delta_a_b)))
			p1_win_probability = p1_win_probability/2
			p2_win_probability = 1-p1_win_probability
		else:
			#use three sets formula (default)
			p1_win_probability = markov.match_win_probability_3(0.6+delta_a_b,(1-0.6))+markov.match_win_probability_3(0.6,(1-(0.6-delta_a_b)))
			p1_win_probability = p1_win_probability/2
			p2_win_probability = 1-p1_win_probability

		predicted_odds_p1 = 1/p1_win_probability
		predicted_odds_p2 = 1/p2_win_probability

		#betted = 1 if bet on player 1, =2 if bet on player 2
		betted = -1

		if (market_odds_p1>predicted_odds_p1 and predicted_odds_p1<2):
			# bet pound on p1
			betted = 1
			matches_bet_on +=1
		elif (market_odds_p2>predicted_odds_p2 and predicted_odds_p2<2):
			# bet pound on p2
			betted = 2
			matches_bet_on +=1
		if betted<0:
			# NO BET
			continue

		if (betted==1 and winner==1):
			roi+=(market_odds_p1-1)
			correct_bets+=1
			output_results.append([fixture["player1"], fixture["player2"], tournament, market_odds_p1, market_odds_p2, market_odds_p1-1])
		elif (betted==2 and winner==2):
			roi+=(market_odds_p2-1)
			correct_bets+=1
			output_results.append([fixture["player2"], fixture["player1"], tournament, market_odds_p2, market_odds_p1, market_odds_p2-1])
		elif (betted==1 and winner==2):
			#print fixture["date"] + "  "+ fixture["player1"] + " vs " + fixture["player2"] + ", bet on: "+ fixture["player1"]
			roi-=1
			wrong_bets+=1
			output_results.append([fixture["player2"], fixture["player1"], tournament, market_odds_p2, market_odds_p1, -1])
		elif (betted==2 and winner==1):
			print fixture["date"] + "  "+ fixture["player1"] + " vs " + fixture["player2"] + ", bet on: "+ fixture["player2"]
			roi-=1
			wrong_bets+=1
			output_results.append([fixture["player1"], fixture["player2"], tournament, market_odds_p1, market_odds_p2, -1])
	print "$"+str(roi)
	print "Bet on " + str(matches_bet_on) + " matches"
	print "Correct bets:" + str(correct_bets)
	print "Incorrect bets:" + str(wrong_bets)
	output_file = csv.writer(open("output_results.csv", "wb"), delimiter=',')
	headers = ["winner", "loser", "tournament", "winner_market_odds", "loser_market_odds", "winnings"]
	output_file.writerow(headers)
	output_file.writerows(output_results)