Escolha envolvendo risco: o caso da Mega-Sena
Introdução
Quando o consumidor faz uma escolha em um ambiente de risco, suas decisões são baseadas em uma utilidade esperada V para uma dada loteria. Supondo, por exemplo, uma loteria com três prêmios X={x1,x2,x3} e seja pi com i=1,2,3 as probabilidades de obtenção destes prêmios, a utilidade esperada desta loteria pode ser medida como:
V=p1u(x1)+p2u(x2)+p3u(x3)
Em que u é uma função que expressa a utilidade do prêmio em valores financeiros. Ao fazer uma escolha sobre loterias, o consumidor conhece o valor esperado de cada loteria (V), o qual expressa a riqueza esperada com a aquisição da loteria e é dado por:
V=p1x1+p2x2+p3x3
O caso da Mega-Sena
No caso da Mega-sena, o valor esperado do prêmio pode ser escrito como a diferença entre os produtos da probabilidade de acerto das seis dezenas com o valor do prêmio e do valor da aposta com a probabilidade complementar do acerto. No caso de uma aposta simples de seis dezenas, que custa R$ 4,50, este valor esperado pode ser escrito como:
V6=pa,6∗x+(1−pa,6)(−P6)
Em que V6 reflete o valor esperado da aposta de seis dezenas, pa,6 é a probabilidade de acerto das seis dezenas com a aposta simples, e P6 é o preço da aposta simples (4,50). Como as apostas podem ter entre 6 e 20 números, a equação do valor esperado pode ser reescrita como:
Vi=pa,i∗x+(1−pa,i)(−Pi) Com i=6,7,...,20
Para mensurar este valor esperado, considere usar a linguagem R e especificar os preços e as probabilidades referentes a cada aposta disponíveis no site da caixa [https://loterias.caixa.gov.br/Paginas/Mega-Sena.aspx]:
# probabilidades de acerto das
p6 = 1/50063860
p7 = 1/7151980
p8 = 1/1787995
p9 = 1/595998
p10 = 1/238399
p11 = 1/108363
p12 = 1/54182
p13 = 1/29175
p14 = 1/16671
p15 = 1/10003
p20 = 1/1292
# Valor das apostas
v6 = 4.5
v7 = 31.5
v8 = 126
v9 = 378
v10 = 945
v11 = 2079
v12 = 4158
v13 = 7722
v14 = 13513.5
v15 = 22522.5
v20 = 174420
Considere instalar e liberar as bibliotecas necessárias para a análise:
lapply(list("dplyr", "tidyr", "ggplot2", "stringr", "rjson"), function(x){
if(x %in% installed.packages() == F){
install.packages(x)
library(x, character.only = TRUE)
}else{
library(x, character.only = TRUE)
}
})
FALSE
FALSE Attaching package: 'dplyr'
FALSE The following objects are masked from 'package:stats':
FALSE
FALSE filter, lag
FALSE The following objects are masked from 'package:base':
FALSE
FALSE intersect, setdiff, setequal, union
FALSE [[1]]
FALSE [1] "dplyr" "stats" "graphics" "grDevices" "utils" "datasets"
FALSE [7] "methods" "base"
FALSE
FALSE [[2]]
FALSE [1] "tidyr" "dplyr" "stats" "graphics" "grDevices" "utils"
FALSE [7] "datasets" "methods" "base"
FALSE
FALSE [[3]]
FALSE [1] "ggplot2" "tidyr" "dplyr" "stats" "graphics" "grDevices"
FALSE [7] "utils" "datasets" "methods" "base"
FALSE
FALSE [[4]]
FALSE [1] "stringr" "ggplot2" "tidyr" "dplyr" "stats" "graphics"
FALSE [7] "grDevices" "utils" "datasets" "methods" "base"
FALSE
FALSE [[5]]
FALSE [1] "rjson" "stringr" "ggplot2" "tidyr" "dplyr" "stats"
FALSE [7] "graphics" "grDevices" "utils" "datasets" "methods" "base"
Agora considere extrair os valores dos prêmios da Mega-Sena a partir de uma api de dados disponibilizada gratuitamente. Para os devidos fins, considere obter os dados disponíveis na api desde o sorteio de número 1500 até o sorteio de número 2500, conforme o código abaixo:
# premios = data.frame()
#
# for(i in 1500:2565){
# link = sprintf("https://loteriascaixa-api.herokuapp.com/api/mega-sena/%i", i)
# df = fromJSON(file = link)
# df1 = as.data.frame(df$premiacoes[[1]])
# while (str_detect(df1$premio, "\\.") == T) {
# df1$premio = str_replace(df1$premio,'\\.', "")
# }
# df1$premio = str_replace(df1$premio,',', ".")
# df2 = data.frame(sorteio = df$concurso, premio = as.numeric(df1$premio))
# premios = rbind(premios, df2)
# rm(link, df, df1, df2)
# }
Agora considere calcular o valor esperado para cada possibilidade de dezenas na aposta conforme o código a seguir:
premios = premios |>
na.omit()|>
mutate(
ve6 = p6*premio + (1-p6)*(-v6),
ve7 = p7*premio + (1-p7)*(-v7),
ve8 = p8*premio + (1-p8)*(-v8),
ve9 = p9*premio + (1-p9)*(-v9),
ve10 = p10*premio + (1-p10)*(-v10),
ve11 = p11*premio + (1-p11)*(-v11),
ve12 = p12*premio + (1-p12)*(-v12),
ve13 = p13*premio + (1-p13)*(-v13),
ve14 = p14*premio + (1-p14)*(-v14),
ve15 = p15*premio + (1-p15)*(-v15),
ve20 = p20*premio + (1-p20)*(-v20))
O próximo passo é plotar os valores esperados e comparar os resultados para cada aposta. Para facilitar a visualização e reduzir os prejuízos visuais da escala, o código abaixo considera os valores esperados das apostas com 6, 7, 8 e 10 dezenas para cada sorteio contido no banco de dados.
Repare que o valor esperado é tão menor quanto maior for o número de dezenas que compõem a aposta. Repare também que na grande maioria das vezes o valor esperado da aposta é negativo, isto é, a expectativa predominante é de perder o valor gasto para realizar a aposta. Isto acontece porque o valor necessário para realizar uma aposta com mais números é grande o suficiente para contrabalancear os ganhos de probabilidade de acertar as dezenas sorteadas.
Note que a aposta mínima de seis dezenas é aquela em que o valor esperado torna-se positivo em uma maior frequência. Estes casos ocorrem quando o valor do prêmio é suficientemente grande para conpensar a elevada probabilidade de não acertar as dezenas sorteadas. Com isso, desconsiderando a utilidade dos prêmios, se você é um consumidor fracamente propenso ao risco, então o ideal seria realizar a aposta simples de seis números.
ggplot(data = premios) +
geom_line(aes(x = sorteio, y = ve6, color = "6 dezenas"), size = 0.8)+
geom_line(aes(x = sorteio, y = ve7, color = "7 dezenas"), size = 0.8)+
geom_line(aes(x = sorteio, y = ve8, color = "8 dezenas"), size = 0.8)+
geom_line(aes(x = sorteio, y = ve10, color = "10 dezenas"), size = 0.8) +
theme_bw() +
theme(legend.position = "bottom", legend.title = element_blank(), legend.text = element_text(size = 17)) +
xlab("Número do sorteio") + ylab("Valor esperado") +
scale_fill_discrete(breaks=c('6 dezenas', '7 dezenas', '8 dezenas', "10 dezenas"))
É importante destacar que do ponto de vista de um consumidor racional, a aposta torna-se atrativa apenas quando o valor esperado é superior ao montante gasto para realizar a aposta. Com isso, a Mega-Sena é racionalmente atrativa caso ocorra:
pa,i∗x+(1−pa,i)(−Pi)>0
Calculando estes valores obtém-se que:
dt = data.frame(
Dezenas = c(6:15, 20),
probabilidade = c(1/5006860, 1/7151980, 1/1787995,
1/595998, 1/238399, 1/108363, 1/54182,
1/29175, 1/16671, 1/10003, 1/1292),
preco = c(
4.5, 31.5, 126, 378, 945, 2079,
4158, 7722, 13513.5, 22522.5, 174420
)
)
dt = dt|>
mutate(premio = preco*((1-probabilidade)/probabilidade))
print(dt[,c(1,4)])
FALSE Dezenas premio
FALSE 1 6 22530866
FALSE 2 7 225287339
FALSE 3 8 225287244
FALSE 4 9 225286866
FALSE 5 10 225286110
FALSE 6 11 225284598
FALSE 7 12 225284598
FALSE 8 13 225281628
FALSE 9 14 225270045
FALSE 10 15 225270045
FALSE 11 20 225176220
Em que a terceira coluna mostra o prêmio mínimo necessário para tornar a aposta racionalmente atrativa. Entretanto, é válido ressaltar que estas análises são baseadas apenas no valor esperado do prêmio, e que uma análise mais confiável deve levar em consideração a utilidade esperada dos jogadores.
A teoria da escolha envolvendo risco postula que um consumidor averso ao risco possui uma função de utilidade convexa para os prêmios, enquanto o consumidor propenso ao risco possui funções de utilidade côncavas. Suponha, portanto, que o apostador mediano da Mega-Sena possui uma função de utilidade equivalente a u(x)=xx/a, em que a é um fator de desconto. Por simplicidade, considere a=200.000.000, o que torna u(x) uma função convexa que representa um consumidor propenso ao risco. Assim, a utilidade esperada da aposta é:
Vi=pa,i∗xx/a+(1−pa,i)∗(−Pi)−Pi/a Com i=6,7,...,20
Calculando a utilidade média esperada para cada prêmio, obtém-se:
a = 200000000
premios |>
group_by()|>
summarise(
ue6dezenas = mean(p6*(premio^(premio/a)) + (1-p6)*(-v6^(-v6/a))),
ue7dezenas = mean(p7*(premio^(premio/a)) + (1-p7)*(-v7^(-v7/a))),
ue8dezenas = mean(p8*(premio^(premio/a)) + (1-p8)*(-v8^(-v8/a))),
ue9dezenas = mean(p9*(premio^(premio/a)) + (1-p9)*(-v9^(-v9/a))),
ue10dezenas = mean(p10*(premio^(premio/a)) + (1-p10)*(-v10^(-v10/a)))
)
FALSE # A tibble: 1 x 5
FALSE ue6dezenas ue7dezenas ue8dezenas ue9dezenas ue10dezenas
FALSE <dbl> <dbl> <dbl> <dbl> <dbl>
FALSE 1 143. 1010. 4043. 12132. 30332.
Note que conforme o número de dezenas na aposta aumenta a utilidade esperada do apostador mediano cresce, o que se verifica para quaisquer funções de utilidade convexas bem comportadas. Este resultado decorre do fato de que embora o valor da aposta aumente, o ganho de utilidade para a expectativa de acertar a aposta supera o ganho de desutilidade de não acertar as dezenas e consequentemente perder o valor gasto na aposta. O contrário é válido para um consumidor averso ao risco com função de utilidade côncava.
Conclusão
Caso o consumidor tome suas decisões com base apenasno valor esperado da Mega-Sena, então o ideal é realizar uma aposta simples de 6 dezenas. Se o consumidor é averso ao risco, mas mesmo assim deseja realizar uma aposta, então é esperado que ele também opte pela aposta simples. No entanto, um consumidor propenso ao risco que toma as suas decisões com base na utilidade esperada do prêmio sempre estará disposto a realizar uma aposta com mais dezenas.