Hello everyone,
Something I was wondering about is when you have a pure value betting strategy, say with 1% - 2% edge over the book/exchange, how do you deal with randomness (apart from the obvious hedging)?
I ran multiple "simulations" of a strategy that has an edge over the price it bets on. I wanted to see what the results would be if such strategy placed, say, 1000 bets.
How many of the simulated runs would result in a positive PL?
Here is a simulation of 1000 bets:
After 1000 bets, ~74% of the simulated runs were in the profit at all. And ~63% achieved at least the expected yield of 1%.
However, let's say with the strategy I have, I'm only able to place 200 - 300 bets per month.
If I change the simulation to 200 bets to simulate a typical "month":
The percentages look even more bleak, only ~64% of such simulated runs were in the profit.
How do you deal with this in your strategies? Is there anything other than just "hedging" your bets? Or do you just buckle in and wait out the randomness, possibly over the span of an entire year?
Wouldn't hedging also significantly bring down your yield? How do you determine when to hedge out a pure value betting strategy?
Any advise/thoughts appreciated!
P.S. Not sure if this has already been discussed before. If it was, I would highly appreciate a link to existing threads.
Thanks!
Dealing with Randomness and Value Betting
- jamesedwards
- Posts: 2495
- Joined: Wed Nov 21, 2018 6:16 pm
Great graphs!
A couple of ideas...
1) Compare achieved price vs Betfair SP. If you're consistently beating SP then you're probably on the right track.
2) Green up to lock in a profit or loss before the off. This will cost you a small amount of expected value but will stabilise your ROI while you establish profitability.
A couple of ideas...
1) Compare achieved price vs Betfair SP. If you're consistently beating SP then you're probably on the right track.
2) Green up to lock in a profit or loss before the off. This will cost you a small amount of expected value but will stabilise your ROI while you establish profitability.
Thanks!jamesedwards wrote: ↑Sat Dec 30, 2023 12:28 pmGreat graphs!
A couple of ideas...
1) Compare achieved price vs Betfair SP. If you're consistently beating SP then you're probably on the right track.
2) Green up to lock in a profit or loss before the off. This will cost you a small amount of expected value but will stabilise your ROI while you establish profitability.
My strategy is consistently beating Betfair's SP on the same line but doesn't clear the market margin, so I can't "arb" it before KO to "guarantee" a profit...
I suppose I could try sacrificing some of the EV for a partial hedge, if I have confidence that my value bet has +EV? So long as the hedge -EV is less than the +EV of the value bet.
- jamesedwards
- Posts: 2495
- Joined: Wed Nov 21, 2018 6:16 pm
When you say "beat SP", do you mean simply that the price that you took is better than SP's price on the same line or that the price you took would "arb" with SP's price on the opposite side of the market? From what you're saying, it seems to be the latter, but just wanted to confirm.jamesedwards wrote: ↑Sat Dec 30, 2023 1:55 pmYes, but if you can beat SP then you can lock in profit by hedging at SP. Therefore it's still a good profitability yardstick?
- jamesedwards
- Posts: 2495
- Joined: Wed Nov 21, 2018 6:16 pm
I mean back at higher than SP or lay at lower than SP for that selection.P1wg wrote: ↑Sat Dec 30, 2023 3:58 pmWhen you say "beat SP", do you mean simply that the price that you took is better than SP's price on the same line or that the price you took would "arb" with SP's price on the opposite side of the market? From what you're saying, it seems to be the latter, but just wanted to confirm.jamesedwards wrote: ↑Sat Dec 30, 2023 1:55 pmYes, but if you can beat SP then you can lock in profit by hedging at SP. Therefore it's still a good profitability yardstick?
Gotcha, thanks for clarifying!jamesedwards wrote: ↑Sat Dec 30, 2023 8:04 pmI mean back at higher than SP or lay at lower than SP for that selection.P1wg wrote: ↑Sat Dec 30, 2023 3:58 pmWhen you say "beat SP", do you mean simply that the price that you took is better than SP's price on the same line or that the price you took would "arb" with SP's price on the opposite side of the market? From what you're saying, it seems to be the latter, but just wanted to confirm.jamesedwards wrote: ↑Sat Dec 30, 2023 1:55 pm
Yes, but if you can beat SP then you can lock in profit by hedging at SP. Therefore it's still a good profitability yardstick?
Are you including commission?P1wg wrote: ↑Sat Dec 30, 2023 9:53 amHello everyone,
Something I was wondering about is when you have a pure value betting strategy, say with 1% - 2% edge over the book/exchange, how do you deal with randomness (apart from the obvious hedging)?
I ran multiple "simulations" of a strategy that has an edge over the price it bets on. I wanted to see what the results would be if such strategy placed, say, 1000 bets.
How many of the simulated runs would result in a positive PL?
Here is a simulation of 1000 bets:
1000_bets.png
After 1000 bets, ~74% of the simulated runs were in the profit at all. And ~63% achieved at least the expected yield of 1%.
However, let's say with the strategy I have, I'm only able to place 200 - 300 bets per month.
If I change the simulation to 200 bets to simulate a typical "month":
200_bets.png
The percentages look even more bleak, only ~64% of such simulated runs were in the profit.
How do you deal with this in your strategies? Is there anything other than just "hedging" your bets? Or do you just buckle in and wait out the randomness, possibly over the span of an entire year?
Wouldn't hedging also significantly bring down your yield? How do you determine when to hedge out a pure value betting strategy?
Any advise/thoughts appreciated!
P.S. Not sure if this has already been discussed before. If it was, I would highly appreciate a link to existing threads.
Thanks!
No, this also assumes 1 bet per match (otherwise, they would not be independent).Anbell wrote: ↑Sun Dec 31, 2023 12:20 amAre you including commission?P1wg wrote: ↑Sat Dec 30, 2023 9:53 amHello everyone,
Something I was wondering about is when you have a pure value betting strategy, say with 1% - 2% edge over the book/exchange, how do you deal with randomness (apart from the obvious hedging)?
I ran multiple "simulations" of a strategy that has an edge over the price it bets on. I wanted to see what the results would be if such strategy placed, say, 1000 bets.
How many of the simulated runs would result in a positive PL?
Here is a simulation of 1000 bets:
1000_bets.png
After 1000 bets, ~74% of the simulated runs were in the profit at all. And ~63% achieved at least the expected yield of 1%.
However, let's say with the strategy I have, I'm only able to place 200 - 300 bets per month.
If I change the simulation to 200 bets to simulate a typical "month":
200_bets.png
The percentages look even more bleak, only ~64% of such simulated runs were in the profit.
How do you deal with this in your strategies? Is there anything other than just "hedging" your bets? Or do you just buckle in and wait out the randomness, possibly over the span of an entire year?
Wouldn't hedging also significantly bring down your yield? How do you determine when to hedge out a pure value betting strategy?
Any advise/thoughts appreciated!
P.S. Not sure if this has already been discussed before. If it was, I would highly appreciate a link to existing threads.
Thanks!
If you're interested, the code is really simple and you can adjust it for your use case:
Code: Select all
import random
import matplotlib.pyplot as plt
strategy_ev = 0.01
stake = 20
price = 2
prob = 1 / price
banks = []
num_runs = 10000
num_bets = 1000
for i in range(num_runs):
random.seed(i * 10)
bank = []
# cumulative PL for this run
pl = 0
for j in range(num_bets):
# Individual run
if random.uniform(0, 1) < (prob + strategy_ev):
pl += stake * (price - 1)
else:
pl -= stake
bank.append(pl)
banks.append(bank)
yield_to_check = 0.01
yield_target = (stake * num_bets) * yield_to_check
pos_banks = len([bank for bank in banks if bank[-1] >= 0])
pos_banks_with_target_yield = len([bank for bank in banks if bank[-1] >= yield_target])
neg_banks = len([bank for bank in banks if bank[-1] < 0])
print(f"{pos_banks} / {len(banks)} positive banks after {num_bets} bets ({round(pos_banks / len(banks) * 100, 2)}%)")
print(f"{neg_banks} / {len(banks)} negative banks after {num_bets} bets ({round(neg_banks / len(banks) * 100, 2)}%)")
print(f"{pos_banks_with_target_yield} / {len(banks)} positive banks with min yield {yield_target} after {num_bets} bets ({round(pos_banks_with_target_yield / len(banks) * 100, 2)}%)")
plt.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
plt.axhline(y=yield_target, xmin=0.0, xmax=1.0, color='b', alpha=0.75)
plt.xlabel("Number of Bets")
plt.ylabel("PL (£)")
print(f"[{num_bets} bets per run; {num_runs} simulations] £{stake} stake per bet @ {price} avg price")
plt.title(f"Strategy simulation with {strategy_ev} edge")
for bank in banks:
plt.plot(range(len(bank)), bank, alpha=0.2)
plt.show()