[{"content":" Calculadora de Conversão de Apostas Bónus Passo 1: Detalhes da Aposta Bónus Valor da Aposta Bónus Valor da sua aposta grátis ou bónus Tipo de Aposta Bónus Aposta Grátis (Aposta Não Devolvida) Aposta Grátis (Aposta Devolvida) Aposta Sem Risco SNR = só o lucro é devolvido, SR = pagamento completo, Sem Risco = reembolso se perder Passo 2: Odds e Exchange Formato de Odds Cotas decimais Fracionário Americano Odds Back Odds para colocar a aposta bónus Odds Lay (Exchange) Odds lay na exchange (deixe vazio para valor teórico) Comissão da Exchange (%) Betfair ~5%, Smarkets ~2% Resultados Valor Real - Taxa de Conversão: - Aposta Lay - Responsabilidade Lay - Lucro se Back Ganhar - Lucro se Lay Ganhar - Odds mais altas = maior taxa de conversão. Para apostas grátis SNR, use odds de 4.00\u0026#43; para conversão de 70%\u0026#43;. Reiniciar ","permalink":"https://calculators-odds.com/pt/bonus-bet-calculator/","summary":"\u003cstyle\u003e\n    .bonusbet {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .bonusbet__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .bonusbet__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .bonusbet__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .bonusbet__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .bonusbet__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .bonusbet__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .bonusbet__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .bonusbet__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .bonusbet__input, .bonusbet__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .bonusbet__input:focus, .bonusbet__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .bonusbet__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .bonusbet__select {\n        cursor: pointer;\n    }\n\n    .bonusbet__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .bonusbet__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .bonusbet__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .bonusbet__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .bonusbet__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .bonusbet__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .bonusbet__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .bonusbet__result-sub {\n        font-size: 14px;\n        color: rgba(232, 232, 232, 0.6);\n        margin-top: 6px;\n    }\n\n    .bonusbet__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .bonusbet__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .bonusbet__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .bonusbet__grid-value {\n        font-size: 20px;\n        font-weight: bold;\n    }\n\n    .bonusbet__grid-value.positive {\n        color: #4CAF50;\n    }\n\n    .bonusbet__grid-value.negative {\n        color: #f44336;\n    }\n\n    .bonusbet__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .bonusbet__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .bonusbet__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .bonusbet__row {\n            flex-direction: column;\n        }\n        .bonusbet__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"bonusbet\"\u003e\n    \u003cdiv class=\"bonusbet__title\"\u003eCalculadora de Conversão de Apostas Bónus\u003c/div\u003e\n\n    \u003cdiv class=\"bonusbet__container\"\u003e\n        \n        \u003cdiv class=\"bonusbet__section\"\u003e\n            \u003cdiv class=\"bonusbet__section-title\"\u003ePasso 1: Detalhes da Aposta Bónus\u003c/div\u003e\n            \u003cdiv class=\"bonusbet__row\"\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003eValor da Aposta Bónus\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"bonusbet__input bonusbet__amount\" placeholder=\"50\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003eValor da sua aposta grátis ou bónus\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003eTipo de Aposta Bónus\u003c/label\u003e\n                    \u003cselect class=\"bonusbet__select bonusbet__type\"\u003e\n                        \u003coption value=\"snr\"\u003eAposta Grátis (Aposta Não Devolvida)\u003c/option\u003e\n                        \u003coption value=\"sr\"\u003eAposta Grátis (Aposta Devolvida)\u003c/option\u003e\n                        \u003coption value=\"riskfree\"\u003eAposta Sem Risco\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003eSNR = só o lucro é devolvido, SR = pagamento completo, Sem Risco = reembolso se perder\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"bonusbet__section\"\u003e\n            \u003cdiv class=\"bonusbet__section-title\"\u003ePasso 2: Odds e Exchange\u003c/div\u003e\n            \u003cdiv class=\"bonusbet__row\"\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003eFormato de Odds\u003c/label\u003e\n                    \u003cselect class=\"bonusbet__select bonusbet__format\"\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003eOdds Back\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"bonusbet__input bonusbet__back-odds\" placeholder=\"4.00\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003eOdds para colocar a aposta bónus\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"bonusbet__row\"\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003eOdds Lay (Exchange)\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"bonusbet__input bonusbet__lay-odds\" placeholder=\"4.10\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003eOdds lay na exchange (deixe vazio para valor teórico)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003eComissão da Exchange (%)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"bonusbet__input bonusbet__commission\" placeholder=\"5\" value=\"5\" min=\"0\" max=\"100\" step=\"0.1\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003eBetfair ~5%, Smarkets ~2%\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"bonusbet__output\"\u003e\n            \u003cdiv class=\"bonusbet__output-title\"\u003eResultados\u003c/div\u003e\n\n            \u003cdiv class=\"bonusbet__result-box\"\u003e\n                \u003cdiv class=\"bonusbet__result-label\"\u003eValor Real\u003c/div\u003e\n                \u003cdiv class=\"bonusbet__result-value bonusbet__real-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"bonusbet__result-sub bonusbet__conversion-rate\"\u003eTaxa de Conversão: -\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"bonusbet__grid\"\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003eAposta Lay\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__lay-stake-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003eResponsabilidade Lay\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__liability-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003eLucro se Back Ganhar\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__profit-back\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003eLucro se Lay Ganhar\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__profit-lay\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"bonusbet__info bonusbet__tip\"\u003e\n                Odds mais altas = maior taxa de conversão. Para apostas grátis SNR, use odds de 4.00\u0026#43; para conversão de 70%\u0026#43;.\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"bonusbet__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const amountInput = container.querySelector('.bonusbet__amount');\n    const typeSelect = container.querySelector('.bonusbet__type');\n    const formatSelect = container.querySelector('.bonusbet__format');\n    const backOddsInput = container.querySelector('.bonusbet__back-odds');\n    const layOddsInput = container.querySelector('.bonusbet__lay-odds');\n    const commissionInput = container.querySelector('.bonusbet__commission');\n\n    const realValueEl = container.querySelector('.bonusbet__real-value');\n    const conversionRateEl = container.querySelector('.bonusbet__conversion-rate');\n    const layStakeEl = container.querySelector('.bonusbet__lay-stake-result');\n    const liabilityEl = container.querySelector('.bonusbet__liability-result');\n    const profitBackEl = container.querySelector('.bonusbet__profit-back');\n    const profitLayEl = container.querySelector('.bonusbet__profit-lay');\n\n    const resetBtn = container.querySelector('.bonusbet__reset');\n\n    function validateFractionalCoefficient(c) { return /^\\d+\\/\\d+$/.test(c); }\n    function validateDecimalCoefficient(c) { return /^\\d+(\\.\\d+)?$/.test(c) \u0026\u0026 parseFloat(c) \u003e 1; }\n    function validateAmericanCoefficient(c) { return /^[-+]?\\d+$/.test(c); }\n\n    function convertFractionToDecimal(f) {\n        var p = f.split('/');\n        if (p.length !== 2) return null;\n        var n = parseFloat(p[0]), d = parseFloat(p[1]);\n        if (isNaN(n) || isNaN(d) || d === 0) return null;\n        return (n / d) + 1;\n    }\n\n    function convertAmericanToDecimal(a) {\n        var v = parseFloat(a);\n        if (isNaN(v)) return null;\n        if (v \u003e 0) return (v / 100) + 1;\n        if (v \u003c 0) return (100 / Math.abs(v)) + 1;\n        return 2;\n    }\n\n    function getDecimal(input) {\n        var fmt = formatSelect.value;\n        var val = input.value.trim();\n        if (fmt === 'Fractional') {\n            if (!validateFractionalCoefficient(val)) return null;\n            return convertFractionToDecimal(val);\n        } else if (fmt === 'Decimal') {\n            if (!validateDecimalCoefficient(val)) return null;\n            return parseFloat(val);\n        } else if (fmt === 'American') {\n            if (!validateAmericanCoefficient(val)) return null;\n            return convertAmericanToDecimal(val);\n        }\n        return null;\n    }\n\n    function calculate() {\n        var bonus = parseFloat(amountInput.value);\n        var betType = typeSelect.value;\n        var backDec = getDecimal(backOddsInput);\n        var commission = parseFloat(commissionInput.value) / 100;\n        if (isNaN(commission)) commission = 0.05;\n\n        \n        if (backDec === null || backDec \u003c= 1) {\n            if (backOddsInput.value.trim()) backOddsInput.classList.add('invalid');\n            resetOutput();\n            return;\n        } else {\n            backOddsInput.classList.remove('invalid');\n        }\n\n        if (isNaN(bonus) || bonus \u003c= 0) { resetOutput(); return; }\n\n        \n        var layVal = layOddsInput.value.trim();\n        var layDec = null;\n        if (layVal) {\n            layDec = getDecimal(layOddsInput);\n            if (layDec === null || layDec \u003c= 1) {\n                layOddsInput.classList.add('invalid');\n                resetOutput();\n                return;\n            } else {\n                layOddsInput.classList.remove('invalid');\n            }\n        } else {\n            layOddsInput.classList.remove('invalid');\n        }\n\n        var layStake, liability, profitBack, profitLay, guaranteedProfit, convRate;\n\n        if (betType === 'snr') {\n            \n            if (layDec) {\n                layStake = (bonus * (backDec - 1)) / (layDec - commission);\n                liability = layStake * (layDec - 1);\n                profitBack = bonus * (backDec - 1) - liability;\n                profitLay = layStake * (1 - commission);\n                guaranteedProfit = Math.min(profitBack, profitLay);\n                convRate = (guaranteedProfit / bonus) * 100;\n            } else {\n                \n                guaranteedProfit = bonus * (backDec - 1) / backDec;\n                convRate = (guaranteedProfit / bonus) * 100;\n                layStake = null;\n            }\n        } else if (betType === 'sr') {\n            \n            if (layDec) {\n                layStake = (bonus * backDec) / (layDec - commission);\n                liability = layStake * (layDec - 1);\n                profitBack = bonus * backDec - liability;\n                profitLay = layStake * (1 - commission);\n                guaranteedProfit = Math.min(profitBack, profitLay);\n                convRate = (guaranteedProfit / bonus) * 100;\n            } else {\n                guaranteedProfit = bonus * (backDec - 1) / backDec + bonus / backDec;\n                convRate = (guaranteedProfit / bonus) * 100;\n                layStake = null;\n            }\n        } else {\n            \n            if (layDec) {\n                layStake = (bonus * backDec) / (layDec - commission);\n                liability = layStake * (layDec - 1);\n                \n                profitBack = bonus * (backDec - 1) - liability;\n                \n                profitLay = layStake * (1 - commission) - bonus + bonus;\n                profitLay = layStake * (1 - commission);\n                guaranteedProfit = Math.min(profitBack, profitLay);\n                convRate = (guaranteedProfit / bonus) * 100;\n            } else {\n                \n                guaranteedProfit = bonus * (1 - 1 / backDec);\n                convRate = (guaranteedProfit / bonus) * 100;\n                layStake = null;\n            }\n        }\n\n        \n        realValueEl.textContent = '$' + guaranteedProfit.toFixed(2);\n        conversionRateEl.textContent = 'Taxa de Conversão: ' + convRate.toFixed(1) + '%';\n\n        if (layStake !== null) {\n            layStakeEl.textContent = '$' + layStake.toFixed(2);\n            liabilityEl.textContent = '$' + liability.toFixed(2);\n\n            profitBackEl.textContent = '$' + profitBack.toFixed(2);\n            profitBackEl.className = 'bonusbet__grid-value ' + (profitBack \u003e= 0 ? 'positive' : 'negative');\n\n            profitLayEl.textContent = '$' + profitLay.toFixed(2);\n            profitLayEl.className = 'bonusbet__grid-value ' + (profitLay \u003e= 0 ? 'positive' : 'negative');\n        } else {\n            layStakeEl.textContent = '-';\n            liabilityEl.textContent = '-';\n            profitBackEl.textContent = '-';\n            profitBackEl.className = 'bonusbet__grid-value';\n            profitLayEl.textContent = '-';\n            profitLayEl.className = 'bonusbet__grid-value';\n        }\n    }\n\n    function resetOutput() {\n        realValueEl.textContent = '-';\n        conversionRateEl.textContent = 'Taxa de Conversão: -';\n        layStakeEl.textContent = '-';\n        liabilityEl.textContent = '-';\n        profitBackEl.textContent = '-';\n        profitBackEl.className = 'bonusbet__grid-value';\n        profitLayEl.textContent = '-';\n        profitLayEl.className = 'bonusbet__grid-value';\n    }\n\n    function resetAll() {\n        amountInput.value = '';\n        backOddsInput.value = '';\n        layOddsInput.value = '';\n        commissionInput.value = '5';\n        typeSelect.selectedIndex = 0;\n        formatSelect.selectedIndex = 0;\n        backOddsInput.classList.remove('invalid');\n        layOddsInput.classList.remove('invalid');\n        updatePlaceholders();\n        resetOutput();\n    }\n\n    function updatePlaceholders() {\n        var fmt = formatSelect.value;\n        if (fmt === 'Fractional') {\n            backOddsInput.placeholder = '3/1';\n            layOddsInput.placeholder = '3/1';\n        } else if (fmt === 'Decimal') {\n            backOddsInput.placeholder = '4.00';\n            layOddsInput.placeholder = '4.10';\n        } else if (fmt === 'American') {\n            backOddsInput.placeholder = '+300';\n            layOddsInput.placeholder = '+310';\n        }\n    }\n\n    formatSelect.addEventListener('change', function() { updatePlaceholders(); calculate(); });\n    amountInput.addEventListener('input', calculate);\n    typeSelect.addEventListener('change', calculate);\n    backOddsInput.addEventListener('input', calculate);\n    layOddsInput.addEventListener('input', calculate);\n    commissionInput.addEventListener('input', calculate);\n    resetBtn.addEventListener('click', resetAll);\n\n    updatePlaceholders();\n})();\n\u003c/script\u003e","title":"Calculadora de Conversão de Apostas Bónus"},{"content":" Calculadora de Margem (Hold) Insira Odds para Ambos os Lados Formato de Odds Cotas decimais Fracionário Americano Odds Lado 1 Odds para o resultado 1 (ex. Time A ou Mais) Odds Lado 2 Odds para o resultado 2 (ex. Time B ou Menos) Resultados Margem (Hold) % - - Prob. Implícita (Lado 1) - Prob. Implícita (Lado 2) - Odds Justas (Lado 1) - Odds Justas (Lado 2) - Prob. Sem Vig (Lado 1) - Prob. Sem Vig (Lado 2) - Hold (vig/juice) é a margem embutida da casa. Menor hold = melhor valor. Típico: 4-5% para lados, 6-8% para totais. Reiniciar ","permalink":"https://calculators-odds.com/pt/hold-calculator/","summary":"\u003cstyle\u003e\n    .hold {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .hold__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .hold__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .hold__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hold__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .hold__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .hold__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .hold__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .hold__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .hold__input, .hold__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .hold__input:focus, .hold__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .hold__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .hold__select {\n        cursor: pointer;\n    }\n\n    .hold__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .hold__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .hold__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hold__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .hold__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .hold__result-box.high-hold {\n        background: rgba(244, 67, 54, 0.15);\n        border-color: #f44336;\n    }\n\n    .hold__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .hold__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .hold__result-box.high-hold .hold__result-value {\n        color: #f44336;\n    }\n\n    .hold__result-hint {\n        font-size: 12px;\n        margin-top: 8px;\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .hold__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .hold__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .hold__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .hold__grid-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .hold__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .hold__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .hold__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .hold__row {\n            flex-direction: column;\n        }\n        .hold__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"hold\"\u003e\n    \u003cdiv class=\"hold__title\"\u003eCalculadora de Margem (Hold)\u003c/div\u003e\n\n    \u003cdiv class=\"hold__container\"\u003e\n        \n        \u003cdiv class=\"hold__section\"\u003e\n            \u003cdiv class=\"hold__section-title\"\u003eInsira Odds para Ambos os Lados\u003c/div\u003e\n            \u003cdiv class=\"hold__row\"\u003e\n                \u003cdiv class=\"hold__input-group\"\u003e\n                    \u003clabel class=\"hold__label\"\u003eFormato de Odds\u003c/label\u003e\n                    \u003cselect class=\"hold__select hold__format\"\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"hold__row\"\u003e\n                \u003cdiv class=\"hold__input-group\"\u003e\n                    \u003clabel class=\"hold__label\"\u003eOdds Lado 1\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hold__input hold__odds1\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"hold__hint\"\u003eOdds para o resultado 1 (ex. Time A ou Mais)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__input-group\"\u003e\n                    \u003clabel class=\"hold__label\"\u003eOdds Lado 2\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hold__input hold__odds2\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"hold__hint\"\u003eOdds para o resultado 2 (ex. Time B ou Menos)\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"hold__output\"\u003e\n            \u003cdiv class=\"hold__output-title\"\u003eResultados\u003c/div\u003e\n\n            \u003cdiv class=\"hold__result-box hold__hold-box\"\u003e\n                \u003cdiv class=\"hold__result-label\"\u003eMargem (Hold) %\u003c/div\u003e\n                \u003cdiv class=\"hold__result-value hold__hold-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"hold__result-hint hold__hold-hint\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hold__grid\"\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003eProb. Implícita (Lado 1)\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__ip1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003eProb. Implícita (Lado 2)\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__ip2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003eOdds Justas (Lado 1)\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fo1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003eOdds Justas (Lado 2)\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fo2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003eProb. Sem Vig (Lado 1)\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fp1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003eProb. Sem Vig (Lado 2)\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fp2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hold__info\"\u003e\n                Hold (vig/juice) é a margem embutida da casa. Menor hold = melhor valor. Típico: 4-5% para lados, 6-8% para totais.\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"hold__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const formatSelect = container.querySelector('.hold__format');\n    const odds1Input = container.querySelector('.hold__odds1');\n    const odds2Input = container.querySelector('.hold__odds2');\n\n    const holdBox = container.querySelector('.hold__hold-box');\n    const holdValue = container.querySelector('.hold__hold-value');\n    const holdHint = container.querySelector('.hold__hold-hint');\n    const ip1 = container.querySelector('.hold__ip1');\n    const ip2 = container.querySelector('.hold__ip2');\n    const fo1 = container.querySelector('.hold__fo1');\n    const fo2 = container.querySelector('.hold__fo2');\n    const fp1 = container.querySelector('.hold__fp1');\n    const fp2 = container.querySelector('.hold__fp2');\n    const resetBtn = container.querySelector('.hold__reset');\n\n    function validateFractionalCoefficient(c) { return /^\\d+\\/\\d+$/.test(c); }\n    function validateDecimalCoefficient(c) { return /^\\d+(\\.\\d+)?$/.test(c) \u0026\u0026 parseFloat(c) \u003e 1; }\n    function validateAmericanCoefficient(c) { return /^[-+]?\\d+$/.test(c); }\n\n    function convertFractionToDecimal(f) {\n        var p = f.split('/');\n        if (p.length !== 2) return null;\n        var n = parseFloat(p[0]), d = parseFloat(p[1]);\n        if (isNaN(n) || isNaN(d) || d === 0) return null;\n        return (n / d) + 1;\n    }\n\n    function convertAmericanToDecimal(a) {\n        var v = parseFloat(a);\n        if (isNaN(v)) return null;\n        if (v \u003e 0) return (v / 100) + 1;\n        if (v \u003c 0) return (100 / Math.abs(v)) + 1;\n        return 2;\n    }\n\n    function getDecimal(input) {\n        var fmt = formatSelect.value;\n        var val = input.value.trim();\n        if (fmt === 'Fractional') {\n            if (!validateFractionalCoefficient(val)) return null;\n            return convertFractionToDecimal(val);\n        } else if (fmt === 'Decimal') {\n            if (!validateDecimalCoefficient(val)) return null;\n            return parseFloat(val);\n        } else if (fmt === 'American') {\n            if (!validateAmericanCoefficient(val)) return null;\n            return convertAmericanToDecimal(val);\n        }\n        return null;\n    }\n\n    function calculate() {\n        var dec1 = getDecimal(odds1Input);\n        var dec2 = getDecimal(odds2Input);\n\n        if (dec1 === null || dec1 \u003c= 1) {\n            if (odds1Input.value.trim()) odds1Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds1Input.classList.remove('invalid'); }\n\n        if (dec2 === null || dec2 \u003c= 1) {\n            if (odds2Input.value.trim()) odds2Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds2Input.classList.remove('invalid'); }\n\n        \n        var prob1 = 1 / dec1;\n        var prob2 = 1 / dec2;\n        var totalProb = prob1 + prob2;\n        var hold = (totalProb - 1) * 100;\n\n        \n        var fairP1 = prob1 / totalProb;\n        var fairP2 = prob2 / totalProb;\n\n        \n        var fairO1 = 1 / fairP1;\n        var fairO2 = 1 / fairP2;\n\n        holdValue.textContent = hold.toFixed(2) + '%';\n        holdBox.classList.toggle('high-hold', hold \u003e 5);\n\n        if (hold \u003c= 3) {\n            holdHint.textContent = 'Hold baixo - bom valor';\n        } else if (hold \u003c= 5) {\n            holdHint.textContent = 'Hold médio';\n        } else if (hold \u003c= 8) {\n            holdHint.textContent = 'Hold alto - valor abaixo da média';\n        } else {\n            holdHint.textContent = 'Hold muito alto - valor ruim';\n        }\n\n        ip1.textContent = (prob1 * 100).toFixed(1) + '%';\n        ip2.textContent = (prob2 * 100).toFixed(1) + '%';\n\n        fp1.textContent = (fairP1 * 100).toFixed(1) + '%';\n        fp2.textContent = (fairP2 * 100).toFixed(1) + '%';\n\n        fo1.textContent = fairO1.toFixed(3);\n        fo2.textContent = fairO2.toFixed(3);\n    }\n\n    function resetOutput() {\n        holdValue.textContent = '-';\n        holdHint.textContent = '-';\n        holdBox.classList.remove('high-hold');\n        ip1.textContent = '-'; ip2.textContent = '-';\n        fo1.textContent = '-'; fo2.textContent = '-';\n        fp1.textContent = '-'; fp2.textContent = '-';\n    }\n\n    function resetAll() {\n        odds1Input.value = ''; odds2Input.value = '';\n        formatSelect.selectedIndex = 0;\n        odds1Input.classList.remove('invalid');\n        odds2Input.classList.remove('invalid');\n        updatePlaceholders();\n        resetOutput();\n    }\n\n    function updatePlaceholders() {\n        var fmt = formatSelect.value;\n        if (fmt === 'Fractional') {\n            odds1Input.placeholder = '10/11';\n            odds2Input.placeholder = '10/11';\n        } else if (fmt === 'Decimal') {\n            odds1Input.placeholder = '1.91';\n            odds2Input.placeholder = '1.91';\n        } else if (fmt === 'American') {\n            odds1Input.placeholder = '-110';\n            odds2Input.placeholder = '-110';\n        }\n    }\n\n    formatSelect.addEventListener('change', function() { updatePlaceholders(); calculate(); });\n    odds1Input.addEventListener('input', calculate);\n    odds2Input.addEventListener('input', calculate);\n    resetBtn.addEventListener('click', resetAll);\n\n    updatePlaceholders();\n})();\n\u003c/script\u003e","title":"Calculadora de Margem (Hold) da Casa"},{"content":" Calculadora de Middle Formato de Odds Cotas decimais Fracionário Americano Aposta 1 Linha/Spread Aposta 1 Spread de pontos ou total (ex. -3.5) Odds Aposta 1 Odds para a aposta 1 (ex. favorito spread) Valor Aposta 1 Valor da aposta Aposta 2 Linha/Spread Aposta 2 Linha oposta (ex. \u0026#43;6.5) Odds Aposta 2 Odds para a aposta 2 (ex. azarão spread) Valor Aposta 2 Valor da aposta Resultados Melhor Caso (Middle Acerta) - Pior Caso (Garantido) - Tamanho do Middle - Prob. Estimada do Middle - Lucro se Só Aposta 1 Ganha - Lucro se Só Aposta 2 Ganha - Um middle é quando você aposta em ambos os lados de um evento com linhas diferentes, criando uma janela onde ambas as apostas podem ganhar. Reiniciar ","permalink":"https://calculators-odds.com/pt/middle-calculator/","summary":"\u003cstyle\u003e\n    .middle {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .middle__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .middle__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .middle__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .middle__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .middle__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .middle__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .middle__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 120px;\n    }\n\n    .middle__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .middle__input, .middle__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .middle__input:focus, .middle__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .middle__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .middle__select {\n        cursor: pointer;\n    }\n\n    .middle__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .middle__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .middle__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .middle__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .middle__result-boxes {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n        margin-bottom: 20px;\n    }\n\n    .middle__result-box {\n        border-radius: 8px;\n        padding: 15px;\n        text-align: center;\n    }\n\n    .middle__result-box--middle {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .middle__result-box--worst {\n        background: rgba(255, 152, 0, 0.15);\n        border: 2px solid #ff9800;\n    }\n\n    .middle__result-box-label {\n        font-size: 12px;\n        margin-bottom: 6px;\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .middle__result-box-value {\n        font-size: 24px;\n        font-weight: bold;\n    }\n\n    .middle__result-box--middle .middle__result-box-value {\n        color: #4CAF50;\n    }\n\n    .middle__result-box--worst .middle__result-box-value {\n        color: #ff9800;\n    }\n\n    .middle__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .middle__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .middle__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .middle__grid-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .middle__grid-value.positive {\n        color: #4CAF50;\n    }\n\n    .middle__grid-value.negative {\n        color: #f44336;\n    }\n\n    .middle__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .middle__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .middle__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .middle__row {\n            flex-direction: column;\n        }\n        .middle__result-boxes {\n            grid-template-columns: 1fr;\n        }\n        .middle__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"middle\"\u003e\n    \u003cdiv class=\"middle__title\"\u003eCalculadora de Middle\u003c/div\u003e\n\n    \u003cdiv class=\"middle__container\"\u003e\n        \n        \u003cdiv class=\"middle__section\"\u003e\n            \u003cdiv class=\"middle__section-title\"\u003eFormato de Odds\u003c/div\u003e\n            \u003cdiv class=\"middle__row\"\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003cselect class=\"middle__select middle__format\"\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"middle__section\"\u003e\n            \u003cdiv class=\"middle__section-title\"\u003eAposta 1\u003c/div\u003e\n            \u003cdiv class=\"middle__row\"\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003eLinha/Spread Aposta 1\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__line1\" placeholder=\"-3.5\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003eSpread de pontos ou total (ex. -3.5)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003eOdds Aposta 1\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__odds1\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003eOdds para a aposta 1 (ex. favorito spread)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003eValor Aposta 1\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"middle__input middle__stake1\" placeholder=\"100\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003eValor da aposta\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"middle__section\"\u003e\n            \u003cdiv class=\"middle__section-title\"\u003eAposta 2\u003c/div\u003e\n            \u003cdiv class=\"middle__row\"\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003eLinha/Spread Aposta 2\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__line2\" placeholder=\"+6.5\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003eLinha oposta (ex. \u0026#43;6.5)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003eOdds Aposta 2\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__odds2\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003eOdds para a aposta 2 (ex. azarão spread)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003eValor Aposta 2\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"middle__input middle__stake2\" placeholder=\"100\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003eValor da aposta\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"middle__output\"\u003e\n            \u003cdiv class=\"middle__output-title\"\u003eResultados\u003c/div\u003e\n\n            \u003cdiv class=\"middle__result-boxes\"\u003e\n                \u003cdiv class=\"middle__result-box middle__result-box--middle\"\u003e\n                    \u003cdiv class=\"middle__result-box-label\"\u003eMelhor Caso (Middle Acerta)\u003c/div\u003e\n                    \u003cdiv class=\"middle__result-box-value middle__best-case\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__result-box middle__result-box--worst\"\u003e\n                    \u003cdiv class=\"middle__result-box-label\"\u003ePior Caso (Garantido)\u003c/div\u003e\n                    \u003cdiv class=\"middle__result-box-value middle__worst-case\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"middle__grid\"\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003eTamanho do Middle\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__middle-size\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003eProb. Estimada do Middle\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__middle-prob\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003eLucro se Só Aposta 1 Ganha\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__profit1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003eLucro se Só Aposta 2 Ganha\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__profit2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"middle__info\"\u003e\n                Um middle é quando você aposta em ambos os lados de um evento com linhas diferentes, criando uma janela onde ambas as apostas podem ganhar.\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"middle__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const formatSelect = container.querySelector('.middle__format');\n    const line1Input = container.querySelector('.middle__line1');\n    const odds1Input = container.querySelector('.middle__odds1');\n    const stake1Input = container.querySelector('.middle__stake1');\n    const line2Input = container.querySelector('.middle__line2');\n    const odds2Input = container.querySelector('.middle__odds2');\n    const stake2Input = container.querySelector('.middle__stake2');\n\n    const bestCaseEl = container.querySelector('.middle__best-case');\n    const worstCaseEl = container.querySelector('.middle__worst-case');\n    const middleSizeEl = container.querySelector('.middle__middle-size');\n    const middleProbEl = container.querySelector('.middle__middle-prob');\n    const profit1El = container.querySelector('.middle__profit1');\n    const profit2El = container.querySelector('.middle__profit2');\n\n    const resetBtn = container.querySelector('.middle__reset');\n\n    function validateFractionalCoefficient(c) { return /^\\d+\\/\\d+$/.test(c); }\n    function validateDecimalCoefficient(c) { return /^\\d+(\\.\\d+)?$/.test(c) \u0026\u0026 parseFloat(c) \u003e 1; }\n    function validateAmericanCoefficient(c) { return /^[-+]?\\d+$/.test(c); }\n\n    function convertFractionToDecimal(f) {\n        var p = f.split('/');\n        if (p.length !== 2) return null;\n        var n = parseFloat(p[0]), d = parseFloat(p[1]);\n        if (isNaN(n) || isNaN(d) || d === 0) return null;\n        return (n / d) + 1;\n    }\n\n    function convertAmericanToDecimal(a) {\n        var v = parseFloat(a);\n        if (isNaN(v)) return null;\n        if (v \u003e 0) return (v / 100) + 1;\n        if (v \u003c 0) return (100 / Math.abs(v)) + 1;\n        return 2;\n    }\n\n    function getDecimal(input) {\n        var fmt = formatSelect.value;\n        var val = input.value.trim();\n        if (fmt === 'Fractional') {\n            if (!validateFractionalCoefficient(val)) return null;\n            return convertFractionToDecimal(val);\n        } else if (fmt === 'Decimal') {\n            if (!validateDecimalCoefficient(val)) return null;\n            return parseFloat(val);\n        } else if (fmt === 'American') {\n            if (!validateAmericanCoefficient(val)) return null;\n            return convertAmericanToDecimal(val);\n        }\n        return null;\n    }\n\n    function calculate() {\n        var dec1 = getDecimal(odds1Input);\n        var dec2 = getDecimal(odds2Input);\n        var stake1 = parseFloat(stake1Input.value);\n        var stake2 = parseFloat(stake2Input.value);\n        var line1 = parseFloat(line1Input.value);\n        var line2 = parseFloat(line2Input.value);\n\n        \n        if (dec1 === null || dec1 \u003c= 1) {\n            if (odds1Input.value.trim()) odds1Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds1Input.classList.remove('invalid'); }\n\n        if (dec2 === null || dec2 \u003c= 1) {\n            if (odds2Input.value.trim()) odds2Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds2Input.classList.remove('invalid'); }\n\n        if (isNaN(stake1) || stake1 \u003c= 0 || isNaN(stake2) || stake2 \u003c= 0) { resetOutput(); return; }\n        if (isNaN(line1) || isNaN(line2)) { resetOutput(); return; }\n\n        var totalStake = stake1 + stake2;\n\n        \n        var payout1 = stake1 * dec1;\n        var payout2 = stake2 * dec2;\n\n        \n        var profitOnlyBet1 = payout1 - totalStake;\n\n        \n        var profitOnlyBet2 = payout2 - totalStake;\n\n        \n        var profitBothWin = payout1 + payout2 - totalStake;\n\n        \n        \n        \n        var absLine1 = Math.abs(line1);\n        var absLine2 = Math.abs(line2);\n\n        \n        var middleSize;\n        if ((line1 \u003c 0 \u0026\u0026 line2 \u003e 0) || (line1 \u003e 0 \u0026\u0026 line2 \u003c 0)) {\n            \n            middleSize = absLine2 - absLine1;\n        } else {\n            \n            middleSize = Math.abs(line2 - line1);\n        }\n\n        \n        var worstCase = Math.min(profitOnlyBet1, profitOnlyBet2);\n\n        \n        var bestCase = profitBothWin;\n\n        \n        \n        var middleProb = 0;\n        if (middleSize \u003e 0) {\n            middleProb = Math.min(middleSize * 2.75, 95);\n        }\n\n        \n        bestCaseEl.textContent = '$' + bestCase.toFixed(2);\n        worstCaseEl.textContent = '$' + worstCase.toFixed(2);\n\n        middleSizeEl.textContent = middleSize \u003e 0 ? middleSize.toFixed(1) + ' pts' : 'Sem middle';\n\n        if (middleSize \u003e 0) {\n            middleProbEl.textContent = '~' + middleProb.toFixed(1) + '%';\n        } else {\n            middleProbEl.textContent = '0%';\n        }\n\n        profit1El.textContent = '$' + profitOnlyBet1.toFixed(2);\n        profit1El.className = 'middle__grid-value ' + (profitOnlyBet1 \u003e= 0 ? 'positive' : 'negative');\n\n        profit2El.textContent = '$' + profitOnlyBet2.toFixed(2);\n        profit2El.className = 'middle__grid-value ' + (profitOnlyBet2 \u003e= 0 ? 'positive' : 'negative');\n    }\n\n    function resetOutput() {\n        bestCaseEl.textContent = '-';\n        worstCaseEl.textContent = '-';\n        middleSizeEl.textContent = '-';\n        middleProbEl.textContent = '-';\n        profit1El.textContent = '-';\n        profit1El.className = 'middle__grid-value';\n        profit2El.textContent = '-';\n        profit2El.className = 'middle__grid-value';\n    }\n\n    function resetAll() {\n        line1Input.value = ''; odds1Input.value = ''; stake1Input.value = '';\n        line2Input.value = ''; odds2Input.value = ''; stake2Input.value = '';\n        formatSelect.selectedIndex = 0;\n        odds1Input.classList.remove('invalid');\n        odds2Input.classList.remove('invalid');\n        updatePlaceholders();\n        resetOutput();\n    }\n\n    function updatePlaceholders() {\n        var fmt = formatSelect.value;\n        if (fmt === 'Fractional') {\n            odds1Input.placeholder = '10/11';\n            odds2Input.placeholder = '10/11';\n        } else if (fmt === 'Decimal') {\n            odds1Input.placeholder = '1.91';\n            odds2Input.placeholder = '1.91';\n        } else if (fmt === 'American') {\n            odds1Input.placeholder = '-110';\n            odds2Input.placeholder = '-110';\n        }\n    }\n\n    formatSelect.addEventListener('change', function() { updatePlaceholders(); calculate(); });\n    [line1Input, odds1Input, stake1Input, line2Input, odds2Input, stake2Input].forEach(function(el) {\n        el.addEventListener('input', calculate);\n    });\n    resetBtn.addEventListener('click', resetAll);\n\n    updatePlaceholders();\n})();\n\u003c/script\u003e","title":"Calculadora de Middle - Apostas no Meio"},{"content":" Calculadora de Taxa de Acerto Insira Seu Histórico de Apostas Total de Apostas Número total de apostas feitas Apostas Ganhas Número de apostas ganhas Odds Médias (Decimal) Odds decimais médias das suas apostas Total Apostado Valor total apostado (opcional) Total Retornado Valor total retornado (opcional) Resultados Taxa de Acerto - - PE Taxa de Equilíbrio - Vantagem - Taxa de Perda - L/P Médio por Aposta - Lucro/Prejuízo Líquido - ROI - A taxa de acerto mostra a porcentagem de apostas ganhas. Compare com o ponto de equilíbrio para ver se você tem vantagem. Reiniciar ","permalink":"https://calculators-odds.com/pt/strike-rate-calculator/","summary":"\u003cstyle\u003e\n    .strikerate {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .strikerate__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .strikerate__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .strikerate__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .strikerate__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .strikerate__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .strikerate__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .strikerate__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .strikerate__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .strikerate__input {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .strikerate__input:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .strikerate__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .strikerate__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .strikerate__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .strikerate__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .strikerate__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .strikerate__result-box.negative {\n        background: rgba(244, 67, 54, 0.15);\n        border-color: #f44336;\n    }\n\n    .strikerate__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .strikerate__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .strikerate__result-box.negative .strikerate__result-value {\n        color: #f44336;\n    }\n\n    .strikerate__result-sub {\n        font-size: 14px;\n        color: rgba(232, 232, 232, 0.6);\n        margin-top: 6px;\n    }\n\n    .strikerate__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .strikerate__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .strikerate__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .strikerate__grid-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .strikerate__grid-value.positive {\n        color: #4CAF50;\n    }\n\n    .strikerate__grid-value.negative {\n        color: #f44336;\n    }\n\n    .strikerate__bar-container {\n        margin-top: 15px;\n        background: rgba(0, 0, 0, 0.3);\n        border-radius: 8px;\n        height: 30px;\n        position: relative;\n        overflow: hidden;\n    }\n\n    .strikerate__bar {\n        height: 100%;\n        border-radius: 8px;\n        transition: width 0.3s ease;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        font-size: 12px;\n        font-weight: bold;\n        color: #fff;\n    }\n\n    .strikerate__bar--win {\n        background: #4CAF50;\n    }\n\n    .strikerate__bar-marker {\n        position: absolute;\n        top: 0;\n        height: 100%;\n        width: 2px;\n        background: #ff9800;\n        z-index: 1;\n    }\n\n    .strikerate__bar-label {\n        position: absolute;\n        top: -18px;\n        font-size: 10px;\n        color: #ff9800;\n        transform: translateX(-50%);\n        white-space: nowrap;\n    }\n\n    .strikerate__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .strikerate__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .strikerate__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .strikerate__row {\n            flex-direction: column;\n        }\n        .strikerate__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"strikerate\"\u003e\n    \u003cdiv class=\"strikerate__title\"\u003eCalculadora de Taxa de Acerto\u003c/div\u003e\n\n    \u003cdiv class=\"strikerate__container\"\u003e\n        \n        \u003cdiv class=\"strikerate__section\"\u003e\n            \u003cdiv class=\"strikerate__section-title\"\u003eInsira Seu Histórico de Apostas\u003c/div\u003e\n            \u003cdiv class=\"strikerate__row\"\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003eTotal de Apostas\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__total\" placeholder=\"100\" min=\"1\" step=\"1\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003eNúmero total de apostas feitas\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003eApostas Ganhas\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__wins\" placeholder=\"55\" min=\"0\" step=\"1\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003eNúmero de apostas ganhas\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"strikerate__row\"\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003eOdds Médias (Decimal)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__avg-odds\" placeholder=\"1.91\" min=\"1.01\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003eOdds decimais médias das suas apostas\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"strikerate__row\"\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003eTotal Apostado\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__staked\" placeholder=\"10000\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003eValor total apostado (opcional)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003eTotal Retornado\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__returned\" placeholder=\"10500\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003eValor total retornado (opcional)\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"strikerate__output\"\u003e\n            \u003cdiv class=\"strikerate__output-title\"\u003eResultados\u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__result-box strikerate__sr-box\"\u003e\n                \u003cdiv class=\"strikerate__result-label\"\u003eTaxa de Acerto\u003c/div\u003e\n                \u003cdiv class=\"strikerate__result-value strikerate__sr-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"strikerate__result-sub strikerate__sr-sub\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__bar-container\"\u003e\n                \u003cdiv class=\"strikerate__bar strikerate__bar--win\" style=\"width: 0%\"\u003e\u003c/div\u003e\n                \u003cdiv class=\"strikerate__bar-marker strikerate__be-marker\" style=\"display: none\"\u003e\n                    \u003cspan class=\"strikerate__bar-label\"\u003ePE\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__grid\" style=\"margin-top: 20px;\"\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003eTaxa de Equilíbrio\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__be-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003eVantagem\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__edge-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003eTaxa de Perda\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__loss-rate\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003eL/P Médio por Aposta\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__avg-pl\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003eLucro/Prejuízo Líquido\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__pl-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003eROI\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__roi-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__info\"\u003e\n                A taxa de acerto mostra a porcentagem de apostas ganhas. Compare com o ponto de equilíbrio para ver se você tem vantagem.\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"strikerate__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const totalInput = container.querySelector('.strikerate__total');\n    const winsInput = container.querySelector('.strikerate__wins');\n    const avgOddsInput = container.querySelector('.strikerate__avg-odds');\n    const stakedInput = container.querySelector('.strikerate__staked');\n    const returnedInput = container.querySelector('.strikerate__returned');\n\n    const srBox = container.querySelector('.strikerate__sr-box');\n    const srValue = container.querySelector('.strikerate__sr-value');\n    const srSub = container.querySelector('.strikerate__sr-sub');\n    const beValue = container.querySelector('.strikerate__be-value');\n    const edgeValue = container.querySelector('.strikerate__edge-value');\n    const lossRate = container.querySelector('.strikerate__loss-rate');\n    const avgPl = container.querySelector('.strikerate__avg-pl');\n    const plValue = container.querySelector('.strikerate__pl-value');\n    const roiValue = container.querySelector('.strikerate__roi-value');\n\n    const winBar = container.querySelector('.strikerate__bar--win');\n    const beMarker = container.querySelector('.strikerate__be-marker');\n\n    const resetBtn = container.querySelector('.strikerate__reset');\n\n    function calculate() {\n        var total = parseInt(totalInput.value);\n        var wins = parseInt(winsInput.value);\n        var avgOdds = parseFloat(avgOddsInput.value);\n        var staked = parseFloat(stakedInput.value);\n        var returned = parseFloat(returnedInput.value);\n\n        if (isNaN(total) || total \u003c= 0) { resetOutput(); return; }\n        if (isNaN(wins) || wins \u003c 0) { resetOutput(); return; }\n\n        if (wins \u003e total) {\n            winsInput.classList.add('invalid');\n            resetOutput(); return;\n        } else {\n            winsInput.classList.remove('invalid');\n        }\n\n        var sr = (wins / total) * 100;\n\n        srValue.textContent = sr.toFixed(1) + '%';\n        srSub.textContent = wins + ' / ' + total;\n\n        lossRate.textContent = (100 - sr).toFixed(1) + '%';\n\n        \n        winBar.style.width = sr + '%';\n        winBar.textContent = sr \u003e= 10 ? sr.toFixed(0) + '%' : '';\n\n        \n        if (!isNaN(avgOdds) \u0026\u0026 avgOdds \u003e 1) {\n            var breakEven = (1 / avgOdds) * 100;\n            beValue.textContent = breakEven.toFixed(1) + '%';\n\n            var edge = sr - breakEven;\n            edgeValue.textContent = (edge \u003e= 0 ? '+' : '') + edge.toFixed(1) + '%';\n            edgeValue.className = 'strikerate__grid-value ' + (edge \u003e= 0 ? 'positive' : 'negative');\n\n            srBox.classList.toggle('negative', edge \u003c 0);\n\n            \n            beMarker.style.display = 'block';\n            beMarker.style.left = Math.min(breakEven, 100) + '%';\n        } else {\n            beValue.textContent = '-';\n            edgeValue.textContent = '-';\n            edgeValue.className = 'strikerate__grid-value';\n            beMarker.style.display = 'none';\n            srBox.classList.remove('negative');\n        }\n\n        \n        if (!isNaN(staked) \u0026\u0026 staked \u003e 0 \u0026\u0026 !isNaN(returned)) {\n            var pl = returned - staked;\n            var roi = (pl / staked) * 100;\n            var avgPlPerBet = pl / total;\n\n            plValue.textContent = (pl \u003e= 0 ? '+$' : '-$') + Math.abs(pl).toFixed(2);\n            plValue.className = 'strikerate__grid-value ' + (pl \u003e= 0 ? 'positive' : 'negative');\n\n            roiValue.textContent = (roi \u003e= 0 ? '+' : '') + roi.toFixed(2) + '%';\n            roiValue.className = 'strikerate__grid-value ' + (roi \u003e= 0 ? 'positive' : 'negative');\n\n            avgPl.textContent = (avgPlPerBet \u003e= 0 ? '+$' : '-$') + Math.abs(avgPlPerBet).toFixed(2);\n            avgPl.className = 'strikerate__grid-value ' + (avgPlPerBet \u003e= 0 ? 'positive' : 'negative');\n        } else {\n            plValue.textContent = '-';\n            plValue.className = 'strikerate__grid-value';\n            roiValue.textContent = '-';\n            roiValue.className = 'strikerate__grid-value';\n            avgPl.textContent = '-';\n            avgPl.className = 'strikerate__grid-value';\n        }\n    }\n\n    function resetOutput() {\n        srValue.textContent = '-'; srSub.textContent = '-';\n        beValue.textContent = '-'; edgeValue.textContent = '-';\n        edgeValue.className = 'strikerate__grid-value';\n        lossRate.textContent = '-'; avgPl.textContent = '-';\n        avgPl.className = 'strikerate__grid-value';\n        plValue.textContent = '-'; plValue.className = 'strikerate__grid-value';\n        roiValue.textContent = '-'; roiValue.className = 'strikerate__grid-value';\n        winBar.style.width = '0%'; winBar.textContent = '';\n        beMarker.style.display = 'none';\n        srBox.classList.remove('negative');\n    }\n\n    function resetAll() {\n        totalInput.value = ''; winsInput.value = '';\n        avgOddsInput.value = ''; stakedInput.value = ''; returnedInput.value = '';\n        winsInput.classList.remove('invalid');\n        resetOutput();\n    }\n\n    [totalInput, winsInput, avgOddsInput, stakedInput, returnedInput].forEach(function(el) {\n        el.addEventListener('input', calculate);\n    });\n    resetBtn.addEventListener('click', resetAll);\n})();\n\u003c/script\u003e","title":"Calculadora de Taxa de Acerto"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Seleção 5 Aposta por linha Número de apostas 26 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/canadian-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"canadian_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e26\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5];\n    var root = document.getElementById('canadian_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Canadense - 26 Apostas de 5 Seleções"},{"content":" Calculadora do Critério Kelly Passo 1: Inserir detalhes da aposta Formato de Odds Cotas decimais Fracionário Americano Probabilidades Decimal: 2.50 | Fracionária: 3/2 | Americana: \u0026#43;150 Probabilidade de Ganhar (%) (%) Sua estimativa de probabilidade de ganhar (1-99%) Banca ($) Valor total disponível para apostas Passo 2: Escolher nível de risco Kelly Completo Meio Kelly Quarto Kelly Meio ou quarto Kelly reduz risco mas também ganhos potenciais Resultados Vantagem — Percentual Kelly — Probabilidade Implícita — Valor Esperado — Aposta Ótima — Reiniciar Fórmula Kelly: f* = (bp - q) / b | b = odd - 1, p = prob. ganhar, q = 1 - p ","permalink":"https://calculators-odds.com/pt/kelly-criterion-calculator/","summary":"\u003cstyle\u003e\n    .kelly {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 12px;\n        padding: 25px;\n        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n    }\n\n    .kelly__title {\n        font-size: 24px;\n        font-weight: bold;\n        text-align: center;\n        margin-bottom: 25px;\n        color: #e8e8e8;\n    }\n\n    .kelly__section {\n        background: #2d333b;\n        border-radius: 8px;\n        padding: 20px;\n        margin-bottom: 20px;\n    }\n\n    .kelly__section-title {\n        font-size: 14px;\n        font-weight: 600;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: #4CAF50;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .kelly__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .kelly__field {\n        display: flex;\n        flex-direction: column;\n    }\n\n    .kelly__field--full {\n        grid-column: 1 / -1;\n    }\n\n    .kelly__label {\n        font-size: 13px;\n        font-weight: 500;\n        margin-bottom: 6px;\n        color: rgba(232, 232, 232, 0.9);\n    }\n\n    .kelly__input, .kelly__select {\n        background: #1e2328;\n        color: #e8e8e8;\n        padding: 12px 14px;\n        border: 2px solid rgba(255,255,255,0.1);\n        border-radius: 6px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s, box-shadow 0.2s;\n    }\n\n    .kelly__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .kelly__input:focus, .kelly__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n        box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.2);\n    }\n\n    .kelly__select {\n        cursor: pointer;\n        appearance: none;\n        background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23e8e8e8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E\");\n        background-repeat: no-repeat;\n        background-position: right 12px center;\n        padding-right: 36px;\n    }\n\n    .kelly__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .kelly__fraction-row {\n        display: flex;\n        gap: 10px;\n    }\n\n    .kelly__fraction-btn {\n        flex: 1;\n        padding: 12px 8px;\n        border: 2px solid rgba(255,255,255,0.2);\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 6px;\n        cursor: pointer;\n        font-size: 13px;\n        font-weight: 500;\n        transition: all 0.2s;\n    }\n\n    .kelly__fraction-btn:hover {\n        border-color: #4CAF50;\n        background: rgba(76, 175, 80, 0.1);\n    }\n\n    .kelly__fraction-btn.active {\n        background: #4CAF50;\n        border-color: #4CAF50;\n        color: #fff;\n    }\n\n    .kelly__results {\n        background: #2d333b;\n        border-radius: 8px;\n        padding: 20px;\n    }\n\n    .kelly__results-title {\n        font-size: 14px;\n        font-weight: 600;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: #4CAF50;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .kelly__metrics {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 12px;\n        margin-bottom: 20px;\n    }\n\n    .kelly__metric {\n        background: #1e2328;\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .kelly__metric-label {\n        font-size: 11px;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: rgba(232, 232, 232, 0.6);\n        margin-bottom: 6px;\n    }\n\n    .kelly__metric-value {\n        font-size: 20px;\n        font-weight: bold;\n        color: #e8e8e8;\n    }\n\n    .kelly__metric-value.positive {\n        color: #4CAF50;\n    }\n\n    .kelly__metric-value.negative {\n        color: #f44336;\n    }\n\n    .kelly__recommendation {\n        background: linear-gradient(135deg, rgba(76, 175, 80, 0.2), rgba(76, 175, 80, 0.1));\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n    }\n\n    .kelly__recommendation.no-bet {\n        background: linear-gradient(135deg, rgba(244, 67, 54, 0.2), rgba(244, 67, 54, 0.1));\n        border-color: #f44336;\n    }\n\n    .kelly__recommendation-label {\n        font-size: 12px;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .kelly__recommendation-value {\n        font-size: 28px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .kelly__recommendation.no-bet .kelly__recommendation-value {\n        color: #f44336;\n        font-size: 18px;\n    }\n\n    .kelly__reset {\n        display: block;\n        width: 100%;\n        margin-top: 15px;\n        padding: 12px;\n        background: rgba(255,255,255,0.1);\n        color: #e8e8e8;\n        border: none;\n        border-radius: 6px;\n        font-size: 14px;\n        font-weight: 500;\n        cursor: pointer;\n        transition: background 0.2s;\n    }\n\n    .kelly__reset:hover {\n        background: rgba(255,255,255,0.15);\n    }\n\n    .kelly__formula {\n        margin-top: 15px;\n        padding: 12px;\n        background: rgba(255,255,255,0.05);\n        border-radius: 6px;\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        text-align: center;\n    }\n\n    .kelly__input.invalid {\n        border-color: #f44336 !important;\n        box-shadow: 0 0 0 3px rgba(244, 67, 54, 0.2);\n    }\n\n    @media (max-width: 500px) {\n        .kelly__grid {\n            grid-template-columns: 1fr;\n        }\n        .kelly__metrics {\n            grid-template-columns: 1fr;\n        }\n        .kelly__fraction-row {\n            flex-direction: column;\n        }\n        .kelly__recommendation-value {\n            font-size: 22px;\n        }\n    }\n\u003c/style\u003e\n\n\u003cdiv class=\"kelly\"\u003e\n    \u003cdiv class=\"kelly__title\"\u003eCalculadora do Critério Kelly\u003c/div\u003e\n\n    \n    \u003cdiv class=\"kelly__section\"\u003e\n        \u003cdiv class=\"kelly__section-title\"\u003ePasso 1: Inserir detalhes da aposta\u003c/div\u003e\n        \u003cdiv class=\"kelly__grid\"\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003eFormato de Odds\u003c/label\u003e\n                \u003cselect class=\"kelly__select kelly__odds-type\"\u003e\n                    \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                    \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                    \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                \u003c/select\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003eProbabilidades\u003c/label\u003e\n                \u003cinput type=\"text\" class=\"kelly__input kelly__odds\" placeholder=\"2.50\"\u003e\n                \u003cspan class=\"kelly__hint\"\u003eDecimal: 2.50 | Fracionária: 3/2 | Americana: \u0026#43;150\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003eProbabilidade de Ganhar (%) (%)\u003c/label\u003e\n                \u003cinput type=\"number\" class=\"kelly__input kelly__probability\" placeholder=\"55\" min=\"1\" max=\"99\" step=\"0.1\"\u003e\n                \u003cspan class=\"kelly__hint\"\u003eSua estimativa de probabilidade de ganhar (1-99%)\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003eBanca ($)\u003c/label\u003e\n                \u003cinput type=\"number\" class=\"kelly__input kelly__bankroll\" placeholder=\"1000\" min=\"0\" step=\"1\"\u003e\n                \u003cspan class=\"kelly__hint\"\u003eValor total disponível para apostas\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \n    \u003cdiv class=\"kelly__section\"\u003e\n        \u003cdiv class=\"kelly__section-title\"\u003ePasso 2: Escolher nível de risco\u003c/div\u003e\n        \u003cdiv class=\"kelly__field kelly__field--full\"\u003e\n            \u003cdiv class=\"kelly__fraction-row\"\u003e\n                \u003cbutton type=\"button\" class=\"kelly__fraction-btn active\" data-fraction=\"1\"\u003eKelly Completo\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"kelly__fraction-btn\" data-fraction=\"0.5\"\u003eMeio Kelly\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"kelly__fraction-btn\" data-fraction=\"0.25\"\u003eQuarto Kelly\u003c/button\u003e\n            \u003c/div\u003e\n            \u003cspan class=\"kelly__hint\" style=\"margin-top: 8px; display: block;\"\u003eMeio ou quarto Kelly reduz risco mas também ganhos potenciais\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \n    \u003cdiv class=\"kelly__results\"\u003e\n        \u003cdiv class=\"kelly__results-title\"\u003eResultados\u003c/div\u003e\n\n        \u003cdiv class=\"kelly__metrics\"\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003eVantagem\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__edge\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003ePercentual Kelly\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__kelly-pct\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003eProbabilidade Implícita\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__implied\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003eValor Esperado\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__ev\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cdiv class=\"kelly__recommendation\"\u003e\n            \u003cdiv class=\"kelly__recommendation-label\"\u003eAposta Ótima\u003c/div\u003e\n            \u003cdiv class=\"kelly__recommendation-value\"\u003e—\u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"kelly__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\n    \u003cdiv class=\"kelly__formula\"\u003e\n        Fórmula Kelly: f* = (bp - q) / b | b = odd - 1, p = prob. ganhar, q = 1 - p\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.kelly__odds-type');\n    const oddsInput = container.querySelector('.kelly__odds');\n    const probabilityInput = container.querySelector('.kelly__probability');\n    const bankrollInput = container.querySelector('.kelly__bankroll');\n    const fractionBtns = container.querySelectorAll('.kelly__fraction-btn');\n    const resetBtn = container.querySelector('.kelly__reset');\n\n    const kellyPctEl = container.querySelector('.kelly__kelly-pct');\n    const edgeEl = container.querySelector('.kelly__edge');\n    const evEl = container.querySelector('.kelly__ev');\n    const impliedEl = container.querySelector('.kelly__implied');\n    const recommendationEl = container.querySelector('.kelly__recommendation');\n    const recommendationValueEl = container.querySelector('.kelly__recommendation-value');\n\n    let selectedFraction = 1;\n\n    const placeholders = {\n        Decimal: '2.50',\n        Fractional: '3/2',\n        American: '+150'\n    };\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateAmerican(value) {\n        return /^[-+]?\\d+$/.test(value);\n    }\n\n    function toDecimal(value, type) {\n        if (type === 'Fractional') {\n            if (!validateFractional(value)) return null;\n            const parts = value.split('/');\n            return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n        } else if (type === 'Decimal') {\n            if (!validateDecimal(value)) return null;\n            return parseFloat(value);\n        } else if (type === 'American') {\n            if (!validateAmerican(value)) return null;\n            const odds = parseFloat(value);\n            return odds \u003e 0 ? (odds / 100) + 1 : (100 / Math.abs(odds)) + 1;\n        }\n        return null;\n    }\n\n    function calculate() {\n        const type = oddsTypeSelect.value;\n        const decimalOdds = toDecimal(oddsInput.value.trim(), type);\n        const winProb = parseFloat(probabilityInput.value) / 100;\n        const bankroll = parseFloat(bankrollInput.value);\n\n        \n        if (!decimalOdds || decimalOdds \u003c= 1) {\n            oddsInput.classList.toggle('invalid', oddsInput.value.trim() !== '');\n            resetOutput();\n            return;\n        }\n        oddsInput.classList.remove('invalid');\n\n        if (isNaN(winProb) || winProb \u003c= 0 || winProb \u003e= 1) {\n            probabilityInput.classList.toggle('invalid', probabilityInput.value.trim() !== '');\n            resetOutput();\n            return;\n        }\n        probabilityInput.classList.remove('invalid');\n\n        \n        const b = decimalOdds - 1;\n        const p = winProb;\n        const q = 1 - p;\n\n        const kellyPct = (b * p - q) / b;\n        const edge = (decimalOdds * p) - 1;\n        const impliedProb = 1 / decimalOdds;\n\n        \n        edgeEl.textContent = (edge * 100).toFixed(2) + '%';\n        edgeEl.className = 'kelly__metric-value ' + (edge \u003e 0 ? 'positive' : 'negative');\n\n        kellyPctEl.textContent = (kellyPct * 100).toFixed(2) + '%';\n        kellyPctEl.className = 'kelly__metric-value ' + (kellyPct \u003e 0 ? 'positive' : 'negative');\n\n        impliedEl.textContent = (impliedProb * 100).toFixed(2) + '%';\n\n        evEl.textContent = (edge \u003e 0 ? '+' : '') + edge.toFixed(4);\n        evEl.className = 'kelly__metric-value ' + (edge \u003e 0 ? 'positive' : 'negative');\n\n        \n        if (kellyPct \u003c= 0) {\n            recommendationEl.classList.add('no-bet');\n            recommendationValueEl.textContent = 'Não Apostar (Vantagem Negativa)';\n        } else {\n            recommendationEl.classList.remove('no-bet');\n            const adjustedKelly = kellyPct * selectedFraction;\n\n            if (!isNaN(bankroll) \u0026\u0026 bankroll \u003e 0) {\n                const stake = bankroll * adjustedKelly;\n                recommendationValueEl.textContent = '$' + stake.toFixed(2) + ' (' + (adjustedKelly * 100).toFixed(1) + '%)';\n            } else {\n                recommendationValueEl.textContent = (adjustedKelly * 100).toFixed(2) + '% of bankroll';\n            }\n        }\n    }\n\n    function resetOutput() {\n        edgeEl.textContent = '—';\n        edgeEl.className = 'kelly__metric-value';\n        kellyPctEl.textContent = '—';\n        kellyPctEl.className = 'kelly__metric-value';\n        impliedEl.textContent = '—';\n        evEl.textContent = '—';\n        evEl.className = 'kelly__metric-value';\n        recommendationEl.classList.remove('no-bet');\n        recommendationValueEl.textContent = '—';\n    }\n\n    function resetAll() {\n        oddsInput.value = '';\n        probabilityInput.value = '';\n        bankrollInput.value = '';\n        oddsInput.classList.remove('invalid');\n        probabilityInput.classList.remove('invalid');\n\n        fractionBtns.forEach(btn =\u003e btn.classList.remove('active'));\n        fractionBtns[0].classList.add('active');\n        selectedFraction = 1;\n\n        resetOutput();\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        oddsInput.placeholder = placeholders[this.value];\n        calculate();\n    });\n\n    oddsInput.addEventListener('input', calculate);\n    probabilityInput.addEventListener('input', calculate);\n    bankrollInput.addEventListener('input', calculate);\n\n    fractionBtns.forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            fractionBtns.forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            selectedFraction = parseFloat(this.dataset.fraction);\n            calculate();\n        });\n    });\n\n    resetBtn.addEventListener('click', resetAll);\n})();\n\u003c/script\u003e","title":"Calculadora Critério Kelly - Tamanho Ótimo de Aposta"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Aposta Odd combinada - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/double-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"double_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections js-selections\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eOdd combinada\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-combined\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('double_0');\n    const formatEl = root.querySelector('.js-format');\n    const oddsInputs = root.querySelectorAll('.js-odds');\n    const stakeEl = root.querySelector('.js-stake');\n    const combinedEl = root.querySelector('.js-combined');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        const format = formatEl.value;\n        let combined = 1;\n        let allValid = true;\n\n        oddsInputs.forEach(function(input) {\n            const d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); }\n            if (d) combined *= d; else allValid = false;\n        });\n\n        const stake = parseFloat(stakeEl.value);\n\n        if (!allValid) {\n            combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n            return;\n        }\n\n        combinedEl.textContent = combined.toFixed(2);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        const payout = combined * stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    formatEl.addEventListener('change', function() {\n        oddsInputs.forEach(i =\u003e i.placeholder = getOddsPlaceholder(formatEl.value));\n        update();\n    });\n    oddsInputs.forEach(el =\u003e el.addEventListener('input', update));\n    stakeEl.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        oddsInputs.forEach(i =\u003e { i.value = ''; i.classList.remove('invalid'); });\n        stakeEl.value = ''; formatEl.selectedIndex = 0;\n        combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Aposta Dupla - Retornos de 2 Seleções"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Aposta Aposta total - Ambos Ganham - Só Sel. 1 Ganha - Só Sel. 2 Ganha - Ambos Perdem - Reiniciar ","permalink":"https://calculators-odds.com/pt/reverse-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"reverse_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"2.50\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"3.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAmbos Ganham\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-bothwin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eSó Sel. 1 Ganha\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-sel1wins\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eSó Sel. 2 Ganha\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-sel2wins\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAmbos Perdem\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-bothlose\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('reverse_0');\n    var formatEl = root.querySelector('.js-format');\n    var odds1El = root.querySelector('.js-odds1');\n    var odds2El = root.querySelector('.js-odds2');\n    var stakeEl = root.querySelector('.js-stake');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var bothWinEl = root.querySelector('.js-bothwin');\n    var sel1WinsEl = root.querySelector('.js-sel1wins');\n    var sel2WinsEl = root.querySelector('.js-sel2wins');\n    var bothLoseEl = root.querySelector('.js-bothlose');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var d1 = convertToDecimal(odds1El.value.trim(), format);\n        var d2 = convertToDecimal(odds2El.value.trim(), format);\n        var stake = parseFloat(stakeEl.value);\n\n        if (!d1) odds1El.classList.toggle('invalid', !!odds1El.value.trim());\n        else odds1El.classList.remove('invalid');\n        if (!d2) odds2El.classList.toggle('invalid', !!odds2El.value.trim());\n        else odds2El.classList.remove('invalid');\n\n        if (!d1 || !d2 || !stake || stake \u003c= 0) {\n            totalStakeEl.textContent='-'; bothWinEl.textContent='-'; sel1WinsEl.textContent='-'; sel2WinsEl.textContent='-'; bothLoseEl.textContent='-'; return;\n        }\n\n        \n        \n        \n        var totalStake = stake * 2;\n        totalStakeEl.textContent = formatNumber(totalStake);\n\n        \n        var payout1 = stake * d1; \n        var ifBet1 = payout1 * d2; \n        var payout2 = stake * d2;\n        var ifBet2 = payout2 * d1;\n        \n        var bothWinProfit = (stake * d1 * d2) + (stake * d2 * d1) - totalStake;\n        \n        \n        var win1Only = (stake * d1 - stake) + (0 - stake); \n        var win2Only = (0 - stake) + (stake * d2 - stake); \n        var bothWin = (stake * d1 - stake) + (stake * d2 - stake); \n        var bothLose = -totalStake;\n\n        bothWinEl.textContent = formatNumber(bothWin);\n        sel1WinsEl.textContent = formatNumber(win1Only);\n        sel2WinsEl.textContent = formatNumber(win2Only);\n        bothLoseEl.textContent = formatNumber(bothLose);\n    }\n\n    formatEl.addEventListener('change', function() {\n        odds1El.placeholder = getOddsPlaceholder(formatEl.value);\n        odds2El.placeholder = getOddsPlaceholder(formatEl.value);\n        update();\n    });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; stakeEl.value='';\n        formatEl.selectedIndex=0; odds1El.classList.remove('invalid'); odds2El.classList.remove('invalid');\n        totalStakeEl.textContent='-'; bothWinEl.textContent='-'; sel1WinsEl.textContent='-'; sel2WinsEl.textContent='-'; bothLoseEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Aposta Reversa - Calcular Retornos Action Reverse"},{"content":" Formato de Odds Decimal Fracionário Americano Odd Aposta Regra 4 Não Sim Dedução 0p5p10p15p20p25p30p35p40p45p50p55p60p65p70p75p80p85p90p Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/single-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"single_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdd\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eRegra 4\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-rule4-toggle\"\u003e\n            \u003coption value=\"no\"\u003eNão\u003c/option\u003e\n            \u003coption value=\"yes\"\u003eSim\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row calc-wrap__row--hidden js-rule4-row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eDedução\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-rule4-value\"\u003e\n            \u003coption value=\"0\"\u003e0p\u003c/option\u003e\u003coption value=\"5\"\u003e5p\u003c/option\u003e\u003coption value=\"10\"\u003e10p\u003c/option\u003e\u003coption value=\"15\"\u003e15p\u003c/option\u003e\u003coption value=\"20\"\u003e20p\u003c/option\u003e\u003coption value=\"25\"\u003e25p\u003c/option\u003e\u003coption value=\"30\"\u003e30p\u003c/option\u003e\u003coption value=\"35\"\u003e35p\u003c/option\u003e\u003coption value=\"40\"\u003e40p\u003c/option\u003e\u003coption value=\"45\"\u003e45p\u003c/option\u003e\u003coption value=\"50\"\u003e50p\u003c/option\u003e\u003coption value=\"55\"\u003e55p\u003c/option\u003e\u003coption value=\"60\"\u003e60p\u003c/option\u003e\u003coption value=\"65\"\u003e65p\u003c/option\u003e\u003coption value=\"70\"\u003e70p\u003c/option\u003e\u003coption value=\"75\"\u003e75p\u003c/option\u003e\u003coption value=\"80\"\u003e80p\u003c/option\u003e\u003coption value=\"85\"\u003e85p\u003c/option\u003e\u003coption value=\"90\"\u003e90p\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('single_0');\n    const formatEl = root.querySelector('.js-format');\n    const oddsEl = root.querySelector('.js-odds');\n    const stakeEl = root.querySelector('.js-stake');\n    const rule4Toggle = root.querySelector('.js-rule4-toggle');\n    const rule4Row = root.querySelector('.js-rule4-row');\n    const rule4Value = root.querySelector('.js-rule4-value');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        const format = formatEl.value;\n        const decimal = convertToDecimal(oddsEl.value.trim(), format);\n        const stake = parseFloat(stakeEl.value);\n\n        if (decimal === null) { oddsEl.classList.add('invalid'); }\n        else { oddsEl.classList.remove('invalid'); }\n\n        rule4Row.classList.toggle('calc-wrap__row--hidden', rule4Toggle.value !== 'yes');\n\n        if (!decimal || !stake || stake \u003c= 0) {\n            payoutEl.textContent = '-';\n            profitEl.textContent = '-';\n            return;\n        }\n\n        let payout = decimal * stake;\n        if (rule4Toggle.value === 'yes') {\n            const r4 = parseFloat(rule4Value.value) || 0;\n            const profit = payout - stake;\n            payout = stake + profit * (1 - r4 / 100);\n        }\n\n        const profit = payout - stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(profit);\n    }\n\n    formatEl.addEventListener('change', function() {\n        oddsEl.placeholder = getOddsPlaceholder(formatEl.value);\n        update();\n    });\n    [oddsEl, stakeEl].forEach(el =\u003e el.addEventListener('input', update));\n    [rule4Toggle, rule4Value].forEach(el =\u003e el.addEventListener('change', update));\n\n    resetBtn.addEventListener('click', function() {\n        oddsEl.value = ''; stakeEl.value = '';\n        formatEl.selectedIndex = 0; rule4Toggle.selectedIndex = 0; rule4Value.selectedIndex = 0;\n        oddsEl.classList.remove('invalid');\n        rule4Row.classList.add('calc-wrap__row--hidden');\n        payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Aposta Simples - Calcular Retornos Instantaneamente"},{"content":" Calculadora de Hedge Passo 1: Sua aposta original Formato de Odds Cotas decimais Fracionário Americano Selecione o formato das suas odds Odds Original Digite odds decimais (ex. 2.50, 1.80, 3.00) Aposta Original Valor apostado na sua aposta original Passo 2: Detalhes da aposta de hedge Formato de Odds Cotas decimais Fracionário Americano Selecione o formato das odds de hedge Odds de Hedge Digite odds decimais (ex. 2.50, 1.80, 3.00) Modo de Hedge Lucro Igual Sem perda (empate) Lucro igual: Mesmo lucro independentemente do resultado Resultados Aposta de Hedge - Valor a apostar no hedge Lucro se Original Ganha - Lucro se Hedge Ganha - Detalhamento Total investido: - Retorno original: - Retorno do hedge: - Lucro Garantido: - Reiniciar ","permalink":"https://calculators-odds.com/pt/hedge-bet-calculator/","summary":"\u003cstyle\u003e\n    .hedge {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .hedge__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .hedge__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .hedge__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hedge__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .hedge__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .hedge__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .hedge__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n    }\n\n    .hedge__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .hedge__input, .hedge__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .hedge__input:focus, .hedge__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .hedge__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .hedge__select {\n        cursor: pointer;\n    }\n\n    .hedge__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .hedge__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .hedge__mode-row {\n        display: flex;\n        gap: 10px;\n    }\n\n    .hedge__mode-btn {\n        flex: 1;\n        padding: 12px;\n        border: 2px solid #2196F3;\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        transition: all 0.2s;\n    }\n\n    .hedge__mode-btn:hover {\n        background: rgba(33, 150, 243, 0.2);\n    }\n\n    .hedge__mode-btn.active {\n        background: #2196F3;\n        color: #fff;\n    }\n\n    .hedge__mode-hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 8px;\n        text-align: center;\n    }\n\n    .hedge__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hedge__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .hedge__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .hedge__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .hedge__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .hedge__result-hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 8px;\n    }\n\n    .hedge__outcomes {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .hedge__outcome {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .hedge__outcome-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .hedge__outcome-value {\n        font-size: 22px;\n        font-weight: bold;\n    }\n\n    .hedge__outcome-value.positive {\n        color: #4CAF50;\n    }\n\n    .hedge__outcome-value.negative {\n        color: #f44336;\n    }\n\n    .hedge__outcome-value.neutral {\n        color: #ff9800;\n    }\n\n    .hedge__summary {\n        margin-top: 20px;\n        padding-top: 15px;\n        border-top: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .hedge__summary-title {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 10px;\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .hedge__summary-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 10px;\n    }\n\n    .hedge__summary-item {\n        display: flex;\n        justify-content: space-between;\n        font-size: 13px;\n        padding: 8px;\n        background: rgba(0, 0, 0, 0.2);\n        border-radius: 4px;\n    }\n\n    .hedge__summary-item span:first-child {\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .hedge__summary-item span:last-child {\n        font-weight: bold;\n    }\n\n    .hedge__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .hedge__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .hedge__row {\n            flex-direction: column;\n        }\n        .hedge__outcomes {\n            grid-template-columns: 1fr;\n        }\n        .hedge__mode-row {\n            flex-direction: column;\n        }\n        .hedge__summary-grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"hedge\"\u003e\n    \u003cdiv class=\"hedge__title\"\u003eCalculadora de Hedge\u003c/div\u003e\n\n    \u003cdiv class=\"hedge__container\"\u003e\n        \n        \u003cdiv class=\"hedge__section\"\u003e\n            \u003cdiv class=\"hedge__section-title\"\u003ePasso 1: Sua aposta original\u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003eFormato de Odds\u003c/label\u003e\n                    \u003cselect class=\"hedge__select hedge__original-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"hedge__hint\"\u003eSelecione o formato das suas odds\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003eOdds Original\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hedge__input hedge__original-odds\" placeholder=\"2.50\" /\u003e\n                    \u003cspan class=\"hedge__hint hedge__original-odds-hint\" data-decimal=\"Digite odds decimais (ex. 2.50, 1.80, 3.00)\" data-fractional=\"Digite odds fracionárias (ex. 3/1, 5/2, 11/4)\" data-american=\"Digite odds americanas (ex. \u0026#43;150, -110, \u0026#43;200)\"\u003eDigite odds decimais (ex. 2.50, 1.80, 3.00)\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003eAposta Original\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"hedge__input hedge__original-stake\" placeholder=\"100\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"hedge__hint\"\u003eValor apostado na sua aposta original\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"hedge__section\"\u003e\n            \u003cdiv class=\"hedge__section-title\"\u003ePasso 2: Detalhes da aposta de hedge\u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003eFormato de Odds\u003c/label\u003e\n                    \u003cselect class=\"hedge__select hedge__hedge-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"hedge__hint\"\u003eSelecione o formato das odds de hedge\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003eOdds de Hedge\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hedge__input hedge__hedge-odds\" placeholder=\"1.80\" /\u003e\n                    \u003cspan class=\"hedge__hint hedge__hedge-odds-hint\" data-decimal=\"Digite odds decimais (ex. 2.50, 1.80, 3.00)\" data-fractional=\"Digite odds fracionárias (ex. 3/1, 5/2, 11/4)\" data-american=\"Digite odds americanas (ex. \u0026#43;150, -110, \u0026#43;200)\"\u003eDigite odds decimais (ex. 2.50, 1.80, 3.00)\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003eModo de Hedge\u003c/label\u003e\n                    \u003cdiv class=\"hedge__mode-row\"\u003e\n                        \u003cbutton type=\"button\" class=\"hedge__mode-btn active\" data-mode=\"equal\"\u003eLucro Igual\u003c/button\u003e\n                        \u003cbutton type=\"button\" class=\"hedge__mode-btn\" data-mode=\"noLoss\"\u003eSem perda (empate)\u003c/button\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__mode-hint hedge__mode-description\" data-equal=\"Lucro igual: Mesmo lucro independentemente do resultado\" data-noloss=\"Sem perda: Empate se hedge ganhar, lucro se original ganhar\"\u003eLucro igual: Mesmo lucro independentemente do resultado\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"hedge__output\"\u003e\n            \u003cdiv class=\"hedge__output-title\"\u003eResultados\u003c/div\u003e\n\n            \u003cdiv class=\"hedge__result-box\"\u003e\n                \u003cdiv class=\"hedge__result-label\"\u003eAposta de Hedge\u003c/div\u003e\n                \u003cdiv class=\"hedge__result-value hedge__hedge-stake-result\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"hedge__result-hint\"\u003eValor a apostar no hedge\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hedge__outcomes\"\u003e\n                \u003cdiv class=\"hedge__outcome\"\u003e\n                    \u003cdiv class=\"hedge__outcome-label\"\u003eLucro se Original Ganha\u003c/div\u003e\n                    \u003cdiv class=\"hedge__outcome-value hedge__profit-original\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hedge__outcome\"\u003e\n                    \u003cdiv class=\"hedge__outcome-label\"\u003eLucro se Hedge Ganha\u003c/div\u003e\n                    \u003cdiv class=\"hedge__outcome-value hedge__profit-hedge\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hedge__summary\"\u003e\n                \u003cdiv class=\"hedge__summary-title\"\u003eDetalhamento\u003c/div\u003e\n                \u003cdiv class=\"hedge__summary-grid\"\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003eTotal investido:\u003c/span\u003e\n                        \u003cspan class=\"hedge__total-invested\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003eRetorno original:\u003c/span\u003e\n                        \u003cspan class=\"hedge__original-return\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003eRetorno do hedge:\u003c/span\u003e\n                        \u003cspan class=\"hedge__hedge-return\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003eLucro Garantido:\u003c/span\u003e\n                        \u003cspan class=\"hedge__guaranteed-profit\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"hedge__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const originalTypeSelect = container.querySelector('.hedge__original-type');\n    const originalOddsInput = container.querySelector('.hedge__original-odds');\n    const originalStakeInput = container.querySelector('.hedge__original-stake');\n    const originalOddsHint = container.querySelector('.hedge__original-odds-hint');\n\n    const hedgeTypeSelect = container.querySelector('.hedge__hedge-type');\n    const hedgeOddsInput = container.querySelector('.hedge__hedge-odds');\n    const hedgeOddsHint = container.querySelector('.hedge__hedge-odds-hint');\n\n    const modeBtns = container.querySelectorAll('.hedge__mode-btn');\n    const modeDescription = container.querySelector('.hedge__mode-description');\n    const resetBtn = container.querySelector('.hedge__reset');\n\n    const hedgeStakeResult = container.querySelector('.hedge__hedge-stake-result');\n    const profitOriginal = container.querySelector('.hedge__profit-original');\n    const profitHedge = container.querySelector('.hedge__profit-hedge');\n    const totalInvested = container.querySelector('.hedge__total-invested');\n    const originalReturn = container.querySelector('.hedge__original-return');\n    const hedgeReturn = container.querySelector('.hedge__hedge-return');\n    const guaranteedProfit = container.querySelector('.hedge__guaranteed-profit');\n\n    let selectedMode = 'equal';\n\n    const modeDescriptions = {\n        'equal': modeDescription.dataset.equal,\n        'noLoss': modeDescription.dataset.noloss\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds(typeSelect, oddsInput) {\n        const type = typeSelect.value;\n        const odds = oddsInput.value.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function calculate() {\n        const origDecimalOdds = getDecimalOdds(originalTypeSelect, originalOddsInput);\n        const hedgeDecimalOdds = getDecimalOdds(hedgeTypeSelect, hedgeOddsInput);\n        const origStake = parseFloat(originalStakeInput.value);\n\n        \n        if (origDecimalOdds === null || origDecimalOdds \u003c= 1) {\n            originalOddsInput.classList.add('invalid');\n            resetOutput();\n            return;\n        } else {\n            originalOddsInput.classList.remove('invalid');\n        }\n\n        \n        if (hedgeDecimalOdds === null || hedgeDecimalOdds \u003c= 1) {\n            hedgeOddsInput.classList.add('invalid');\n            resetOutput();\n            return;\n        } else {\n            hedgeOddsInput.classList.remove('invalid');\n        }\n\n        \n        if (isNaN(origStake) || origStake \u003c= 0) {\n            resetOutput();\n            return;\n        }\n\n        \n        const origPotentialReturn = origStake * origDecimalOdds;\n\n        let hedgeStake;\n\n        if (selectedMode === 'equal') {\n            \n            hedgeStake = origPotentialReturn / hedgeDecimalOdds;\n        } else {\n            \n            hedgeStake = origStake / (hedgeDecimalOdds - 1);\n        }\n\n        const hedgePotentialReturn = hedgeStake * hedgeDecimalOdds;\n        const totalStake = origStake + hedgeStake;\n\n        \n        const profitIfOriginalWins = origPotentialReturn - totalStake;\n        const profitIfHedgeWins = hedgePotentialReturn - totalStake;\n\n        \n        hedgeStakeResult.textContent = '$' + hedgeStake.toFixed(2);\n\n        profitOriginal.textContent = '$' + profitIfOriginalWins.toFixed(2);\n        profitOriginal.className = 'hedge__outcome-value ' + (profitIfOriginalWins \u003e= 0 ? 'positive' : 'negative');\n\n        profitHedge.textContent = '$' + profitIfHedgeWins.toFixed(2);\n        profitHedge.className = 'hedge__outcome-value ' + (profitIfHedgeWins \u003e= 0 ? 'positive' : (profitIfHedgeWins \u003e -0.01 ? 'neutral' : 'negative'));\n\n        totalInvested.textContent = '$' + totalStake.toFixed(2);\n        originalReturn.textContent = '$' + origPotentialReturn.toFixed(2);\n        hedgeReturn.textContent = '$' + hedgePotentialReturn.toFixed(2);\n\n        const minProfit = Math.min(profitIfOriginalWins, profitIfHedgeWins);\n        guaranteedProfit.textContent = '$' + minProfit.toFixed(2);\n    }\n\n    function resetOutput() {\n        hedgeStakeResult.textContent = '-';\n        profitOriginal.textContent = '-';\n        profitOriginal.className = 'hedge__outcome-value';\n        profitHedge.textContent = '-';\n        profitHedge.className = 'hedge__outcome-value';\n        totalInvested.textContent = '-';\n        originalReturn.textContent = '-';\n        hedgeReturn.textContent = '-';\n        guaranteedProfit.textContent = '-';\n    }\n\n    function resetAll() {\n        originalOddsInput.value = '';\n        originalStakeInput.value = '';\n        hedgeOddsInput.value = '';\n        originalOddsInput.classList.remove('invalid');\n        hedgeOddsInput.classList.remove('invalid');\n\n        modeBtns.forEach(btn =\u003e btn.classList.remove('active'));\n        modeBtns[0].classList.add('active');\n        selectedMode = 'equal';\n        modeDescription.textContent = modeDescriptions['equal'];\n\n        updatePlaceholder(originalTypeSelect, originalOddsInput, originalOddsHint);\n        updatePlaceholder(hedgeTypeSelect, hedgeOddsInput, hedgeOddsHint);\n\n        resetOutput();\n    }\n\n    \n    function updatePlaceholder(typeSelect, oddsInput, hintEl) {\n        const type = typeSelect.value;\n        if (type === 'Fractional') {\n            oddsInput.placeholder = '3/1';\n            hintEl.textContent = hintEl.dataset.fractional;\n        } else if (type === 'Decimal') {\n            oddsInput.placeholder = '2.50';\n            hintEl.textContent = hintEl.dataset.decimal;\n        } else if (type === 'American') {\n            oddsInput.placeholder = '+150';\n            hintEl.textContent = hintEl.dataset.american;\n        }\n    }\n\n    \n    originalTypeSelect.addEventListener('change', function() {\n        updatePlaceholder(originalTypeSelect, originalOddsInput, originalOddsHint);\n        calculate();\n    });\n\n    hedgeTypeSelect.addEventListener('change', function() {\n        updatePlaceholder(hedgeTypeSelect, hedgeOddsInput, hedgeOddsHint);\n        calculate();\n    });\n\n    originalOddsInput.addEventListener('input', calculate);\n    originalStakeInput.addEventListener('input', calculate);\n    hedgeOddsInput.addEventListener('input', calculate);\n\n    modeBtns.forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            modeBtns.forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            selectedMode = this.dataset.mode;\n            modeDescription.textContent = modeDescriptions[selectedMode];\n            calculate();\n        });\n    });\n\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    updatePlaceholder(originalTypeSelect, originalOddsInput, originalOddsHint);\n    updatePlaceholder(hedgeTypeSelect, hedgeOddsInput, hedgeOddsHint);\n})();\n\u003c/script\u003e","title":"Calculadora de Hedge - Garantir Lucros"},{"content":" Formato de Odds Decimal Fracionário Americano Odds Equipe A Odds Equipe B Handicap (Margem) Aposta Pagamento (Equipe A) - Pagamento (Equipe B) - Prob. Impl. A - Prob. Impl. B - Margem da Casa - Reiniciar ","permalink":"https://calculators-odds.com/pt/margin-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"margin_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds Equipe A\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-oddsa\" type=\"text\" placeholder=\"1.80\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds Equipe B\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-oddsb\" type=\"text\" placeholder=\"2.10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eHandicap (Margem)\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-handicap\" type=\"text\" placeholder=\"-1.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento (Equipe A)\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payouta\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento (Equipe B)\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payoutb\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Impl. A\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-proba\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Impl. B\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-probb\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMargem da Casa\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-margin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('margin_0');\n    var formatEl = root.querySelector('.js-format');\n    var oddsAEl = root.querySelector('.js-oddsa');\n    var oddsBEl = root.querySelector('.js-oddsb');\n    var handicapEl = root.querySelector('.js-handicap');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutAEl = root.querySelector('.js-payouta');\n    var payoutBEl = root.querySelector('.js-payoutb');\n    var probAEl = root.querySelector('.js-proba');\n    var probBEl = root.querySelector('.js-probb');\n    var marginEl = root.querySelector('.js-margin');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var decA = convertToDecimal(oddsAEl.value.trim(), format);\n        var decB = convertToDecimal(oddsBEl.value.trim(), format);\n        var stake = parseFloat(stakeEl.value);\n\n        if (!decA) oddsAEl.classList.toggle('invalid', !!oddsAEl.value.trim());\n        else oddsAEl.classList.remove('invalid');\n        if (!decB) oddsBEl.classList.toggle('invalid', !!oddsBEl.value.trim());\n        else oddsBEl.classList.remove('invalid');\n\n        if (!decA || !decB) {\n            payoutAEl.textContent='-'; payoutBEl.textContent='-'; probAEl.textContent='-'; probBEl.textContent='-'; marginEl.textContent='-'; return;\n        }\n\n        var probA = (1 / decA) * 100;\n        var probB = (1 / decB) * 100;\n        var margin = (probA + probB) - 100;\n\n        probAEl.textContent = probA.toFixed(1) + '%';\n        probBEl.textContent = probB.toFixed(1) + '%';\n        marginEl.textContent = margin.toFixed(2) + '%';\n\n        if (stake \u0026\u0026 stake \u003e 0) {\n            payoutAEl.textContent = formatNumber(stake * decA);\n            payoutBEl.textContent = formatNumber(stake * decB);\n        } else {\n            payoutAEl.textContent = '-'; payoutBEl.textContent = '-';\n        }\n    }\n\n    formatEl.addEventListener('change', function() {\n        var ph = getOddsPlaceholder(formatEl.value);\n        oddsAEl.placeholder = ph; oddsBEl.placeholder = ph;\n        update();\n    });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        oddsAEl.value=''; oddsBEl.value=''; handicapEl.value=''; stakeEl.value='';\n        formatEl.selectedIndex=0; oddsAEl.classList.remove('invalid'); oddsBEl.classList.remove('invalid');\n        payoutAEl.textContent='-'; payoutBEl.textContent='-'; probAEl.textContent='-'; probBEl.textContent='-'; marginEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Margem - Calcular Pagamentos de Handicap"},{"content":" Linha Original Odds Original (US) Ação Comprar Pontos Vender Pontos Pontos 0.5 1 1.5 2 Aposta Nova Linha - Novas Odds - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/half-point-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"halfpoint_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eLinha Original\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-line\" type=\"text\" placeholder=\"-3\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds Original (US)\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"-110\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAção\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-action\"\u003e\n            \u003coption value=\"buy\"\u003eComprar Pontos\u003c/option\u003e\n            \u003coption value=\"sell\"\u003eVender Pontos\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003ePontos\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-points\"\u003e\n            \u003coption value=\"0.5\"\u003e0.5\u003c/option\u003e\n            \u003coption value=\"1\"\u003e1\u003c/option\u003e\n            \u003coption value=\"1.5\"\u003e1.5\u003c/option\u003e\n            \u003coption value=\"2\"\u003e2\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNova Linha\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-newline\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNovas Odds\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-newodds\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('halfpoint_0');\n    var lineEl = root.querySelector('.js-line');\n    var oddsEl = root.querySelector('.js-odds');\n    var actionEl = root.querySelector('.js-action');\n    var pointsEl = root.querySelector('.js-points');\n    var stakeEl = root.querySelector('.js-stake');\n    var newLineEl = root.querySelector('.js-newline');\n    var newOddsEl = root.querySelector('.js-newodds');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    \n    var COST_PER_HALF = 10; \n\n    function update() {\n        var line = parseFloat(lineEl.value);\n        var oddsVal = parseInt(oddsEl.value);\n        var action = actionEl.value;\n        var points = parseFloat(pointsEl.value);\n        var stake = parseFloat(stakeEl.value);\n\n        if (isNaN(line) || isNaN(oddsVal) || oddsVal === 0) {\n            newLineEl.textContent='-'; newOddsEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-'; return;\n        }\n\n        var halfPoints = points / 0.5;\n        var newLine, adjustedOdds;\n\n        if (action === 'buy') {\n            \n            newLine = line + points;\n            adjustedOdds = oddsVal - (halfPoints * COST_PER_HALF);\n        } else {\n            \n            newLine = line - points;\n            adjustedOdds = oddsVal + (halfPoints * COST_PER_HALF);\n        }\n\n        var newLineStr = newLine \u003e= 0 ? '+' + newLine : '' + newLine;\n        var newOddsStr = adjustedOdds \u003e= 0 ? '+' + adjustedOdds : '' + adjustedOdds;\n        newLineEl.textContent = newLineStr;\n        newOddsEl.textContent = newOddsStr;\n\n        if (!stake || stake \u003c= 0) { payoutEl.textContent='-'; profitEl.textContent='-'; return; }\n\n        \n        var dec;\n        if (adjustedOdds \u003e 0) dec = (adjustedOdds / 100) + 1;\n        else dec = (100 / Math.abs(adjustedOdds)) + 1;\n\n        var payout = stake * dec;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    root.addEventListener('input', update);\n    actionEl.addEventListener('change', update);\n    pointsEl.addEventListener('change', update);\n    resetBtn.addEventListener('click', function() {\n        lineEl.value=''; oddsEl.value=''; stakeEl.value='';\n        actionEl.selectedIndex=0; pointsEl.selectedIndex=0;\n        newLineEl.textContent='-'; newOddsEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Meio Ponto - Comprar e Vender Pontos"},{"content":" Formato de Odds Decimal Fracionário Americano Odd Aposta Pagamento - Lucro - Probabilidade Implícita - Reiniciar ","permalink":"https://calculators-odds.com/pt/betting-odds-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"bkcoeff_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__grid\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eOdd\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProbabilidade Implícita\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-probability\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('bkcoeff_0');\n    const formatEl = root.querySelector('.js-format');\n    const oddsEl = root.querySelector('.js-odds');\n    const stakeEl = root.querySelector('.js-stake');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const probEl = root.querySelector('.js-probability');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        const format = formatEl.value;\n        const decimal = convertToDecimal(oddsEl.value.trim(), format);\n        const stake = parseFloat(stakeEl.value);\n\n        if (oddsEl.value.trim() \u0026\u0026 decimal === null) { oddsEl.classList.add('invalid'); }\n        else { oddsEl.classList.remove('invalid'); }\n\n        if (!decimal || !stake || stake \u003c= 0) {\n            payoutEl.textContent = '-';\n            profitEl.textContent = '-';\n            probEl.textContent = decimal ? (100 / decimal).toFixed(2) + '%' : '-';\n            return;\n        }\n\n        const payout = decimal * stake;\n        const profit = payout - stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(profit);\n        probEl.textContent = (100 / decimal).toFixed(2) + '%';\n    }\n\n    formatEl.addEventListener('change', function() {\n        oddsEl.placeholder = getOddsPlaceholder(formatEl.value);\n        update();\n    });\n    [oddsEl, stakeEl].forEach(el =\u003e el.addEventListener('input', update));\n\n    resetBtn.addEventListener('click', function() {\n        oddsEl.value = ''; stakeEl.value = '';\n        formatEl.selectedIndex = 0;\n        oddsEl.classList.remove('invalid');\n        payoutEl.textContent = '-'; profitEl.textContent = '-'; probEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Odds - Calcular Pagamentos e Probabilidade"},{"content":" Calculadora de Parlay Passo 1: Selecionar formato de odds Cotas decimais Fracionário Americano Passo 2: Inserir sua aposta Aposta Valor que você deseja apostar Passo 3: Adicionar seleções do parlay Seleção 1 Ganho Perda Anulada Seleção 2 Ganho Perda Anulada + Adicionar Seleção Digite odds decimais (ex. 2.50) Resultados Número de Seleções 2 Odds Combinadas — Probabilidade Implícita — Pagamento Potencial — Lucro — Todas as seleções devem ganhar Reiniciar ","permalink":"https://calculators-odds.com/pt/parlay-calculator/","summary":"\u003cstyle\u003e\n.parlay {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.parlay__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.parlay__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.parlay__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.parlay__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.parlay__format-btn {\n    flex: 1;\n    min-width: 100px;\n    padding: 10px 15px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.parlay__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.parlay__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.parlay__input-group {\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n}\n\n.parlay__label {\n    font-size: 13px;\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.parlay__input {\n    width: 100%;\n    padding: 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 16px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n}\n\n.parlay__input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.parlay__input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.parlay__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.parlay__legs-list {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.parlay__leg {\n    display: grid;\n    grid-template-columns: 60px 1fr 100px 60px auto;\n    gap: 10px;\n    align-items: center;\n    padding: 12px;\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n}\n\n.parlay__leg-number {\n    font-weight: 600;\n    font-size: 13px;\n    color: #4CAF50;\n}\n\n.parlay__leg-input {\n    width: 100%;\n    padding: 10px 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 15px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n}\n\n.parlay__leg-input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.parlay__leg-input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.parlay__leg-input.invalid {\n    border-color: #f44336;\n}\n\n.parlay__leg-outcome {\n    padding: 10px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 14px;\n    background: #2d333b;\n    color: #e8e8e8;\n    cursor: pointer;\n}\n\n.parlay__leg-decimal {\n    font-size: 12px;\n    color: rgba(232, 232, 232, 0.6);\n    text-align: center;\n}\n\n.parlay__leg-remove {\n    padding: 6px 10px;\n    background: #f44336;\n    color: #fff;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 12px;\n    transition: background 0.2s;\n}\n\n.parlay__leg-remove:hover {\n    background: #d32f2f;\n}\n\n.parlay__add-btn {\n    width: 100%;\n    padding: 10px;\n    margin-top: 10px;\n    background: transparent;\n    border: 2px dashed rgba(255, 255, 255, 0.3);\n    color: #e8e8e8;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 14px;\n    transition: all 0.2s;\n}\n\n.parlay__add-btn:hover {\n    border-color: #4CAF50;\n    color: #4CAF50;\n}\n\n.parlay__results-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 10px;\n    margin-bottom: 15px;\n}\n\n.parlay__result-box {\n    background: rgba(0, 0, 0, 0.2);\n    padding: 12px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.parlay__result-label {\n    font-size: 10px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 4px;\n}\n\n.parlay__result-value {\n    font-size: 18px;\n    font-weight: 700;\n    color: #e8e8e8;\n}\n\n.parlay__result-value.highlight {\n    color: #4CAF50;\n}\n\n.parlay__result-value.warning {\n    color: #ff9800;\n}\n\n.parlay__result-value.lose {\n    color: #f44336;\n}\n\n.parlay__payout-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 10px;\n}\n\n.parlay__payout-box {\n    background: rgba(76, 175, 80, 0.1);\n    border: 1px solid rgba(76, 175, 80, 0.3);\n    padding: 15px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.parlay__payout-label {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 5px;\n}\n\n.parlay__payout-value {\n    font-size: 24px;\n    font-weight: 700;\n    color: #4CAF50;\n}\n\n.parlay__payout-value.lose {\n    color: #f44336;\n}\n\n.parlay__status {\n    text-align: center;\n    padding: 12px;\n    border-radius: 4px;\n    margin-top: 15px;\n    font-weight: 600;\n    font-size: 14px;\n}\n\n.parlay__status.wins {\n    background: rgba(76, 175, 80, 0.2);\n    color: #4CAF50;\n}\n\n.parlay__status.loses {\n    background: rgba(244, 67, 54, 0.2);\n    color: #f44336;\n}\n\n.parlay__status.push {\n    background: rgba(255, 152, 0, 0.2);\n    color: #ff9800;\n}\n\n.parlay__status.pending {\n    background: rgba(255, 255, 255, 0.05);\n    color: rgba(232, 232, 232, 0.6);\n}\n\n.parlay__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.parlay__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.parlay__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.parlay__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 700px) {\n    .parlay__leg {\n        grid-template-columns: 1fr;\n        gap: 8px;\n    }\n\n    .parlay__leg-decimal {\n        text-align: left;\n    }\n\n    .parlay__results-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .parlay__payout-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .parlay__format-btn {\n        min-width: 80px;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"parlay\"\u003e\n    \u003cdiv class=\"parlay__title\"\u003eCalculadora de Parlay\u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003ePasso 1: Selecionar formato de odds\u003c/div\u003e\n        \u003cdiv class=\"parlay__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"parlay__format-btn active\" data-type=\"decimal\"\u003eCotas decimais\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"parlay__format-btn\" data-type=\"fractional\"\u003eFracionário\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"parlay__format-btn\" data-type=\"american\"\u003eAmericano\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003ePasso 2: Inserir sua aposta\u003c/div\u003e\n        \u003cdiv class=\"parlay__input-group\"\u003e\n            \u003clabel class=\"parlay__label\"\u003eAposta\u003c/label\u003e\n            \u003cinput type=\"text\" class=\"parlay__input parlay__stake\" placeholder=\"100\"\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"parlay__hint\"\u003eValor que você deseja apostar\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003ePasso 3: Adicionar seleções do parlay\u003c/div\u003e\n        \u003cdiv class=\"parlay__legs-list\"\u003e\n            \u003cdiv class=\"parlay__leg\" data-index=\"0\"\u003e\n                \u003cspan class=\"parlay__leg-number\"\u003eSeleção 1\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"parlay__leg-input\" placeholder=\"2.50\" data-index=\"0\"\u003e\n                \u003cselect class=\"parlay__leg-outcome\" data-index=\"0\"\u003e\n                    \u003coption value=\"win\"\u003eGanho\u003c/option\u003e\n                    \u003coption value=\"lose\"\u003ePerda\u003c/option\u003e\n                    \u003coption value=\"push\"\u003eAnulada\u003c/option\u003e\n                \u003c/select\u003e\n                \u003cspan class=\"parlay__leg-decimal\" data-index=\"0\"\u003e\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__leg\" data-index=\"1\"\u003e\n                \u003cspan class=\"parlay__leg-number\"\u003eSeleção 2\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"parlay__leg-input\" placeholder=\"2.50\" data-index=\"1\"\u003e\n                \u003cselect class=\"parlay__leg-outcome\" data-index=\"1\"\u003e\n                    \u003coption value=\"win\"\u003eGanho\u003c/option\u003e\n                    \u003coption value=\"lose\"\u003ePerda\u003c/option\u003e\n                    \u003coption value=\"push\"\u003eAnulada\u003c/option\u003e\n                \u003c/select\u003e\n                \u003cspan class=\"parlay__leg-decimal\" data-index=\"1\"\u003e\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cbutton type=\"button\" class=\"parlay__add-btn\"\u003e+ Adicionar Seleção\u003c/button\u003e\n        \u003cdiv class=\"parlay__hint parlay__hint-format\"\u003eDigite odds decimais (ex. 2.50)\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003eResultados\u003c/div\u003e\n        \u003cdiv class=\"parlay__results-grid\"\u003e\n            \u003cdiv class=\"parlay__result-box\"\u003e\n                \u003cdiv class=\"parlay__result-label\"\u003eNúmero de Seleções\u003c/div\u003e\n                \u003cdiv class=\"parlay__result-value\" id=\"parlayLegs\"\u003e2\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__result-box\"\u003e\n                \u003cdiv class=\"parlay__result-label\"\u003eOdds Combinadas\u003c/div\u003e\n                \u003cdiv class=\"parlay__result-value\" id=\"parlayCombinedOdds\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__result-box\"\u003e\n                \u003cdiv class=\"parlay__result-label\"\u003eProbabilidade Implícita\u003c/div\u003e\n                \u003cdiv class=\"parlay__result-value\" id=\"parlayImpliedProb\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cdiv class=\"parlay__payout-grid\"\u003e\n            \u003cdiv class=\"parlay__payout-box\"\u003e\n                \u003cdiv class=\"parlay__payout-label\"\u003ePagamento Potencial\u003c/div\u003e\n                \u003cdiv class=\"parlay__payout-value\" id=\"parlayPayout\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__payout-box\"\u003e\n                \u003cdiv class=\"parlay__payout-label\"\u003eLucro\u003c/div\u003e\n                \u003cdiv class=\"parlay__payout-value\" id=\"parlayProfit\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cdiv class=\"parlay__status pending\" id=\"parlayStatus\"\u003eTodas as seleções devem ganhar\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"parlay__btn parlay__btn--secondary\" id=\"parlayReset\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let legCount = 2;\n    const maxLegs = 15;\n\n    const placeholders = {\n        decimal: '2.50',\n        fractional: '3\\/2',\n        american: '\\u002b150'\n    };\n\n    const hints = {\n        decimal: 'Digite odds decimais (ex. 2.50)',\n        fractional: 'Digite odds fracionárias (ex. 3\\/2)',\n        american: 'Digite odds americanas (ex. \\u002b150 ou -200)'\n    };\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateAmerican(value) {\n        const cleaned = value.replace(/^\\+/, '');\n        return /^-?\\d+$/.test(cleaned) \u0026\u0026 (Math.abs(parseInt(cleaned)) \u003e= 100);\n    }\n\n    function fractionalToDecimal(fraction) {\n        const parts = fraction.split('/');\n        return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n    }\n\n    function americanToDecimal(american) {\n        const value = parseInt(american.replace(/^\\+/, ''));\n        return value \u003e 0 ? (value / 100) + 1 : (100 / Math.abs(value)) + 1;\n    }\n\n    function decimalToAmerican(decimal) {\n        if (decimal \u003e= 2) {\n            return '+' + Math.round((decimal - 1) * 100);\n        }\n        return Math.round(-100 / (decimal - 1)).toString();\n    }\n\n    function getDecimalOdds(value) {\n        if (!value) return null;\n\n        if (currentOddsType === 'decimal') {\n            return validateDecimal(value) ? parseFloat(value) : null;\n        } else if (currentOddsType === 'fractional') {\n            return validateFractional(value) ? fractionalToDecimal(value) : null;\n        } else if (currentOddsType === 'american') {\n            return validateAmerican(value) ? americanToDecimal(value) : null;\n        }\n        return null;\n    }\n\n    function updatePlaceholders() {\n        container.querySelectorAll('.parlay__leg-input').forEach(input =\u003e {\n            input.placeholder = placeholders[currentOddsType];\n        });\n\n        const hintEl = container.querySelector('.parlay__hint-format');\n        if (hintEl) {\n            hintEl.textContent = hints[currentOddsType];\n        }\n    }\n\n    function addLeg() {\n        if (legCount \u003e= maxLegs) return;\n\n        const legsList = container.querySelector('.parlay__legs-list');\n\n        const newLeg = document.createElement('div');\n        newLeg.className = 'parlay__leg';\n        newLeg.dataset.index = legCount;\n        newLeg.innerHTML = `\n            \u003cspan class=\"parlay__leg-number\"\u003eSeleção ${legCount + 1}\u003c/span\u003e\n            \u003cinput type=\"text\" class=\"parlay__leg-input\" placeholder=\"${placeholders[currentOddsType]}\" data-index=\"${legCount}\"\u003e\n            \u003cselect class=\"parlay__leg-outcome\" data-index=\"${legCount}\"\u003e\n                \u003coption value=\"win\"\u003eGanho\u003c/option\u003e\n                \u003coption value=\"lose\"\u003ePerda\u003c/option\u003e\n                \u003coption value=\"push\"\u003eAnulada\u003c/option\u003e\n            \u003c/select\u003e\n            \u003cspan class=\"parlay__leg-decimal\" data-index=\"${legCount}\"\u003e\u003c/span\u003e\n            \u003cbutton type=\"button\" class=\"parlay__leg-remove\"\u003e✕\u003c/button\u003e\n        `;\n\n        legsList.appendChild(newLeg);\n        legCount++;\n\n        newLeg.querySelector('.parlay__leg-input').addEventListener('input', calculate);\n        newLeg.querySelector('.parlay__leg-outcome').addEventListener('change', calculate);\n        newLeg.querySelector('.parlay__leg-remove').addEventListener('click', function() {\n            removeLeg(newLeg);\n        });\n\n        if (legCount \u003e= maxLegs) {\n            container.querySelector('.parlay__add-btn').style.display = 'none';\n        }\n\n        calculate();\n    }\n\n    function removeLeg(legEl) {\n        if (legCount \u003c= 2) return;\n\n        legEl.remove();\n        legCount--;\n\n        const legs = container.querySelectorAll('.parlay__leg');\n        legs.forEach((leg, index) =\u003e {\n            leg.dataset.index = index;\n            leg.querySelector('.parlay__leg-number').textContent = 'Seleção ' + (index + 1);\n            leg.querySelector('.parlay__leg-input').dataset.index = index;\n            leg.querySelector('.parlay__leg-outcome').dataset.index = index;\n            leg.querySelector('.parlay__leg-decimal').dataset.index = index;\n        });\n\n        if (legCount \u003c maxLegs) {\n            container.querySelector('.parlay__add-btn').style.display = 'block';\n        }\n\n        calculate();\n    }\n\n    function calculate() {\n        const inputs = container.querySelectorAll('.parlay__leg-input');\n        const outcomes = container.querySelectorAll('.parlay__leg-outcome');\n        const decimalDisplays = container.querySelectorAll('.parlay__leg-decimal');\n        const stake = parseFloat(container.querySelector('.parlay__stake').value) || 0;\n\n        let combinedOdds = 1;\n        let validLegs = 0;\n        let hasLoss = false;\n        let hasPush = false;\n        let pushCount = 0;\n\n        inputs.forEach((input, index) =\u003e {\n            const value = input.value.trim();\n            const decOdds = getDecimalOdds(value);\n            const outcome = outcomes[index].value;\n\n            if (value \u0026\u0026 !decOdds) {\n                input.classList.add('invalid');\n                decimalDisplays[index].textContent = '';\n            } else if (decOdds) {\n                input.classList.remove('invalid');\n\n                if (currentOddsType !== 'decimal') {\n                    decimalDisplays[index].textContent = `(${decOdds.toFixed(2)})`;\n                } else {\n                    decimalDisplays[index].textContent = '';\n                }\n\n                if (outcome === 'win') {\n                    combinedOdds *= decOdds;\n                    validLegs++;\n                } else if (outcome === 'push') {\n                    hasPush = true;\n                    pushCount++;\n                    validLegs++;\n                } else if (outcome === 'lose') {\n                    hasLoss = true;\n                    validLegs++;\n                }\n            } else {\n                input.classList.remove('invalid');\n                decimalDisplays[index].textContent = '';\n            }\n        });\n\n        container.querySelector('#parlayLegs').textContent = legCount;\n\n        const combinedOddsEl = container.querySelector('#parlayCombinedOdds');\n        const impliedProbEl = container.querySelector('#parlayImpliedProb');\n        const payoutEl = container.querySelector('#parlayPayout');\n        const profitEl = container.querySelector('#parlayProfit');\n        const statusEl = container.querySelector('#parlayStatus');\n\n        if (validLegs \u003e= 2 \u0026\u0026 !hasLoss) {\n            let displayOdds;\n            if (currentOddsType === 'american') {\n                displayOdds = decimalToAmerican(combinedOdds);\n            } else if (currentOddsType === 'fractional') {\n                const profit = combinedOdds - 1;\n                displayOdds = `${Math.round(profit * 100)}/100`;\n            } else {\n                displayOdds = combinedOdds.toFixed(2);\n            }\n\n            combinedOddsEl.textContent = displayOdds;\n\n            const impliedProb = (1 / combinedOdds) * 100;\n            impliedProbEl.textContent = impliedProb.toFixed(1) + '%';\n\n            if (stake \u003e 0) {\n                const payout = stake * combinedOdds;\n                const profit = payout - stake;\n\n                payoutEl.textContent = '$' + payout.toFixed(2);\n                payoutEl.className = 'parlay__payout-value';\n                profitEl.textContent = '+$' + profit.toFixed(2);\n                profitEl.className = 'parlay__payout-value';\n            } else {\n                payoutEl.textContent = '—';\n                profitEl.textContent = '—';\n            }\n\n            if (hasPush \u0026\u0026 pushCount === validLegs - 1) {\n                statusEl.textContent = 'Reduzido a aposta simples (empates)';\n                statusEl.className = 'parlay__status push';\n            } else if (hasPush) {\n                statusEl.textContent = 'Parlay ganhou (com empates)';\n                statusEl.className = 'parlay__status wins';\n            } else {\n                statusEl.textContent = 'Parlay ganhou!';\n                statusEl.className = 'parlay__status wins';\n            }\n        } else if (hasLoss) {\n            combinedOddsEl.textContent = '—';\n            impliedProbEl.textContent = '—';\n            payoutEl.textContent = '$0.00';\n            payoutEl.className = 'parlay__payout-value lose';\n            profitEl.textContent = stake \u003e 0 ? '-$' + stake.toFixed(2) : '—';\n            profitEl.className = 'parlay__payout-value lose';\n            statusEl.textContent = 'Parlay perdeu';\n            statusEl.className = 'parlay__status loses';\n        } else {\n            combinedOddsEl.textContent = '—';\n            impliedProbEl.textContent = '—';\n            payoutEl.textContent = '—';\n            payoutEl.className = 'parlay__payout-value';\n            profitEl.textContent = '—';\n            profitEl.className = 'parlay__payout-value';\n            statusEl.textContent = 'Todas as seleções devem ganhar';\n            statusEl.className = 'parlay__status pending';\n        }\n    }\n\n    function reset() {\n        const legs = container.querySelectorAll('.parlay__leg');\n        legs.forEach((leg, index) =\u003e {\n            if (index \u003e= 2) leg.remove();\n        });\n        legCount = 2;\n\n        container.querySelectorAll('.parlay__leg-input').forEach(input =\u003e {\n            input.value = '';\n            input.classList.remove('invalid');\n        });\n\n        container.querySelectorAll('.parlay__leg-outcome').forEach(select =\u003e {\n            select.value = 'win';\n        });\n\n        container.querySelectorAll('.parlay__leg-decimal').forEach(span =\u003e {\n            span.textContent = '';\n        });\n\n        container.querySelector('.parlay__stake').value = '';\n\n        container.querySelector('#parlayLegs').textContent = '2';\n        container.querySelector('#parlayCombinedOdds').textContent = '—';\n        container.querySelector('#parlayImpliedProb').textContent = '—';\n        container.querySelector('#parlayPayout').textContent = '—';\n        container.querySelector('#parlayPayout').className = 'parlay__payout-value';\n        container.querySelector('#parlayProfit').textContent = '—';\n        container.querySelector('#parlayProfit').className = 'parlay__payout-value';\n        container.querySelector('#parlayStatus').textContent = 'Todas as seleções devem ganhar';\n        container.querySelector('#parlayStatus').className = 'parlay__status pending';\n\n        container.querySelector('.parlay__add-btn').style.display = 'block';\n    }\n\n    \n    container.querySelectorAll('.parlay__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.parlay__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            updatePlaceholders();\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.parlay__leg-input').forEach(input =\u003e {\n        input.addEventListener('input', calculate);\n    });\n\n    container.querySelectorAll('.parlay__leg-outcome').forEach(select =\u003e {\n        select.addEventListener('change', calculate);\n    });\n\n    container.querySelector('.parlay__stake').addEventListener('input', calculate);\n    container.querySelector('.parlay__add-btn').addEventListener('click', addLeg);\n    container.querySelector('#parlayReset').addEventListener('click', reset);\n})();\n\u003c/script\u003e","title":"Calculadora de Parlay - Pagamentos de Apostas Combinadas"},{"content":" Tipo de Previsão Previsão Direta Previsão Reversa Odds 1º Lugar Odds 2º Lugar Aposta Número de apostas 1 Aposta total - Dividendo Estimado - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/forecast-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"forecast_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eTipo de Previsão\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-type\"\u003e\n            \u003coption value=\"straight\"\u003ePrevisão Direta\u003c/option\u003e\n            \u003coption value=\"reverse\"\u003ePrevisão Reversa\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds 1º Lugar\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"3.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds 2º Lugar\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"5.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"1\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-numbets\"\u003e1\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eDividendo Estimado\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dividend\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('forecast_0');\n    var typeEl = root.querySelector('.js-type');\n    var odds1El = root.querySelector('.js-odds1');\n    var odds2El = root.querySelector('.js-odds2');\n    var stakeEl = root.querySelector('.js-stake');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var dividendEl = root.querySelector('.js-dividend');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var o1 = parseFloat(odds1El.value);\n        var o2 = parseFloat(odds2El.value);\n        var stake = parseFloat(stakeEl.value);\n        var isReverse = typeEl.value === 'reverse';\n        var numBets = isReverse ? 2 : 1;\n        numBetsEl.textContent = numBets;\n\n        if (isNaN(o1) || isNaN(o2) || o1 \u003c= 1 || o2 \u003c= 1) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n        if (!stake || stake \u003c= 0) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n\n        var dividend = o1 * o2;\n        var totalStake = stake * numBets;\n        var payout = dividend * stake;\n\n        totalStakeEl.textContent = formatNumber(totalStake);\n        dividendEl.textContent = formatNumber(dividend);\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - totalStake);\n    }\n\n    typeEl.addEventListener('change', update);\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; stakeEl.value='';\n        typeEl.selectedIndex=0; numBetsEl.textContent='1';\n        totalStakeEl.textContent='-'; dividendEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Previsão - Calcular Retornos dos Primeiros Dois"},{"content":" Calculadora de Probabilidade Implícita Passo 1: Selecionar formato de odds Cotas decimais Fracionário Americano Passo 2: Inserir odds para cada resultado Resultado 1 — Resultado 2 — + Adicionar Resultado Digite odds decimais (ex. 2.50) Resultados Probabilidade Total — Margem da Casa — Positivo = lucro da casa, Negativo = oportunidade de valor Odds Justas (Sem Margem) Reiniciar ","permalink":"https://calculators-odds.com/pt/implied-probability-calculator/","summary":"\u003cstyle\u003e\n.implied {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.implied__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.implied__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.implied__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.implied__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.implied__format-btn {\n    flex: 1;\n    min-width: 100px;\n    padding: 10px 15px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.implied__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.implied__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.implied__outcomes-list {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n}\n\n.implied__outcome {\n    display: grid;\n    grid-template-columns: 100px 1fr 70px auto;\n    gap: 10px;\n    align-items: center;\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n}\n\n.implied__outcome-label {\n    font-weight: 500;\n    font-size: 13px;\n    color: #e8e8e8;\n}\n\n.implied__outcome-input {\n    width: 100%;\n    padding: 10px 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 15px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n}\n\n.implied__outcome-input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.implied__outcome-input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.implied__outcome-input.invalid {\n    border-color: #f44336;\n}\n\n.implied__outcome-prob {\n    font-weight: 600;\n    font-size: 14px;\n    text-align: right;\n    color: #4CAF50;\n}\n\n.implied__outcome-remove {\n    padding: 6px 10px;\n    background: #f44336;\n    color: #fff;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 12px;\n    transition: background 0.2s;\n}\n\n.implied__outcome-remove:hover {\n    background: #d32f2f;\n}\n\n.implied__add-btn {\n    width: 100%;\n    padding: 10px;\n    margin-top: 10px;\n    background: transparent;\n    border: 2px dashed rgba(255, 255, 255, 0.3);\n    color: #e8e8e8;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 14px;\n    transition: all 0.2s;\n}\n\n.implied__add-btn:hover {\n    border-color: #4CAF50;\n    color: #4CAF50;\n}\n\n.implied__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.implied__results-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 15px;\n}\n\n.implied__result-box {\n    background: rgba(0, 0, 0, 0.2);\n    padding: 15px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.implied__result-label {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 5px;\n}\n\n.implied__result-value {\n    font-size: 22px;\n    font-weight: 700;\n    color: #e8e8e8;\n}\n\n.implied__result-value.positive {\n    color: #4CAF50;\n}\n\n.implied__result-value.negative {\n    color: #f44336;\n}\n\n.implied__result-value.warning {\n    color: #ff9800;\n}\n\n.implied__fair-odds {\n    margin-top: 15px;\n    display: none;\n}\n\n.implied__fair-grid {\n    display: grid;\n    gap: 8px;\n}\n\n.implied__fair-row {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n}\n\n.implied__fair-label {\n    font-size: 13px;\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.implied__fair-value {\n    font-weight: 600;\n    color: #4CAF50;\n}\n\n.implied__fair-prob {\n    font-size: 12px;\n    color: rgba(232, 232, 232, 0.6);\n    margin-left: 8px;\n}\n\n.implied__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.implied__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.implied__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.implied__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 600px) {\n    .implied__outcome {\n        grid-template-columns: 1fr;\n        gap: 8px;\n    }\n\n    .implied__outcome-prob {\n        text-align: left;\n    }\n\n    .implied__results-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .implied__format-btn {\n        min-width: 80px;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"implied\"\u003e\n    \u003cdiv class=\"implied__title\"\u003eCalculadora de Probabilidade Implícita\u003c/div\u003e\n\n    \u003cdiv class=\"implied__section\"\u003e\n        \u003cdiv class=\"implied__section-title\"\u003ePasso 1: Selecionar formato de odds\u003c/div\u003e\n        \u003cdiv class=\"implied__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"implied__format-btn active\" data-type=\"decimal\"\u003eCotas decimais\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"implied__format-btn\" data-type=\"fractional\"\u003eFracionário\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"implied__format-btn\" data-type=\"american\"\u003eAmericano\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"implied__section\"\u003e\n        \u003cdiv class=\"implied__section-title\"\u003ePasso 2: Inserir odds para cada resultado\u003c/div\u003e\n        \u003cdiv class=\"implied__outcomes-list\"\u003e\n            \u003cdiv class=\"implied__outcome\" data-index=\"0\"\u003e\n                \u003cspan class=\"implied__outcome-label\"\u003eResultado 1\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"implied__outcome-input\" placeholder=\"2.50\" data-index=\"0\"\u003e\n                \u003cspan class=\"implied__outcome-prob\" data-index=\"0\"\u003e—\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"implied__outcome\" data-index=\"1\"\u003e\n                \u003cspan class=\"implied__outcome-label\"\u003eResultado 2\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"implied__outcome-input\" placeholder=\"2.50\" data-index=\"1\"\u003e\n                \u003cspan class=\"implied__outcome-prob\" data-index=\"1\"\u003e—\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cbutton type=\"button\" class=\"implied__add-btn\"\u003e+ Adicionar Resultado\u003c/button\u003e\n        \u003cdiv class=\"implied__hint implied__hint-format\"\u003eDigite odds decimais (ex. 2.50)\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"implied__section\"\u003e\n        \u003cdiv class=\"implied__section-title\"\u003eResultados\u003c/div\u003e\n        \u003cdiv class=\"implied__results-grid\"\u003e\n            \u003cdiv class=\"implied__result-box\"\u003e\n                \u003cdiv class=\"implied__result-label\"\u003eProbabilidade Total\u003c/div\u003e\n                \u003cdiv class=\"implied__result-value\" id=\"impliedTotalProb\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"implied__result-box\"\u003e\n                \u003cdiv class=\"implied__result-label\"\u003eMargem da Casa\u003c/div\u003e\n                \u003cdiv class=\"implied__result-value\" id=\"impliedMargin\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"implied__hint\"\u003ePositivo = lucro da casa, Negativo = oportunidade de valor\u003c/div\u003e\n\n        \u003cdiv class=\"implied__fair-odds\" id=\"impliedFairOdds\"\u003e\n            \u003cdiv class=\"implied__section-title\" style=\"margin-top: 15px;\"\u003eOdds Justas (Sem Margem)\u003c/div\u003e\n            \u003cdiv class=\"implied__fair-grid\" id=\"impliedFairOddsContent\"\u003e\u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"implied__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"implied__btn implied__btn--secondary\" id=\"impliedReset\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let outcomeCount = 2;\n    const maxOutcomes = 10;\n\n    const placeholders = {\n        decimal: '2.50',\n        fractional: '3\\/2',\n        american: '\\u002b150'\n    };\n\n    const hints = {\n        decimal: 'Digite odds decimais (ex. 2.50)',\n        fractional: 'Digite odds fracionárias (ex. 3\\/2)',\n        american: 'Digite odds americanas (ex. \\u002b150 ou -200)'\n    };\n\n    const outcomeLabels = [\n        'Resultado 1',\n        'Resultado 2',\n        'Resultado 3 (Empate)',\n        'Outcome 4',\n        'Outcome 5',\n        'Outcome 6',\n        'Outcome 7',\n        'Outcome 8',\n        'Outcome 9',\n        'Outcome 10'\n    ];\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateAmerican(value) {\n        return /^[+-]?\\d+$/.test(value) \u0026\u0026 (parseInt(value) \u003e= 100 || parseInt(value) \u003c= -100);\n    }\n\n    function fractionalToDecimal(fraction) {\n        const parts = fraction.split('/');\n        return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n    }\n\n    function americanToDecimal(american) {\n        const value = parseInt(american);\n        return value \u003e 0 ? (value / 100) + 1 : (100 / Math.abs(value)) + 1;\n    }\n\n    function decimalToFractional(decimal) {\n        const profit = decimal - 1;\n        const gcd = (a, b) =\u003e b ? gcd(b, a % b) : a;\n        const precision = 1000;\n        const numerator = Math.round(profit * precision);\n        const denominator = precision;\n        const divisor = gcd(numerator, denominator);\n        return `${numerator / divisor}/${denominator / divisor}`;\n    }\n\n    function decimalToAmerican(decimal) {\n        if (decimal \u003e= 2) {\n            return '+' + Math.round((decimal - 1) * 100);\n        }\n        return Math.round(-100 / (decimal - 1));\n    }\n\n    function getDecimalOdds(value) {\n        if (!value) return null;\n\n        if (currentOddsType === 'decimal') {\n            return validateDecimal(value) ? parseFloat(value) : null;\n        } else if (currentOddsType === 'fractional') {\n            return validateFractional(value) ? fractionalToDecimal(value) : null;\n        } else if (currentOddsType === 'american') {\n            return validateAmerican(value) ? americanToDecimal(value) : null;\n        }\n        return null;\n    }\n\n    function impliedProbability(decimalOdds) {\n        return (1 / decimalOdds) * 100;\n    }\n\n    function fairOdds(decimalOdds, totalImpliedProb) {\n        const impliedProb = 1 / decimalOdds;\n        const fairProb = impliedProb / (totalImpliedProb / 100);\n        return 1 / fairProb;\n    }\n\n    function updatePlaceholders() {\n        const inputs = container.querySelectorAll('.implied__outcome-input');\n        inputs.forEach(input =\u003e {\n            input.placeholder = placeholders[currentOddsType];\n        });\n\n        const hintEl = container.querySelector('.implied__hint-format');\n        if (hintEl) {\n            hintEl.textContent = hints[currentOddsType];\n        }\n    }\n\n    function addOutcome() {\n        if (outcomeCount \u003e= maxOutcomes) return;\n\n        const outcomesList = container.querySelector('.implied__outcomes-list');\n\n        const newOutcome = document.createElement('div');\n        newOutcome.className = 'implied__outcome';\n        newOutcome.dataset.index = outcomeCount;\n        newOutcome.innerHTML = `\n            \u003cspan class=\"implied__outcome-label\"\u003e${outcomeLabels[outcomeCount] || 'Outcome ' + (outcomeCount + 1)}\u003c/span\u003e\n            \u003cinput type=\"text\" class=\"implied__outcome-input\" placeholder=\"${placeholders[currentOddsType]}\" data-index=\"${outcomeCount}\"\u003e\n            \u003cspan class=\"implied__outcome-prob\" data-index=\"${outcomeCount}\"\u003e—\u003c/span\u003e\n            \u003cbutton type=\"button\" class=\"implied__outcome-remove\"\u003e✕\u003c/button\u003e\n        `;\n\n        outcomesList.appendChild(newOutcome);\n        outcomeCount++;\n\n        newOutcome.querySelector('.implied__outcome-input').addEventListener('input', calculate);\n        newOutcome.querySelector('.implied__outcome-remove').addEventListener('click', function() {\n            removeOutcome(newOutcome);\n        });\n\n        if (outcomeCount \u003e= maxOutcomes) {\n            container.querySelector('.implied__add-btn').style.display = 'none';\n        }\n    }\n\n    function removeOutcome(outcomeEl) {\n        outcomeEl.remove();\n        outcomeCount--;\n\n        const outcomes = container.querySelectorAll('.implied__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            outcome.dataset.index = index;\n            outcome.querySelector('.implied__outcome-input').dataset.index = index;\n            outcome.querySelector('.implied__outcome-prob').dataset.index = index;\n        });\n\n        if (outcomeCount \u003c maxOutcomes) {\n            container.querySelector('.implied__add-btn').style.display = 'block';\n        }\n\n        calculate();\n    }\n\n    function calculate() {\n        const inputs = container.querySelectorAll('.implied__outcome-input');\n        const probs = container.querySelectorAll('.implied__outcome-prob');\n\n        let totalImpliedProb = 0;\n        const decimalOddsList = [];\n\n        inputs.forEach((input, index) =\u003e {\n            const value = input.value.trim();\n            const decOdds = getDecimalOdds(value);\n\n            if (value \u0026\u0026 !decOdds) {\n                input.classList.add('invalid');\n                probs[index].textContent = '—';\n                decimalOddsList.push(null);\n            } else if (decOdds) {\n                input.classList.remove('invalid');\n                const prob = impliedProbability(decOdds);\n                totalImpliedProb += prob;\n                decimalOddsList.push(decOdds);\n                probs[index].textContent = prob.toFixed(1) + '%';\n            } else {\n                input.classList.remove('invalid');\n                probs[index].textContent = '—';\n                decimalOddsList.push(null);\n            }\n        });\n\n        const totalProbEl = container.querySelector('#impliedTotalProb');\n        const marginEl = container.querySelector('#impliedMargin');\n        const fairOddsContainer = container.querySelector('#impliedFairOdds');\n        const fairOddsContent = container.querySelector('#impliedFairOddsContent');\n\n        if (totalImpliedProb \u003e 0) {\n            totalProbEl.textContent = totalImpliedProb.toFixed(2) + '%';\n\n            const margin = totalImpliedProb - 100;\n            marginEl.textContent = (margin \u003e= 0 ? '+' : '') + margin.toFixed(2) + '%';\n\n            if (totalImpliedProb \u003e 100) {\n                totalProbEl.className = 'implied__result-value warning';\n                marginEl.className = 'implied__result-value negative';\n            } else if (totalImpliedProb \u003c 100) {\n                totalProbEl.className = 'implied__result-value positive';\n                marginEl.className = 'implied__result-value positive';\n            } else {\n                totalProbEl.className = 'implied__result-value';\n                marginEl.className = 'implied__result-value';\n            }\n\n            const validOdds = decimalOddsList.filter(o =\u003e o !== null);\n            if (validOdds.length \u003e= 2) {\n                fairOddsContainer.style.display = 'block';\n                let fairOddsHTML = '';\n\n                decimalOddsList.forEach((decOdds, index) =\u003e {\n                    if (decOdds) {\n                        const fair = fairOdds(decOdds, totalImpliedProb);\n                        const fairProb = impliedProbability(fair);\n                        let displayOdds = fair.toFixed(2);\n\n                        if (currentOddsType === 'fractional') {\n                            displayOdds = decimalToFractional(fair);\n                        } else if (currentOddsType === 'american') {\n                            displayOdds = decimalToAmerican(fair);\n                        }\n\n                        fairOddsHTML += `\n                            \u003cdiv class=\"implied__fair-row\"\u003e\n                                \u003cspan class=\"implied__fair-label\"\u003e${outcomeLabels[index] || 'Outcome ' + (index + 1)}\u003c/span\u003e\n                                \u003cspan\u003e\n                                    \u003cspan class=\"implied__fair-value\"\u003e${displayOdds}\u003c/span\u003e\n                                    \u003cspan class=\"implied__fair-prob\"\u003e(${fairProb.toFixed(1)}%)\u003c/span\u003e\n                                \u003c/span\u003e\n                            \u003c/div\u003e\n                        `;\n                    }\n                });\n\n                fairOddsContent.innerHTML = fairOddsHTML;\n            } else {\n                fairOddsContainer.style.display = 'none';\n            }\n        } else {\n            totalProbEl.textContent = '—';\n            totalProbEl.className = 'implied__result-value';\n            marginEl.textContent = '—';\n            marginEl.className = 'implied__result-value';\n            fairOddsContainer.style.display = 'none';\n        }\n    }\n\n    function reset() {\n        const outcomes = container.querySelectorAll('.implied__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            if (index \u003e= 2) outcome.remove();\n        });\n        outcomeCount = 2;\n\n        container.querySelectorAll('.implied__outcome-input').forEach(input =\u003e {\n            input.value = '';\n            input.classList.remove('invalid');\n        });\n\n        container.querySelectorAll('.implied__outcome-prob').forEach(prob =\u003e {\n            prob.textContent = '—';\n        });\n\n        container.querySelector('#impliedTotalProb').textContent = '—';\n        container.querySelector('#impliedTotalProb').className = 'implied__result-value';\n        container.querySelector('#impliedMargin').textContent = '—';\n        container.querySelector('#impliedMargin').className = 'implied__result-value';\n        container.querySelector('#impliedFairOdds').style.display = 'none';\n        container.querySelector('.implied__add-btn').style.display = 'block';\n    }\n\n    \n    container.querySelectorAll('.implied__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.implied__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            updatePlaceholders();\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.implied__outcome-input').forEach(input =\u003e {\n        input.addEventListener('input', calculate);\n    });\n\n    container.querySelector('.implied__add-btn').addEventListener('click', addOutcome);\n    container.querySelector('#impliedReset').addEventListener('click', reset);\n})();\n\u003c/script\u003e","title":"Calculadora de Probabilidade Implícita - Converter Odds em Percentual"},{"content":" Probabilidade de Vitória % Comprimento da Série Número de Apostas Prob. Série Vitórias - Prob. Série Derrotas - Maior Série Esperada - Reiniciar ","permalink":"https://calculators-odds.com/pt/streak-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"streak_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eProbabilidade de Vitória\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-prob\" type=\"text\" placeholder=\"50\" /\u003e\n        \u003cspan class=\"calc-wrap__unit\"\u003e%\u003c/span\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eComprimento da Série\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-length\" type=\"text\" placeholder=\"5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eNúmero de Apostas\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-numbets\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Série Vitórias\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-winstreak\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Série Derrotas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-losestreak\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMaior Série Esperada\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-expected\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('streak_0');\n    var probEl = root.querySelector('.js-prob');\n    var lengthEl = root.querySelector('.js-length');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var winStreakEl = root.querySelector('.js-winstreak');\n    var loseStreakEl = root.querySelector('.js-losestreak');\n    var expectedEl = root.querySelector('.js-expected');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var prob = parseFloat(probEl.value) / 100;\n        var length = parseInt(lengthEl.value);\n        var numBets = parseInt(numBetsEl.value);\n\n        if (isNaN(prob) || prob \u003c= 0 || prob \u003e= 1 || isNaN(length) || length \u003c 1 || isNaN(numBets) || numBets \u003c 1) {\n            winStreakEl.textContent = '-'; loseStreakEl.textContent = '-'; expectedEl.textContent = '-'; return;\n        }\n\n        \n        var winStreakProb = Math.pow(prob, length);\n        var loseStreakProb = Math.pow(1 - prob, length);\n\n        \n        var winAtLeastOnce = 1 - Math.pow(1 - winStreakProb, Math.max(1, numBets - length + 1));\n        var loseAtLeastOnce = 1 - Math.pow(1 - loseStreakProb, Math.max(1, numBets - length + 1));\n\n        \n        var expectedLongest = Math.log(numBets) / Math.log(1 / prob);\n\n        winStreakEl.textContent = (winAtLeastOnce * 100).toFixed(1) + '%';\n        loseStreakEl.textContent = (loseAtLeastOnce * 100).toFixed(1) + '%';\n        expectedEl.textContent = expectedLongest.toFixed(1) + ' bets';\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        probEl.value=''; lengthEl.value=''; numBetsEl.value='';\n        winStreakEl.textContent='-'; loseStreakEl.textContent='-'; expectedEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora de Sequências - Probabilidade de Sequências de Vitória/Derrota"},{"content":" Calculadora de Valor Esperado Passo 1: Inserir detalhes da aposta Formato de Odds Cotas decimais Fracionário Americano Formato das odds a inserir Probabilidades Decimal: 2.50 | Fracionária: 3/2 | Americana: \u0026#43;150 Probabilidade de Ganhar (%) Sua estimativa da verdadeira probabilidade de ganhar (1-99%) Aposta (Opcional) Deixe vazio para EV por unidade Resultados Valor Esperado - Insira valores acima Percentagem de EV - Vantagem - Probabilidade Implícita - Prob. equilíbrio - Projeção longo prazo 10 apostas: - 100 apostas: - 1.000 apostas: - EV = (Probabilidade × Lucro) - ((1 - Probabilidade) × Aposta) Reiniciar ","permalink":"https://calculators-odds.com/pt/expected-value-calculator/","summary":"\u003cstyle\u003e\n    .ev {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .ev__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .ev__container {\n        width: 100%;\n        max-width: 600px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .ev__section {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .ev__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .ev__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .ev__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .ev__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n    }\n\n    .ev__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .ev__input, .ev__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .ev__input:focus, .ev__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .ev__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .ev__select {\n        cursor: pointer;\n    }\n\n    .ev__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .ev__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .ev__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .ev__result-box {\n        padding: 25px;\n        border-radius: 8px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .ev__result-box.positive {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .ev__result-box.negative {\n        background: rgba(244, 67, 54, 0.15);\n        border: 2px solid #f44336;\n    }\n\n    .ev__result-box.neutral {\n        background: rgba(255, 152, 0, 0.15);\n        border: 2px solid #ff9800;\n    }\n\n    .ev__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .ev__result-value {\n        font-size: 32px;\n        font-weight: bold;\n    }\n\n    .ev__result-box.positive .ev__result-value {\n        color: #4CAF50;\n    }\n\n    .ev__result-box.negative .ev__result-value {\n        color: #f44336;\n    }\n\n    .ev__result-box.neutral .ev__result-value {\n        color: #ff9800;\n    }\n\n    .ev__verdict {\n        font-size: 16px;\n        font-weight: bold;\n        margin-top: 10px;\n    }\n\n    .ev__output-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .ev__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .ev__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .ev__output-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .ev__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .ev__output-value.negative {\n        color: #f44336;\n    }\n\n    .ev__projection {\n        margin-top: 20px;\n        padding: 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 8px;\n    }\n\n    .ev__projection-title {\n        font-size: 14px;\n        font-weight: bold;\n        margin-bottom: 10px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .ev__projection-row {\n        display: flex;\n        justify-content: space-between;\n        padding: 8px 0;\n        border-bottom: 1px solid rgba(255,255,255,0.05);\n        font-size: 13px;\n    }\n\n    .ev__projection-row:last-child {\n        border-bottom: none;\n    }\n\n    .ev__projection-row span:first-child {\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .ev__projection-row span:last-child {\n        font-weight: bold;\n    }\n\n    .ev__formula {\n        margin-top: 15px;\n        padding: 12px;\n        background: rgba(0, 0, 0, 0.2);\n        border-radius: 4px;\n        font-size: 12px;\n        text-align: center;\n        font-family: monospace;\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .ev__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .ev__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .ev__row {\n            flex-direction: column;\n        }\n        .ev__output-grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"ev\"\u003e\n    \u003cdiv class=\"ev__title\"\u003eCalculadora de Valor Esperado\u003c/div\u003e\n\n    \u003cdiv class=\"ev__container\"\u003e\n        \n        \u003cdiv class=\"ev__section\"\u003e\n            \u003cdiv class=\"ev__section-title\"\u003ePasso 1: Inserir detalhes da aposta\u003c/div\u003e\n            \u003cdiv class=\"ev__row\"\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003eFormato de Odds\u003c/label\u003e\n                    \u003cselect class=\"ev__select ev__odds-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"ev__hint\"\u003eFormato das odds a inserir\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003eProbabilidades\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"ev__input ev__odds\" placeholder=\"2.50\" /\u003e\n                    \u003cspan class=\"ev__hint ev__odds-hint\" data-decimal=\"Decimal: 2.50 | Fracionária: 3/2 | Americana: \u0026#43;150\" data-fractional=\"Decimal: 2.50 | Fracionária: 3/2 | Americana: \u0026#43;150\" data-american=\"Decimal: 2.50 | Fracionária: 3/2 | Americana: \u0026#43;150\"\u003eDecimal: 2.50 | Fracionária: 3/2 | Americana: \u0026#43;150\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"ev__row\"\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003eProbabilidade de Ganhar (%)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"ev__input ev__probability\" placeholder=\"45\" min=\"0\" max=\"100\" step=\"0.1\" /\u003e\n                    \u003cspan class=\"ev__hint\"\u003eSua estimativa da verdadeira probabilidade de ganhar (1-99%)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003eAposta (Opcional)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"ev__input ev__stake\" placeholder=\"10.00\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"ev__hint\"\u003eDeixe vazio para EV por unidade\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"ev__section\"\u003e\n            \u003cdiv class=\"ev__output-title\"\u003eResultados\u003c/div\u003e\n            \u003cdiv class=\"ev__result-box neutral\"\u003e\n                \u003cdiv class=\"ev__result-label\"\u003eValor Esperado\u003c/div\u003e\n                \u003cdiv class=\"ev__result-value ev__ev-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"ev__verdict ev__verdict-text\"\u003eInsira valores acima\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"ev__output-grid\"\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003ePercentagem de EV\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__ev-percent\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003eVantagem\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__edge\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003eProbabilidade Implícita\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__implied\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003eProb. equilíbrio\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__breakeven\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"ev__projection\"\u003e\n                \u003cdiv class=\"ev__projection-title\"\u003eProjeção longo prazo\u003c/div\u003e\n                \u003cdiv class=\"ev__projection-row\"\u003e\n                    \u003cspan\u003e10 apostas:\u003c/span\u003e\n                    \u003cspan class=\"ev__proj-10\"\u003e-\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__projection-row\"\u003e\n                    \u003cspan\u003e100 apostas:\u003c/span\u003e\n                    \u003cspan class=\"ev__proj-100\"\u003e-\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__projection-row\"\u003e\n                    \u003cspan\u003e1.000 apostas:\u003c/span\u003e\n                    \u003cspan class=\"ev__proj-1000\"\u003e-\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"ev__formula\"\u003e\n                EV = (Probabilidade × Lucro) - ((1 - Probabilidade) × Aposta)\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"ev__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.ev__odds-type');\n    const oddsInput = container.querySelector('.ev__odds');\n    const oddsHint = container.querySelector('.ev__odds-hint');\n    const probabilityInput = container.querySelector('.ev__probability');\n    const stakeInput = container.querySelector('.ev__stake');\n    const resetBtn = container.querySelector('.ev__reset');\n\n    const evValue = container.querySelector('.ev__ev-value');\n    const verdictText = container.querySelector('.ev__verdict-text');\n    const resultBox = container.querySelector('.ev__result-box');\n    const evPercent = container.querySelector('.ev__ev-percent');\n    const edgeEl = container.querySelector('.ev__edge');\n    const impliedEl = container.querySelector('.ev__implied');\n    const breakevenEl = container.querySelector('.ev__breakeven');\n    const proj10 = container.querySelector('.ev__proj-10');\n    const proj100 = container.querySelector('.ev__proj-100');\n    const proj1000 = container.querySelector('.ev__proj-1000');\n\n    const placeholders = {\n        'Decimal': '2.50',\n        'Fractional': '3/2',\n        'American': '+150'\n    };\n\n    const hints = {\n        'Decimal': 'Insira odds decimais (ex. 2.50, 1.80, 3.00)',\n        'Fractional': 'Insira odds fracionárias (ex. 3\\/2, 5\\/1, 11\\/4)',\n        'American': 'Insira odds americanas (ex. \\u002b150, -110, \\u002b200)'\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds() {\n        const type = oddsTypeSelect.value;\n        const odds = oddsInput.value.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function calculate() {\n        const decimalOdds = getDecimalOdds();\n        const winProb = parseFloat(probabilityInput.value) / 100;\n        const stake = parseFloat(stakeInput.value) || 1; \n\n        \n        if (decimalOdds === null || decimalOdds \u003c= 1) {\n            if (oddsInput.value.trim() !== '') {\n                oddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            oddsInput.classList.remove('invalid');\n        }\n\n        \n        if (isNaN(winProb) || winProb \u003c= 0 || winProb \u003e= 1) {\n            if (probabilityInput.value.trim() !== '') {\n                probabilityInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            probabilityInput.classList.remove('invalid');\n        }\n\n        \n        const profit = (decimalOdds - 1) * stake;\n        const ev = (winProb * profit) - ((1 - winProb) * stake);\n        const evPerUnit = (winProb * decimalOdds) - 1;\n        const evPct = evPerUnit * 100;\n\n        const impliedProb = 1 / decimalOdds;\n        const edge = winProb - impliedProb;\n\n        \n        if (stakeInput.value) {\n            evValue.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev).toFixed(2);\n        } else {\n            evValue.textContent = (evPerUnit \u003e= 0 ? '+' : '') + evPerUnit.toFixed(4);\n        }\n\n        \n        resultBox.classList.remove('positive', 'negative', 'neutral');\n        if (ev \u003e 0.001) {\n            resultBox.classList.add('positive');\n            verdictText.textContent = 'EV Positivo (\\u002bEV)';\n        } else if (ev \u003c -0.001) {\n            resultBox.classList.add('negative');\n            verdictText.textContent = 'EV Negativo (-EV)';\n        } else {\n            resultBox.classList.add('neutral');\n            verdictText.textContent = 'Equilíbrio';\n        }\n\n        \n        evPercent.textContent = (evPct \u003e= 0 ? '+' : '') + evPct.toFixed(2) + '%';\n        evPercent.className = 'ev__output-value ' + (evPct \u003e= 0 ? 'positive' : 'negative');\n\n        edgeEl.textContent = (edge \u003e= 0 ? '+' : '') + (edge * 100).toFixed(2) + '%';\n        edgeEl.className = 'ev__output-value ' + (edge \u003e= 0 ? 'positive' : 'negative');\n\n        impliedEl.textContent = (impliedProb * 100).toFixed(2) + '%';\n        breakevenEl.textContent = (impliedProb * 100).toFixed(2) + '%';\n\n        \n        proj10.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev * 10).toFixed(2);\n        proj100.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev * 100).toFixed(2);\n        proj1000.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev * 1000).toFixed(2);\n    }\n\n    function resetOutput() {\n        evValue.textContent = '-';\n        verdictText.textContent = 'Insira valores acima';\n        resultBox.classList.remove('positive', 'negative');\n        resultBox.classList.add('neutral');\n\n        evPercent.textContent = '-';\n        evPercent.className = 'ev__output-value';\n        edgeEl.textContent = '-';\n        edgeEl.className = 'ev__output-value';\n        impliedEl.textContent = '-';\n        breakevenEl.textContent = '-';\n\n        proj10.textContent = '-';\n        proj100.textContent = '-';\n        proj1000.textContent = '-';\n    }\n\n    function resetAll() {\n        oddsInput.value = '';\n        probabilityInput.value = '';\n        stakeInput.value = '';\n        oddsInput.classList.remove('invalid');\n        probabilityInput.classList.remove('invalid');\n        oddsTypeSelect.selectedIndex = 0;\n        updatePlaceholder();\n        resetOutput();\n    }\n\n    \n    function updatePlaceholder() {\n        const type = oddsTypeSelect.value;\n        oddsInput.placeholder = placeholders[type];\n        oddsHint.textContent = hints[type];\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        updatePlaceholder();\n        calculate();\n    });\n\n    oddsInput.addEventListener('input', calculate);\n    probabilityInput.addEventListener('input', calculate);\n    stakeInput.addEventListener('input', calculate);\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    updatePlaceholder();\n})();\n\u003c/script\u003e","title":"Calculadora de Valor Esperado - Calcular EV para Apostas"},{"content":" Média Gols Casa Média Gols Fora Vitória Casa - Empate - Vitória Fora - Mais de 2.5 - Menos de 2.5 - Ambas Marcam (Sim) - C \\ F012345 Reiniciar ","permalink":"https://calculators-odds.com/pt/poisson-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"poisson_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eMédia Gols Casa\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-home\" type=\"text\" placeholder=\"1.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eMédia Gols Fora\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-away\" type=\"text\" placeholder=\"1.2\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eVitória Casa\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-homewin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eEmpate\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-draw\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eVitória Fora\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-awaywin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMais de 2.5\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-over25\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMenos de 2.5\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-under25\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAmbas Marcam (Sim)\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-btts\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__table-wrap\"\u003e\n        \u003ctable class=\"calc-wrap__table js-scoretable\"\u003e\n            \u003cthead\u003e\u003ctr\u003e\u003cth\u003eC \\ F\u003c/th\u003e\u003cth\u003e0\u003c/th\u003e\u003cth\u003e1\u003c/th\u003e\u003cth\u003e2\u003c/th\u003e\u003cth\u003e3\u003c/th\u003e\u003cth\u003e4\u003c/th\u003e\u003cth\u003e5\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n            \u003ctbody\u003e\u003c/tbody\u003e\n        \u003c/table\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('poisson_0');\n    var homeEl = root.querySelector('.js-home');\n    var awayEl = root.querySelector('.js-away');\n    var homeWinEl = root.querySelector('.js-homewin');\n    var drawEl = root.querySelector('.js-draw');\n    var awayWinEl = root.querySelector('.js-awaywin');\n    var over25El = root.querySelector('.js-over25');\n    var under25El = root.querySelector('.js-under25');\n    var bttsEl = root.querySelector('.js-btts');\n    var tableEl = root.querySelector('.js-scoretable tbody');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function poisson(lambda, k) {\n        return (Math.pow(lambda, k) * Math.exp(-lambda)) / factorial(k);\n    }\n    function factorial(n) {\n        if (n \u003c= 1) return 1;\n        var r = 1; for (var i = 2; i \u003c= n; i++) r *= i; return r;\n    }\n\n    function update() {\n        var homeLambda = parseFloat(homeEl.value);\n        var awayLambda = parseFloat(awayEl.value);\n        if (isNaN(homeLambda) || isNaN(awayLambda) || homeLambda \u003c= 0 || awayLambda \u003c= 0) {\n            homeWinEl.textContent='-'; drawEl.textContent='-'; awayWinEl.textContent='-';\n            over25El.textContent='-'; under25El.textContent='-'; bttsEl.textContent='-';\n            tableEl.innerHTML=''; return;\n        }\n\n        var homeProbs = [], awayProbs = [];\n        for (var i = 0; i \u003c= 5; i++) {\n            homeProbs.push(poisson(homeLambda, i));\n            awayProbs.push(poisson(awayLambda, i));\n        }\n\n        var homeWin = 0, draw = 0, awayWin = 0, under25 = 0, btts = 0;\n        var html = '';\n        for (var h = 0; h \u003c= 5; h++) {\n            html += '\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003e' + h + '\u003c/strong\u003e\u003c/td\u003e';\n            for (var a = 0; a \u003c= 5; a++) {\n                var p = homeProbs[h] * awayProbs[a];\n                html += '\u003ctd\u003e' + (p * 100).toFixed(1) + '%\u003c/td\u003e';\n                if (h \u003e a) homeWin += p;\n                else if (h === a) draw += p;\n                else awayWin += p;\n                if (h + a \u003c= 2) under25 += p;\n                if (h \u003e 0 \u0026\u0026 a \u003e 0) btts += p;\n            }\n            html += '\u003c/tr\u003e';\n        }\n\n        homeWinEl.textContent = (homeWin * 100).toFixed(1) + '%';\n        drawEl.textContent = (draw * 100).toFixed(1) + '%';\n        awayWinEl.textContent = (awayWin * 100).toFixed(1) + '%';\n        under25El.textContent = (under25 * 100).toFixed(1) + '%';\n        over25El.textContent = ((1 - under25) * 100).toFixed(1) + '%';\n        bttsEl.textContent = (btts * 100).toFixed(1) + '%';\n        tableEl.innerHTML = html;\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        homeEl.value=''; awayEl.value='';\n        homeWinEl.textContent='-'; drawEl.textContent='-'; awayWinEl.textContent='-';\n        over25El.textContent='-'; under25El.textContent='-'; bttsEl.textContent='-';\n        tableEl.innerHTML='';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Distribuição Poisson - Prever Placares Exatos"},{"content":" Calculadora de Dutching Passo 1: Configuração de apostas Formato de Odds Cotas decimais Fracionário Americano Formato das odds a inserir Aposta Total Valor total a distribuir entre seleções Passo 2: Inserir suas seleções # Probabilidades Aposta Retorno Prob. + Adicionar Seleção Resultados Retorno Potencial - Lucro - Probabilidade Implícita - O dutching distribui sua aposta para garantir lucro igual independente da seleção vencedora. Insira pelo menos 2 seleções. Reiniciar ","permalink":"https://calculators-odds.com/pt/dutching-calculator/","summary":"\u003cstyle\u003e\n    .dutch {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .dutch__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .dutch__container {\n        width: 100%;\n        max-width: 800px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .dutch__section {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .dutch__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .dutch__settings {\n        display: flex;\n        gap: 20px;\n        flex-wrap: wrap;\n    }\n\n    .dutch__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 150px;\n    }\n\n    .dutch__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .dutch__input, .dutch__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .dutch__input:focus, .dutch__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .dutch__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .dutch__select {\n        cursor: pointer;\n    }\n\n    .dutch__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .dutch__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .dutch__selections-header {\n        display: grid;\n        grid-template-columns: 40px 1fr 100px 100px 80px 70px;\n        gap: 10px;\n        padding: 10px 0;\n        border-bottom: 1px solid rgba(255,255,255,0.2);\n        font-weight: bold;\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .dutch__selection-row {\n        display: grid;\n        grid-template-columns: 40px 1fr 100px 100px 80px 70px;\n        gap: 10px;\n        padding: 12px 0;\n        border-bottom: 1px solid rgba(255,255,255,0.05);\n        align-items: center;\n    }\n\n    .dutch__selection-num {\n        font-weight: bold;\n        color: #4CAF50;\n        font-size: 14px;\n    }\n\n    .dutch__selection-input {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 10px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 14px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .dutch__selection-input:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .dutch__selection-input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .dutch__selection-stake,\n    .dutch__selection-return,\n    .dutch__selection-prob {\n        font-weight: bold;\n        text-align: right;\n        font-size: 14px;\n    }\n\n    .dutch__selection-return {\n        color: #4CAF50;\n    }\n\n    .dutch__selection-prob {\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .dutch__remove-btn {\n        background: rgba(244, 67, 54, 0.2);\n        color: #f44336;\n        border: 1px solid #f44336;\n        border-radius: 4px;\n        padding: 6px 10px;\n        cursor: pointer;\n        font-size: 11px;\n        transition: all 0.2s;\n    }\n\n    .dutch__remove-btn:hover {\n        background: #f44336;\n        color: white;\n    }\n\n    .dutch__add-btn {\n        margin-top: 15px;\n        padding: 12px 20px;\n        background: rgba(76, 175, 80, 0.2);\n        color: #4CAF50;\n        border: 1px solid #4CAF50;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        transition: all 0.2s;\n    }\n\n    .dutch__add-btn:hover {\n        background: #4CAF50;\n        color: white;\n    }\n\n    .dutch__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .dutch__output-grid {\n        display: grid;\n        grid-template-columns: repeat(3, 1fr);\n        gap: 15px;\n    }\n\n    .dutch__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .dutch__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .dutch__output-value {\n        font-size: 24px;\n        font-weight: bold;\n    }\n\n    .dutch__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .dutch__output-value.negative {\n        color: #f44336;\n    }\n\n    .dutch__output-value.warning {\n        color: #ff9800;\n    }\n\n    .dutch__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .dutch__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .dutch__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 768px) {\n        .dutch__selections-header {\n            display: none;\n        }\n        .dutch__selection-row {\n            grid-template-columns: 30px 1fr 70px;\n            gap: 8px;\n            padding: 15px 0;\n        }\n        .dutch__selection-row .dutch__selection-stake,\n        .dutch__selection-row .dutch__selection-return,\n        .dutch__selection-row .dutch__selection-prob {\n            display: none;\n        }\n        .dutch__mobile-results {\n            grid-column: 2 / 3;\n            display: flex;\n            gap: 10px;\n            font-size: 12px;\n            margin-top: 5px;\n        }\n        .dutch__output-grid {\n            grid-template-columns: 1fr;\n        }\n        .dutch__settings {\n            flex-direction: column;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"dutch\"\u003e\n    \u003cdiv class=\"dutch__title\"\u003eCalculadora de Dutching\u003c/div\u003e\n\n    \u003cdiv class=\"dutch__container\"\u003e\n        \n        \u003cdiv class=\"dutch__section\"\u003e\n            \u003cdiv class=\"dutch__section-title\"\u003ePasso 1: Configuração de apostas\u003c/div\u003e\n            \u003cdiv class=\"dutch__settings\"\u003e\n                \u003cdiv class=\"dutch__input-group\"\u003e\n                    \u003clabel class=\"dutch__label\"\u003eFormato de Odds\u003c/label\u003e\n                    \u003cselect class=\"dutch__select dutch__odds-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"dutch__hint\"\u003eFormato das odds a inserir\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"dutch__input-group\"\u003e\n                    \u003clabel class=\"dutch__label\"\u003eAposta Total\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"dutch__input dutch__total-stake\" placeholder=\"100\" min=\"0\" step=\"0.01\" value=\"100\" /\u003e\n                    \u003cspan class=\"dutch__hint\"\u003eValor total a distribuir entre seleções\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"dutch__section\"\u003e\n            \u003cdiv class=\"dutch__section-title\"\u003ePasso 2: Inserir suas seleções\u003c/div\u003e\n            \u003cdiv class=\"dutch__selections-header\"\u003e\n                \u003cdiv\u003e#\u003c/div\u003e\n                \u003cdiv\u003eProbabilidades\u003c/div\u003e\n                \u003cdiv\u003eAposta\u003c/div\u003e\n                \u003cdiv\u003eRetorno\u003c/div\u003e\n                \u003cdiv\u003eProb.\u003c/div\u003e\n                \u003cdiv\u003e\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"dutch__selections-list\"\u003e\n                \n            \u003c/div\u003e\n            \u003cbutton type=\"button\" class=\"dutch__add-btn\"\u003e+ Adicionar Seleção\u003c/button\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"dutch__section\"\u003e\n            \u003cdiv class=\"dutch__output-title\"\u003eResultados\u003c/div\u003e\n            \u003cdiv class=\"dutch__output-grid\"\u003e\n                \u003cdiv class=\"dutch__output-item\"\u003e\n                    \u003cdiv class=\"dutch__output-label\"\u003eRetorno Potencial\u003c/div\u003e\n                    \u003cdiv class=\"dutch__output-value dutch__return-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"dutch__output-item\"\u003e\n                    \u003cdiv class=\"dutch__output-label\"\u003eLucro\u003c/div\u003e\n                    \u003cdiv class=\"dutch__output-value dutch__profit-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"dutch__output-item\"\u003e\n                    \u003cdiv class=\"dutch__output-label\"\u003eProbabilidade Implícita\u003c/div\u003e\n                    \u003cdiv class=\"dutch__output-value dutch__probability-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"dutch__info\"\u003e\n                O dutching distribui sua aposta para garantir lucro igual independente da seleção vencedora. Insira pelo menos 2 seleções.\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"dutch__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.dutch__odds-type');\n    const totalStakeInput = container.querySelector('.dutch__total-stake');\n    const selectionsList = container.querySelector('.dutch__selections-list');\n    const addBtn = container.querySelector('.dutch__add-btn');\n    const resetBtn = container.querySelector('.dutch__reset');\n\n    const returnValue = container.querySelector('.dutch__return-value');\n    const profitValue = container.querySelector('.dutch__profit-value');\n    const probabilityValue = container.querySelector('.dutch__probability-value');\n\n    let selectionCount = 0;\n\n    const placeholders = {\n        'Decimal': '2.50',\n        'Fractional': '3/2',\n        'American': '+150'\n    };\n\n    const hints = {\n        'Decimal': 'Insira odds decimais (ex. 2.50, 3.00)',\n        'Fractional': 'Insira odds fracionárias (ex. 3\\/2, 5\\/1)',\n        'American': 'Insira odds americanas (ex. \\u002b150, -110)'\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds(oddsString) {\n        const type = oddsTypeSelect.value;\n        const odds = oddsString.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function createSelectionRow() {\n        selectionCount++;\n        const row = document.createElement('div');\n        row.className = 'dutch__selection-row';\n        row.dataset.id = selectionCount;\n\n        const type = oddsTypeSelect.value;\n\n        row.innerHTML = `\n            \u003cdiv class=\"dutch__selection-num\"\u003e${selectionCount}\u003c/div\u003e\n            \u003cinput type=\"text\" class=\"dutch__selection-input dutch__odds-input\" placeholder=\"${placeholders[type]}\" title=\"${hints[type]}\" /\u003e\n            \u003cdiv class=\"dutch__selection-stake\"\u003e-\u003c/div\u003e\n            \u003cdiv class=\"dutch__selection-return\"\u003e-\u003c/div\u003e\n            \u003cdiv class=\"dutch__selection-prob\"\u003e-\u003c/div\u003e\n            \u003cbutton type=\"button\" class=\"dutch__remove-btn\"\u003e${'Remover'}\u003c/button\u003e\n        `;\n\n        const oddsInput = row.querySelector('.dutch__odds-input');\n        const removeBtn = row.querySelector('.dutch__remove-btn');\n\n        oddsInput.addEventListener('input', calculate);\n        removeBtn.addEventListener('click', function() {\n            row.remove();\n            renumberSelections();\n            calculate();\n        });\n\n        return row;\n    }\n\n    function renumberSelections() {\n        const rows = selectionsList.querySelectorAll('.dutch__selection-row');\n        rows.forEach((row, index) =\u003e {\n            row.querySelector('.dutch__selection-num').textContent = index + 1;\n        });\n        selectionCount = rows.length;\n    }\n\n    function calculate() {\n        const totalStake = parseFloat(totalStakeInput.value);\n        const rows = selectionsList.querySelectorAll('.dutch__selection-row');\n\n        if (isNaN(totalStake) || totalStake \u003c= 0 || rows.length === 0) {\n            resetOutput();\n            return;\n        }\n\n        \n        const selections = [];\n\n        rows.forEach(row =\u003e {\n            const oddsInput = row.querySelector('.dutch__odds-input');\n            const decimalOdds = getDecimalOdds(oddsInput.value);\n\n            if (decimalOdds === null || decimalOdds \u003c= 1) {\n                if (oddsInput.value.trim() !== '') {\n                    oddsInput.classList.add('invalid');\n                } else {\n                    oddsInput.classList.remove('invalid');\n                }\n            } else {\n                oddsInput.classList.remove('invalid');\n                selections.push({\n                    row: row,\n                    odds: decimalOdds,\n                    impliedProb: 1 / decimalOdds\n                });\n            }\n        });\n\n        if (selections.length \u003c 2) {\n            resetOutput();\n            \n            rows.forEach(row =\u003e {\n                row.querySelector('.dutch__selection-stake').textContent = '-';\n                row.querySelector('.dutch__selection-return').textContent = '-';\n                row.querySelector('.dutch__selection-prob').textContent = '-';\n            });\n            return;\n        }\n\n        \n        const sumInverseOdds = selections.reduce((sum, sel) =\u003e sum + sel.impliedProb, 0);\n        const potentialReturn = totalStake / sumInverseOdds;\n\n        selections.forEach(sel =\u003e {\n            const stake = totalStake * sel.impliedProb / sumInverseOdds;\n            const returnAmount = stake * sel.odds;\n\n            sel.row.querySelector('.dutch__selection-stake').textContent = '$' + stake.toFixed(2);\n            sel.row.querySelector('.dutch__selection-return').textContent = '$' + returnAmount.toFixed(2);\n            sel.row.querySelector('.dutch__selection-prob').textContent = (sel.impliedProb * 100).toFixed(1) + '%';\n        });\n\n        \n        rows.forEach(row =\u003e {\n            if (!selections.find(s =\u003e s.row === row)) {\n                row.querySelector('.dutch__selection-stake').textContent = '-';\n                row.querySelector('.dutch__selection-return').textContent = '-';\n                row.querySelector('.dutch__selection-prob').textContent = '-';\n            }\n        });\n\n        const profit = potentialReturn - totalStake;\n        const combinedProbability = sumInverseOdds * 100;\n\n        returnValue.textContent = '$' + potentialReturn.toFixed(2);\n\n        profitValue.textContent = (profit \u003e= 0 ? '+$' : '-$') + Math.abs(profit).toFixed(2);\n        profitValue.className = 'dutch__output-value ' + (profit \u003e= 0 ? 'positive' : 'negative');\n\n        probabilityValue.textContent = combinedProbability.toFixed(1) + '%';\n        probabilityValue.className = 'dutch__output-value ' + (combinedProbability \u003c 100 ? 'positive' : (combinedProbability \u003e 100 ? 'negative' : 'warning'));\n    }\n\n    function resetOutput() {\n        returnValue.textContent = '-';\n        returnValue.className = 'dutch__output-value';\n        profitValue.textContent = '-';\n        profitValue.className = 'dutch__output-value';\n        probabilityValue.textContent = '-';\n        probabilityValue.className = 'dutch__output-value';\n    }\n\n    function resetAll() {\n        selectionsList.innerHTML = '';\n        selectionCount = 0;\n        totalStakeInput.value = '100';\n\n        \n        selectionsList.appendChild(createSelectionRow());\n        selectionsList.appendChild(createSelectionRow());\n\n        resetOutput();\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        const type = this.value;\n\n        selectionsList.querySelectorAll('.dutch__odds-input').forEach(input =\u003e {\n            input.placeholder = placeholders[type];\n            input.title = hints[type];\n        });\n        calculate();\n    });\n\n    totalStakeInput.addEventListener('input', calculate);\n    addBtn.addEventListener('click', function() {\n        selectionsList.appendChild(createSelectionRow());\n    });\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    selectionsList.appendChild(createSelectionRow());\n    selectionsList.appendChild(createSelectionRow());\n})();\n\u003c/script\u003e","title":"Calculadora Dutching - Lucro Igual em Múltiplas Seleções"},{"content":" Calculadora Each Way Passo 1: Inserir detalhes da aposta Formato de Odds Fracionário Cotas decimais Americano Formato das odds a inserir Odds de Vitória Fracionária: 10/1 | Decimal: 11.00 | Americana: \u0026#43;1000 Aposta por parte (E/W) Valor por parte — aposta total = 2× este valor Passo 2: Condições de lugar e Regra 4 Termos de Lugar 1/4 Odd 1/5 Odd 1/3 Odd 1/2 Odd Fração das odds de vitória para aposta de lugar Número de Lugares 2 Lugares 3 Lugares 4 Lugares 5 Lugares 6 Lugares Número de lugares pagantes Rule 4 Deduction Não Sim Dedução por não-participante Regra 4 Vitória 0p 5p 10p 15p 20p 25p 30p 35p 40p 45p 50p 55p 60p 65p 70p 75p Regra 4 Lugar 0p 5p 10p 15p 20p 25p 30p 35p 40p 45p 50p 55p 60p 65p 70p 75p Passo 3: Selecionar resultado Ganha Coloca (sem ganhar) Perde Selecionar resultado: Vitória = ambas apostas pagam, Lugar = apenas lugar paga, Perda = nada Resultados Aposta Total - Odd lugar - Retorno por Vitória - Retorno por Lugar - Retorno Total / Lucro - Aposta Each Way = Aposta vitória \u0026#43; Aposta lugar a fração da odd vitória. A aposta total é dobrada. Reiniciar ","permalink":"https://calculators-odds.com/pt/each-way-calculator/","summary":"\u003cstyle\u003e\n    .eachway {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .eachway__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .eachway__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .eachway__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .eachway__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .eachway__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n        flex-wrap: wrap;\n    }\n\n    .eachway__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .eachway__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 120px;\n    }\n\n    .eachway__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .eachway__input, .eachway__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .eachway__input:focus, .eachway__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .eachway__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .eachway__select {\n        cursor: pointer;\n    }\n\n    .eachway__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .eachway__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .eachway__rule4-row {\n        display: flex;\n        align-items: flex-start;\n        gap: 15px;\n        flex-wrap: wrap;\n    }\n\n    .eachway__rule4-controls {\n        display: none;\n        gap: 15px;\n        flex: 1;\n    }\n\n    .eachway__rule4-controls.active {\n        display: flex;\n    }\n\n    .eachway__outcome-tabs {\n        display: flex;\n        gap: 8px;\n    }\n\n    .eachway__outcome-tab {\n        flex: 1;\n        padding: 14px;\n        border: 2px solid #4CAF50;\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        font-weight: bold;\n        transition: all 0.2s;\n    }\n\n    .eachway__outcome-tab:hover {\n        background: rgba(76, 175, 80, 0.2);\n    }\n\n    .eachway__outcome-tab.active {\n        background: #4CAF50;\n        color: #fff;\n    }\n\n    .eachway__outcome-tab.lose {\n        border-color: #f44336;\n    }\n\n    .eachway__outcome-tab.lose:hover {\n        background: rgba(244, 67, 54, 0.2);\n    }\n\n    .eachway__outcome-tab.lose.active {\n        background: #f44336;\n    }\n\n    .eachway__outcome-hint {\n        margin-top: 10px;\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        text-align: center;\n    }\n\n    .eachway__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .eachway__output-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .eachway__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .eachway__output-item.full-width {\n        grid-column: span 2;\n    }\n\n    .eachway__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .eachway__output-value {\n        font-size: 20px;\n        font-weight: bold;\n    }\n\n    .eachway__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .eachway__output-value.negative {\n        color: #f44336;\n    }\n\n    .eachway__profit-box {\n        margin-top: 15px;\n        padding: 20px;\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        text-align: center;\n    }\n\n    .eachway__profit-box.loss {\n        background: rgba(244, 67, 54, 0.15);\n        border-color: #f44336;\n    }\n\n    .eachway__profit-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .eachway__profit-value {\n        font-size: 28px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .eachway__profit-box.loss .eachway__profit-value {\n        color: #f44336;\n    }\n\n    .eachway__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .eachway__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .eachway__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .eachway__row {\n            flex-direction: column;\n        }\n        .eachway__output-grid {\n            grid-template-columns: 1fr;\n        }\n        .eachway__output-item.full-width {\n            grid-column: span 1;\n        }\n        .eachway__outcome-tabs {\n            flex-direction: column;\n        }\n        .eachway__rule4-controls {\n            flex-direction: column;\n            width: 100%;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"eachway\"\u003e\n    \u003cdiv class=\"eachway__title\"\u003eCalculadora Each Way\u003c/div\u003e\n\n    \u003cdiv class=\"eachway__container\"\u003e\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__section-title\"\u003ePasso 1: Inserir detalhes da aposta\u003c/div\u003e\n            \u003cdiv class=\"eachway__row\"\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003eFormato de Odds\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__odds-type\"\u003e\n                        \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n                        \u003coption value=\"Decimal\"\u003eCotas decimais\u003c/option\u003e\n                        \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003eFormato das odds a inserir\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003eOdds de Vitória\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"eachway__input eachway__odds\" placeholder=\"10/1\" /\u003e\n                    \u003cspan class=\"eachway__hint eachway__odds-hint\"\u003eFracionária: 10/1 | Decimal: 11.00 | Americana: \u0026#43;1000\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"eachway__row\"\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003eAposta por parte (E/W)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"eachway__input eachway__stake\" placeholder=\"5.00\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"eachway__hint\"\u003eValor por parte — aposta total = 2× este valor\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__section-title\"\u003ePasso 2: Condições de lugar e Regra 4\u003c/div\u003e\n            \u003cdiv class=\"eachway__row\"\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003eTermos de Lugar\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__place-terms\"\u003e\n                        \u003coption value=\"0.25\"\u003e1/4 Odd\u003c/option\u003e\n                        \u003coption value=\"0.2\"\u003e1/5 Odd\u003c/option\u003e\n                        \u003coption value=\"0.333\"\u003e1/3 Odd\u003c/option\u003e\n                        \u003coption value=\"0.5\"\u003e1/2 Odd\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003eFração das odds de vitória para aposta de lugar\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003eNúmero de Lugares\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__places\"\u003e\n                        \u003coption value=\"2\"\u003e2 Lugares\u003c/option\u003e\n                        \u003coption value=\"3\" selected\u003e3 Lugares\u003c/option\u003e\n                        \u003coption value=\"4\"\u003e4 Lugares\u003c/option\u003e\n                        \u003coption value=\"5\"\u003e5 Lugares\u003c/option\u003e\n                        \u003coption value=\"6\"\u003e6 Lugares\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003eNúmero de lugares pagantes\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"eachway__row eachway__rule4-row\"\u003e\n                \u003cdiv class=\"eachway__input-group\" style=\"flex: 0 0 auto; min-width: 100px;\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003eRule 4 Deduction\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__rule4-toggle\"\u003e\n                        \u003coption value=\"no\"\u003eNão\u003c/option\u003e\n                        \u003coption value=\"yes\"\u003eSim\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003eDedução por não-participante\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__rule4-controls\"\u003e\n                    \u003cdiv class=\"eachway__input-group\"\u003e\n                        \u003clabel class=\"eachway__label\"\u003eRegra 4 Vitória\u003c/label\u003e\n                        \u003cselect class=\"eachway__select eachway__rule4-win\"\u003e\n                            \u003coption value=\"0\"\u003e0p\u003c/option\u003e\n                            \u003coption value=\"5\"\u003e5p\u003c/option\u003e\n                            \u003coption value=\"10\"\u003e10p\u003c/option\u003e\n                            \u003coption value=\"15\"\u003e15p\u003c/option\u003e\n                            \u003coption value=\"20\"\u003e20p\u003c/option\u003e\n                            \u003coption value=\"25\"\u003e25p\u003c/option\u003e\n                            \u003coption value=\"30\"\u003e30p\u003c/option\u003e\n                            \u003coption value=\"35\"\u003e35p\u003c/option\u003e\n                            \u003coption value=\"40\"\u003e40p\u003c/option\u003e\n                            \u003coption value=\"45\"\u003e45p\u003c/option\u003e\n                            \u003coption value=\"50\"\u003e50p\u003c/option\u003e\n                            \u003coption value=\"55\"\u003e55p\u003c/option\u003e\n                            \u003coption value=\"60\"\u003e60p\u003c/option\u003e\n                            \u003coption value=\"65\"\u003e65p\u003c/option\u003e\n                            \u003coption value=\"70\"\u003e70p\u003c/option\u003e\n                            \u003coption value=\"75\"\u003e75p\u003c/option\u003e\n                        \u003c/select\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"eachway__input-group\"\u003e\n                        \u003clabel class=\"eachway__label\"\u003eRegra 4 Lugar\u003c/label\u003e\n                        \u003cselect class=\"eachway__select eachway__rule4-place\"\u003e\n                            \u003coption value=\"0\"\u003e0p\u003c/option\u003e\n                            \u003coption value=\"5\"\u003e5p\u003c/option\u003e\n                            \u003coption value=\"10\"\u003e10p\u003c/option\u003e\n                            \u003coption value=\"15\"\u003e15p\u003c/option\u003e\n                            \u003coption value=\"20\"\u003e20p\u003c/option\u003e\n                            \u003coption value=\"25\"\u003e25p\u003c/option\u003e\n                            \u003coption value=\"30\"\u003e30p\u003c/option\u003e\n                            \u003coption value=\"35\"\u003e35p\u003c/option\u003e\n                            \u003coption value=\"40\"\u003e40p\u003c/option\u003e\n                            \u003coption value=\"45\"\u003e45p\u003c/option\u003e\n                            \u003coption value=\"50\"\u003e50p\u003c/option\u003e\n                            \u003coption value=\"55\"\u003e55p\u003c/option\u003e\n                            \u003coption value=\"60\"\u003e60p\u003c/option\u003e\n                            \u003coption value=\"65\"\u003e65p\u003c/option\u003e\n                            \u003coption value=\"70\"\u003e70p\u003c/option\u003e\n                            \u003coption value=\"75\"\u003e75p\u003c/option\u003e\n                        \u003c/select\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__section-title\"\u003ePasso 3: Selecionar resultado\u003c/div\u003e\n            \u003cdiv class=\"eachway__outcome-tabs\"\u003e\n                \u003cbutton type=\"button\" class=\"eachway__outcome-tab active\" data-outcome=\"win\"\u003eGanha\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"eachway__outcome-tab\" data-outcome=\"place\"\u003eColoca (sem ganhar)\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"eachway__outcome-tab lose\" data-outcome=\"lose\"\u003ePerde\u003c/button\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"eachway__outcome-hint\"\u003eSelecionar resultado: Vitória = ambas apostas pagam, Lugar = apenas lugar paga, Perda = nada\u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__output-title\"\u003eResultados\u003c/div\u003e\n            \u003cdiv class=\"eachway__output-grid\"\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003eAposta Total\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__total-stake\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003eOdd lugar\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__place-odds\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003eRetorno por Vitória\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__win-return\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003eRetorno por Lugar\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__place-return\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"eachway__profit-box\"\u003e\n                \u003cdiv class=\"eachway__profit-label\"\u003eRetorno Total / Lucro\u003c/div\u003e\n                \u003cdiv class=\"eachway__profit-value\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"eachway__info\"\u003e\n                Aposta Each Way = Aposta vitória \u0026#43; Aposta lugar a fração da odd vitória. A aposta total é dobrada.\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"eachway__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.eachway__odds-type');\n    const oddsInput = container.querySelector('.eachway__odds');\n    const oddsHint = container.querySelector('.eachway__odds-hint');\n    const stakeInput = container.querySelector('.eachway__stake');\n    const placeTermsSelect = container.querySelector('.eachway__place-terms');\n    const placesSelect = container.querySelector('.eachway__places');\n\n    const rule4Toggle = container.querySelector('.eachway__rule4-toggle');\n    const rule4Controls = container.querySelector('.eachway__rule4-controls');\n    const rule4WinSelect = container.querySelector('.eachway__rule4-win');\n    const rule4PlaceSelect = container.querySelector('.eachway__rule4-place');\n\n    const outcomeTabs = container.querySelectorAll('.eachway__outcome-tab');\n    const resetBtn = container.querySelector('.eachway__reset');\n\n    const totalStakeEl = container.querySelector('.eachway__total-stake');\n    const placeOddsEl = container.querySelector('.eachway__place-odds');\n    const winReturnEl = container.querySelector('.eachway__win-return');\n    const placeReturnEl = container.querySelector('.eachway__place-return');\n    const profitBox = container.querySelector('.eachway__profit-box');\n    const profitValue = container.querySelector('.eachway__profit-value');\n\n    let selectedOutcome = 'win';\n\n    const placeholders = {\n        'Fractional': '10/1',\n        'Decimal': '11.00',\n        'American': '+1000'\n    };\n\n    const hints = {\n        'Fractional': 'Insira odds fracionárias (ex. 10\\/1, 5\\/1, 3\\/1)',\n        'Decimal': 'Insira odds decimais (ex. 11.00, 6.00, 4.00)',\n        'American': 'Insira odds americanas (ex. \\u002b1000, \\u002b500, \\u002b300)'\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds() {\n        const type = oddsTypeSelect.value;\n        const odds = oddsInput.value.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function calculate() {\n        const decimalOdds = getDecimalOdds();\n        const stake = parseFloat(stakeInput.value);\n        const placeFraction = parseFloat(placeTermsSelect.value);\n\n        \n        if (decimalOdds === null || decimalOdds \u003c= 1) {\n            if (oddsInput.value.trim() !== '') {\n                oddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            oddsInput.classList.remove('invalid');\n        }\n\n        \n        if (isNaN(stake) || stake \u003c= 0) {\n            resetOutput();\n            return;\n        }\n\n        const totalStake = stake * 2; \n        const placeDecimalOdds = 1 + (decimalOdds - 1) * placeFraction;\n\n        \n        const showRule4 = rule4Toggle.value === 'yes';\n        const rule4Win = showRule4 ? parseFloat(rule4WinSelect.value) / 100 : 0;\n        const rule4Place = showRule4 ? parseFloat(rule4PlaceSelect.value) / 100 : 0;\n\n        \n        let winReturn = 0;\n        let placeReturn = 0;\n\n        if (selectedOutcome === 'win') {\n            \n            const winProfit = (decimalOdds - 1) * stake * (1 - rule4Win);\n            winReturn = stake + winProfit;\n\n            const placeProfit = (placeDecimalOdds - 1) * stake * (1 - rule4Place);\n            placeReturn = stake + placeProfit;\n        } else if (selectedOutcome === 'place') {\n            \n            winReturn = 0; \n\n            const placeProfit = (placeDecimalOdds - 1) * stake * (1 - rule4Place);\n            placeReturn = stake + placeProfit;\n        } else {\n            \n            winReturn = 0;\n            placeReturn = 0;\n        }\n\n        const totalReturn = winReturn + placeReturn;\n        const profit = totalReturn - totalStake;\n\n        \n        totalStakeEl.textContent = '$' + totalStake.toFixed(2);\n        placeOddsEl.textContent = placeDecimalOdds.toFixed(2);\n        winReturnEl.textContent = '$' + winReturn.toFixed(2);\n        placeReturnEl.textContent = '$' + placeReturn.toFixed(2);\n\n        profitValue.textContent = '$' + totalReturn.toFixed(2) + ' / ' + (profit \u003e= 0 ? '+$' : '-$') + Math.abs(profit).toFixed(2);\n\n        if (profit \u003e= 0) {\n            profitBox.classList.remove('loss');\n        } else {\n            profitBox.classList.add('loss');\n        }\n    }\n\n    function resetOutput() {\n        totalStakeEl.textContent = '-';\n        placeOddsEl.textContent = '-';\n        winReturnEl.textContent = '-';\n        placeReturnEl.textContent = '-';\n        profitValue.textContent = '-';\n        profitBox.classList.remove('loss');\n    }\n\n    function resetAll() {\n        oddsInput.value = '';\n        stakeInput.value = '';\n        oddsInput.classList.remove('invalid');\n        oddsTypeSelect.selectedIndex = 0;\n        placeTermsSelect.selectedIndex = 0;\n        placesSelect.selectedIndex = 1;\n        rule4Toggle.selectedIndex = 0;\n        rule4WinSelect.selectedIndex = 0;\n        rule4PlaceSelect.selectedIndex = 0;\n        rule4Controls.classList.remove('active');\n\n        outcomeTabs.forEach(tab =\u003e tab.classList.remove('active'));\n        outcomeTabs[0].classList.add('active');\n        selectedOutcome = 'win';\n\n        updatePlaceholder();\n        resetOutput();\n    }\n\n    \n    function updatePlaceholder() {\n        const type = oddsTypeSelect.value;\n        oddsInput.placeholder = placeholders[type];\n        oddsHint.textContent = hints[type];\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        updatePlaceholder();\n        calculate();\n    });\n\n    oddsInput.addEventListener('input', calculate);\n    stakeInput.addEventListener('input', calculate);\n    placeTermsSelect.addEventListener('change', calculate);\n    placesSelect.addEventListener('change', calculate);\n\n    rule4Toggle.addEventListener('change', function() {\n        if (this.value === 'yes') {\n            rule4Controls.classList.add('active');\n        } else {\n            rule4Controls.classList.remove('active');\n        }\n        calculate();\n    });\n\n    rule4WinSelect.addEventListener('change', calculate);\n    rule4PlaceSelect.addEventListener('change', calculate);\n\n    outcomeTabs.forEach(tab =\u003e {\n        tab.addEventListener('click', function() {\n            outcomeTabs.forEach(t =\u003e t.classList.remove('active'));\n            this.classList.add('active');\n            selectedOutcome = this.dataset.outcome;\n            calculate();\n        });\n    });\n\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    updatePlaceholder();\n})();\n\u003c/script\u003e","title":"Calculadora Each Way - Apostas de Corridas de Cavalos"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Seleção 5 Seleção 6 Seleção 7 Seleção 8 Aposta por linha Número de apostas 247 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/goliath-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"goliath_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 7\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 8\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"1\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e247\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5, 6, 7, 8];\n    var root = document.getElementById('goliath_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Goliath - 247 Apostas de 8 Seleções"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Seleção 5 Seleção 6 Aposta por linha Número de apostas 57 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/heinz-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"heinz_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e57\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5, 6];\n    var root = document.getElementById('heinz_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Heinz - 57 Apostas de 6 Seleções"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Aposta por linha Número de apostas 15 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/lucky-15-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"lucky15_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e15\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3, 4];\n    var root = document.getElementById('lucky15_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Lucky 15 - 15 Apostas de 4 Seleções"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Seleção 5 Aposta por linha Número de apostas 31 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/lucky-31-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"lucky31_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e31\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3, 4, 5];\n    var root = document.getElementById('lucky31_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Lucky 31 - 31 Apostas de 5 Seleções"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Seleção 5 Seleção 6 Aposta por linha Número de apostas 63 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/lucky-63-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"lucky63_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e63\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3, 4, 5, 6];\n    var root = document.getElementById('lucky63_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Lucky 63 - 63 Apostas de 6 Seleções"},{"content":" Calculadora de Matched Betting Passo 1: Selecionar tipo de aposta Escolher entre aposta de qualificação (inicial) ou aposta grátis (bônus) Aposta de Qualificação Aposta Grátis? Free Bet Type Aposta Não Devolvida (SNR) Aposta Devolvida (SR) SNR = apenas lucro devolvido, SR = pagamento completo incluindo aposta Passo 2: Inserir odds e aposta Odds Back (Casa) Odds decimais na casa de apostas (ex. 3.00) Odds Lay (Exchange) Odds decimais na exchange (ex. 3.10) Aposta Back Valor a apostar na casa de apostas Comissão da Exchange (%) Comissão da exchange (Betfair ~5%, Smarkets ~2%) Resultados Aposta Lay - Responsabilidade Lay - Lucro se Back Ganha - Lucro se Lay Ganha - Perda de Qualificação - Classificação: - As apostas combinadas garantem lucro apostando na casa e contra na exchange. Odds mais próximas = menor perda/maior lucro. Reiniciar ","permalink":"https://calculators-odds.com/pt/matched-betting-calculator/","summary":"\u003cstyle\u003e\n    .matched {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .matched__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .matched__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .matched__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .matched__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .matched__type-tabs {\n        display: flex;\n        gap: 10px;\n        margin-bottom: 15px;\n    }\n\n    .matched__type-tab {\n        flex: 1;\n        padding: 14px;\n        border: 2px solid #2196F3;\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        font-weight: bold;\n        transition: all 0.2s;\n    }\n\n    .matched__type-tab:hover {\n        background: rgba(33, 150, 243, 0.2);\n    }\n\n    .matched__type-tab.active {\n        background: #2196F3;\n        color: #fff;\n    }\n\n    .matched__type-hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        text-align: center;\n        margin-bottom: 10px;\n    }\n\n    .matched__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n        flex-wrap: wrap;\n    }\n\n    .matched__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .matched__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .matched__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .matched__input, .matched__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .matched__input:focus, .matched__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .matched__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .matched__select {\n        cursor: pointer;\n    }\n\n    .matched__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .matched__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .matched__free-bet-options {\n        display: none;\n        margin-top: 15px;\n        padding-top: 15px;\n        border-top: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .matched__free-bet-options.active {\n        display: block;\n    }\n\n    .matched__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .matched__output-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .matched__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .matched__output-item.highlight {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .matched__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .matched__output-value {\n        font-size: 20px;\n        font-weight: bold;\n    }\n\n    .matched__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .matched__output-value.negative {\n        color: #f44336;\n    }\n\n    .matched__profit-box {\n        margin-top: 15px;\n        padding: 20px;\n        border-radius: 8px;\n        text-align: center;\n    }\n\n    .matched__profit-box.qualifying {\n        background: rgba(255, 152, 0, 0.15);\n        border: 2px solid #ff9800;\n    }\n\n    .matched__profit-box.freebet {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .matched__profit-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .matched__profit-value {\n        font-size: 28px;\n        font-weight: bold;\n    }\n\n    .matched__profit-box.qualifying .matched__profit-value {\n        color: #ff9800;\n    }\n\n    .matched__profit-box.freebet .matched__profit-value {\n        color: #4CAF50;\n    }\n\n    .matched__rating {\n        margin-top: 15px;\n        padding: 10px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 4px;\n        font-size: 14px;\n        text-align: center;\n    }\n\n    .matched__rating-value {\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .matched__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .matched__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .matched__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .matched__row {\n            flex-direction: column;\n        }\n        .matched__output-grid {\n            grid-template-columns: 1fr;\n        }\n        .matched__type-tabs {\n            flex-direction: column;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"matched\"\u003e\n    \u003cdiv class=\"matched__title\"\u003eCalculadora de Matched Betting\u003c/div\u003e\n\n    \u003cdiv class=\"matched__container\"\u003e\n        \n        \u003cdiv class=\"matched__section\"\u003e\n            \u003cdiv class=\"matched__section-title\"\u003ePasso 1: Selecionar tipo de aposta\u003c/div\u003e\n            \u003cdiv class=\"matched__type-hint\"\u003eEscolher entre aposta de qualificação (inicial) ou aposta grátis (bônus)\u003c/div\u003e\n            \u003cdiv class=\"matched__type-tabs\"\u003e\n                \u003cbutton type=\"button\" class=\"matched__type-tab active\" data-type=\"qualifying\"\u003eAposta de Qualificação\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"matched__type-tab\" data-type=\"freebet\"\u003eAposta Grátis?\u003c/button\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__free-bet-options\"\u003e\n                \u003cdiv class=\"matched__row\"\u003e\n                    \u003cdiv class=\"matched__input-group\"\u003e\n                        \u003clabel class=\"matched__label\"\u003eFree Bet Type\u003c/label\u003e\n                        \u003cselect class=\"matched__select matched__freebet-type\"\u003e\n                            \u003coption value=\"snr\"\u003eAposta Não Devolvida (SNR)\u003c/option\u003e\n                            \u003coption value=\"sr\"\u003eAposta Devolvida (SR)\u003c/option\u003e\n                        \u003c/select\u003e\n                        \u003cspan class=\"matched__hint\"\u003eSNR = apenas lucro devolvido, SR = pagamento completo incluindo aposta\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"matched__section\"\u003e\n            \u003cdiv class=\"matched__section-title\"\u003ePasso 2: Inserir odds e aposta\u003c/div\u003e\n            \u003cdiv class=\"matched__row\"\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003eOdds Back (Casa)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__back-odds\" placeholder=\"3.00\" min=\"1.01\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003eOdds decimais na casa de apostas (ex. 3.00)\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003eOdds Lay (Exchange)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__lay-odds\" placeholder=\"3.10\" min=\"1.01\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003eOdds decimais na exchange (ex. 3.10)\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"matched__row\"\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003eAposta Back\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__back-stake\" placeholder=\"10.00\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003eValor a apostar na casa de apostas\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003eComissão da Exchange (%)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__commission\" placeholder=\"5\" value=\"5\" min=\"0\" max=\"100\" step=\"0.1\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003eComissão da exchange (Betfair ~5%, Smarkets ~2%)\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"matched__section\"\u003e\n            \u003cdiv class=\"matched__output-title\"\u003eResultados\u003c/div\u003e\n            \u003cdiv class=\"matched__output-grid\"\u003e\n                \u003cdiv class=\"matched__output-item highlight\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003eAposta Lay\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__lay-stake-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__output-item\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003eResponsabilidade Lay\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__liability-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__output-item\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003eLucro se Back Ganha\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__profit-back\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__output-item\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003eLucro se Lay Ganha\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__profit-lay\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__profit-box qualifying\"\u003e\n                \u003cdiv class=\"matched__profit-label matched__main-label\"\u003ePerda de Qualificação\u003c/div\u003e\n                \u003cdiv class=\"matched__profit-value matched__main-result\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__rating\"\u003e\n                Classificação: \u003cspan class=\"matched__rating-value\"\u003e-\u003c/span\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__info\"\u003e\n                As apostas combinadas garantem lucro apostando na casa e contra na exchange. Odds mais próximas = menor perda/maior lucro.\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"matched__reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const typeTabs = container.querySelectorAll('.matched__type-tab');\n    const freeBetOptions = container.querySelector('.matched__free-bet-options');\n    const freeBetTypeSelect = container.querySelector('.matched__freebet-type');\n\n    const backOddsInput = container.querySelector('.matched__back-odds');\n    const layOddsInput = container.querySelector('.matched__lay-odds');\n    const backStakeInput = container.querySelector('.matched__back-stake');\n    const commissionInput = container.querySelector('.matched__commission');\n\n    const layStakeResult = container.querySelector('.matched__lay-stake-result');\n    const liabilityResult = container.querySelector('.matched__liability-result');\n    const profitBackEl = container.querySelector('.matched__profit-back');\n    const profitLayEl = container.querySelector('.matched__profit-lay');\n    const profitBox = container.querySelector('.matched__profit-box');\n    const mainLabel = container.querySelector('.matched__main-label');\n    const mainResult = container.querySelector('.matched__main-result');\n    const ratingValue = container.querySelector('.matched__rating-value');\n\n    const resetBtn = container.querySelector('.matched__reset');\n\n    let betType = 'qualifying';\n\n    function calculate() {\n        const backOdds = parseFloat(backOddsInput.value);\n        const layOdds = parseFloat(layOddsInput.value);\n        const backStake = parseFloat(backStakeInput.value);\n        const commission = parseFloat(commissionInput.value) / 100;\n\n        \n        if (isNaN(backOdds) || backOdds \u003c= 1) {\n            if (backOddsInput.value.trim() !== '') {\n                backOddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            backOddsInput.classList.remove('invalid');\n        }\n\n        if (isNaN(layOdds) || layOdds \u003c= 1) {\n            if (layOddsInput.value.trim() !== '') {\n                layOddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            layOddsInput.classList.remove('invalid');\n        }\n\n        if (isNaN(backStake) || backStake \u003c= 0) {\n            resetOutput();\n            return;\n        }\n\n        const commissionRate = isNaN(commission) ? 0.05 : commission;\n\n        let layStake, liability, profitBack, profitLay, mainProfit, rating;\n\n        if (betType === 'qualifying') {\n            \n            layStake = (backStake * backOdds) / (layOdds - commissionRate);\n            liability = layStake * (layOdds - 1);\n\n            \n            profitBack = backStake * (backOdds - 1) - liability;\n\n            \n            profitLay = layStake * (1 - commissionRate) - backStake;\n\n            mainProfit = Math.min(profitBack, profitLay);\n            rating = ((Math.abs(mainProfit) / backStake) * 100).toFixed(2);\n\n            mainLabel.textContent = 'Perda de Qualificação';\n            profitBox.classList.remove('freebet');\n            profitBox.classList.add('qualifying');\n        } else {\n            \n            const freeBetType = freeBetTypeSelect.value;\n\n            if (freeBetType === 'snr') {\n                \n                layStake = (backStake * (backOdds - 1)) / (layOdds - commissionRate);\n                liability = layStake * (layOdds - 1);\n\n                \n                profitBack = backStake * (backOdds - 1) - liability;\n\n                \n                profitLay = layStake * (1 - commissionRate);\n\n            } else {\n                \n                layStake = (backStake * backOdds) / (layOdds - commissionRate);\n                liability = layStake * (layOdds - 1);\n\n                profitBack = backStake * (backOdds - 1) - liability;\n                profitLay = layStake * (1 - commissionRate);\n            }\n\n            mainProfit = Math.min(profitBack, profitLay);\n            rating = ((mainProfit / backStake) * 100).toFixed(2);\n\n            mainLabel.textContent = 'Guaranteed Profit';\n            profitBox.classList.remove('qualifying');\n            profitBox.classList.add('freebet');\n        }\n\n        \n        layStakeResult.textContent = '$' + layStake.toFixed(2);\n        liabilityResult.textContent = '$' + liability.toFixed(2);\n\n        profitBackEl.textContent = (profitBack \u003e= 0 ? '+$' : '-$') + Math.abs(profitBack).toFixed(2);\n        profitBackEl.className = 'matched__output-value ' + (profitBack \u003e= 0 ? 'positive' : 'negative');\n\n        profitLayEl.textContent = (profitLay \u003e= 0 ? '+$' : '-$') + Math.abs(profitLay).toFixed(2);\n        profitLayEl.className = 'matched__output-value ' + (profitLay \u003e= 0 ? 'positive' : 'negative');\n\n        mainResult.textContent = (mainProfit \u003e= 0 ? '+$' : '-$') + Math.abs(mainProfit).toFixed(2);\n        ratingValue.textContent = rating + '%';\n    }\n\n    function resetOutput() {\n        layStakeResult.textContent = '-';\n        liabilityResult.textContent = '-';\n        profitBackEl.textContent = '-';\n        profitBackEl.className = 'matched__output-value';\n        profitLayEl.textContent = '-';\n        profitLayEl.className = 'matched__output-value';\n        mainResult.textContent = '-';\n        ratingValue.textContent = '-';\n    }\n\n    function resetAll() {\n        backOddsInput.value = '';\n        layOddsInput.value = '';\n        backStakeInput.value = '';\n        commissionInput.value = '5';\n        backOddsInput.classList.remove('invalid');\n        layOddsInput.classList.remove('invalid');\n\n        typeTabs.forEach(tab =\u003e tab.classList.remove('active'));\n        typeTabs[0].classList.add('active');\n        betType = 'qualifying';\n        freeBetOptions.classList.remove('active');\n\n        mainLabel.textContent = 'Perda de Qualificação';\n        profitBox.classList.remove('freebet');\n        profitBox.classList.add('qualifying');\n\n        resetOutput();\n    }\n\n    \n    typeTabs.forEach(tab =\u003e {\n        tab.addEventListener('click', function() {\n            typeTabs.forEach(t =\u003e t.classList.remove('active'));\n            this.classList.add('active');\n            betType = this.dataset.type;\n\n            if (betType === 'freebet') {\n                freeBetOptions.classList.add('active');\n            } else {\n                freeBetOptions.classList.remove('active');\n            }\n            calculate();\n        });\n    });\n\n    backOddsInput.addEventListener('input', calculate);\n    layOddsInput.addEventListener('input', calculate);\n    backStakeInput.addEventListener('input', calculate);\n    commissionInput.addEventListener('input', calculate);\n    freeBetTypeSelect.addEventListener('change', calculate);\n\n    resetBtn.addEventListener('click', resetAll);\n})();\n\u003c/script\u003e","title":"Calculadora Matched Betting - Apostas Grátis e Lay"},{"content":" Odds Moneyline Tipo de Aposta Risco Para Ganhar Valor de Risco Você Arrisca - Para Ganhar - Pagamento - Probabilidade Implícita - Cotas decimais - Reiniciar ","permalink":"https://calculators-odds.com/pt/moneyline-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"moneyline_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds Moneyline\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"-150\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eTipo de Aposta\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-bettype\"\u003e\n            \u003coption value=\"risk\"\u003eRisco\u003c/option\u003e\n            \u003coption value=\"towin\"\u003ePara Ganhar\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label js-amountlabel\"\u003eValor de Risco\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-amount\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eVocê Arrisca\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-risk\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePara Ganhar\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-towin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProbabilidade Implícita\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-prob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eCotas decimais\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-decimal\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('moneyline_0');\n    var oddsEl = root.querySelector('.js-odds');\n    var betTypeEl = root.querySelector('.js-bettype');\n    var amountEl = root.querySelector('.js-amount');\n    var amountLabelEl = root.querySelector('.js-amountlabel');\n    var riskEl = root.querySelector('.js-risk');\n    var toWinEl = root.querySelector('.js-towin');\n    var payoutEl = root.querySelector('.js-payout');\n    var probEl = root.querySelector('.js-prob');\n    var decimalEl = root.querySelector('.js-decimal');\n    var resetBtn = root.querySelector('.js-reset');\n\n    betTypeEl.addEventListener('change', function() {\n        amountLabelEl.textContent = betTypeEl.value === 'risk' ? 'Valor de Risco' : 'Valor a Ganhar';\n        update();\n    });\n\n    function update() {\n        var ml = parseInt(oddsEl.value);\n        var amount = parseFloat(amountEl.value);\n        var betType = betTypeEl.value;\n\n        if (isNaN(ml) || ml === 0) {\n            oddsEl.classList.toggle('invalid', !!oddsEl.value.trim());\n            riskEl.textContent='-'; toWinEl.textContent='-'; payoutEl.textContent='-'; probEl.textContent='-'; decimalEl.textContent='-'; return;\n        }\n        oddsEl.classList.remove('invalid');\n\n        var dec;\n        if (ml \u003e 0) dec = (ml / 100) + 1;\n        else dec = (100 / Math.abs(ml)) + 1;\n\n        var prob;\n        if (ml \u003c 0) prob = Math.abs(ml) / (Math.abs(ml) + 100);\n        else prob = 100 / (ml + 100);\n\n        decimalEl.textContent = dec.toFixed(3);\n        probEl.textContent = (prob * 100).toFixed(1) + '%';\n\n        if (!amount || amount \u003c= 0) { riskEl.textContent='-'; toWinEl.textContent='-'; payoutEl.textContent='-'; return; }\n\n        var risk, toWin, payout;\n        if (betType === 'risk') {\n            risk = amount;\n            toWin = amount * (dec - 1);\n            payout = amount * dec;\n        } else {\n            toWin = amount;\n            risk = amount / (dec - 1);\n            payout = risk + toWin;\n        }\n\n        riskEl.textContent = formatNumber(risk);\n        toWinEl.textContent = formatNumber(toWin);\n        payoutEl.textContent = formatNumber(payout);\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        oddsEl.value=''; amountEl.value=''; betTypeEl.selectedIndex=0;\n        oddsEl.classList.remove('invalid');\n        riskEl.textContent='-'; toWinEl.textContent='-'; payoutEl.textContent='-'; probEl.textContent='-'; decimalEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Moneyline - Calcular Pagamentos de Odds Americanas"},{"content":" Formato de Odds Americano Decimal Fracionário Linha de Total Odds Mais Odds Menos Aposta Pagamento (Mais) - Pagamento (Menos) - Prob. Impl. Mais - Prob. Impl. Menos - Margem da Casa - Reiniciar ","permalink":"https://calculators-odds.com/pt/over-under-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"overunder_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eLinha de Total\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-line\" type=\"text\" placeholder=\"2.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds Mais\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-overodds\" type=\"text\" placeholder=\"-110\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds Menos\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-underodds\" type=\"text\" placeholder=\"-110\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento (Mais)\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-overpayout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento (Menos)\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-underpayout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Impl. Mais\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-overprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Impl. Menos\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-underprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMargem da Casa\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-breakeven\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('overunder_0');\n    var formatEl = root.querySelector('.js-format');\n    var lineEl = root.querySelector('.js-line');\n    var overOddsEl = root.querySelector('.js-overodds');\n    var underOddsEl = root.querySelector('.js-underodds');\n    var stakeEl = root.querySelector('.js-stake');\n    var overPayoutEl = root.querySelector('.js-overpayout');\n    var underPayoutEl = root.querySelector('.js-underpayout');\n    var overProbEl = root.querySelector('.js-overprob');\n    var underProbEl = root.querySelector('.js-underprob');\n    var breakevenEl = root.querySelector('.js-breakeven');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var overDec = convertToDecimal(overOddsEl.value.trim(), format);\n        var underDec = convertToDecimal(underOddsEl.value.trim(), format);\n        var stake = parseFloat(stakeEl.value);\n\n        if (!overDec) overOddsEl.classList.toggle('invalid', !!overOddsEl.value.trim());\n        else overOddsEl.classList.remove('invalid');\n        if (!underDec) underOddsEl.classList.toggle('invalid', !!underOddsEl.value.trim());\n        else underOddsEl.classList.remove('invalid');\n\n        if (overDec) {\n            var overProb = (1 / overDec) * 100;\n            overProbEl.textContent = overProb.toFixed(1) + '%';\n            if (stake \u0026\u0026 stake \u003e 0) {\n                overPayoutEl.textContent = formatNumber(stake * overDec);\n            } else { overPayoutEl.textContent = '-'; }\n        } else { overProbEl.textContent = '-'; overPayoutEl.textContent = '-'; }\n\n        if (underDec) {\n            var underProb = (1 / underDec) * 100;\n            underProbEl.textContent = underProb.toFixed(1) + '%';\n            if (stake \u0026\u0026 stake \u003e 0) {\n                underPayoutEl.textContent = formatNumber(stake * underDec);\n            } else { underPayoutEl.textContent = '-'; }\n        } else { underProbEl.textContent = '-'; underPayoutEl.textContent = '-'; }\n\n        if (overDec \u0026\u0026 underDec) {\n            var margin = ((1/overDec + 1/underDec) - 1) * 100;\n            breakevenEl.textContent = margin.toFixed(2) + '% vig';\n        } else { breakevenEl.textContent = '-'; }\n    }\n\n    formatEl.addEventListener('change', function() {\n        var ph = getOddsPlaceholder(formatEl.value);\n        overOddsEl.placeholder = ph; underOddsEl.placeholder = ph;\n        update();\n    });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        lineEl.value=''; overOddsEl.value=''; underOddsEl.value=''; stakeEl.value='';\n        formatEl.selectedIndex=0; overOddsEl.classList.remove('invalid'); underOddsEl.classList.remove('invalid');\n        overPayoutEl.textContent='-'; underPayoutEl.textContent='-'; overProbEl.textContent='-'; underProbEl.textContent='-'; breakevenEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Over/Under - Calcular Pagamentos de Totais"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Aposta por linha Número de apostas 7 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/patent-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"patent_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e7\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3];\n    var root = document.getElementById('patent_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Patent - 7 Apostas de 3 Seleções"},{"content":" Total Apostado Total Devolvido Número de Apostas Lucro Líquido - ROI % - Aposta Média - Lucro por Aposta - Reiniciar ","permalink":"https://calculators-odds.com/pt/roi-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"roi_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eTotal Apostado\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-wagered\" type=\"text\" placeholder=\"1000\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eTotal Devolvido\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-returned\" type=\"text\" placeholder=\"1100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eNúmero de Apostas\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-numbets\" type=\"text\" placeholder=\"50\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro Líquido\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eROI %\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-roi\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta Média\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-avgstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro por Aposta\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-perbet\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('roi_0');\n    var wageredEl = root.querySelector('.js-wagered');\n    var returnedEl = root.querySelector('.js-returned');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var profitEl = root.querySelector('.js-profit');\n    var roiEl = root.querySelector('.js-roi');\n    var avgStakeEl = root.querySelector('.js-avgstake');\n    var perBetEl = root.querySelector('.js-perbet');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var wagered = parseFloat(wageredEl.value);\n        var returned = parseFloat(returnedEl.value);\n        var numBets = parseInt(numBetsEl.value);\n\n        if (isNaN(wagered) || wagered \u003c= 0 || isNaN(returned) || returned \u003c 0) {\n            profitEl.textContent='-'; roiEl.textContent='-'; avgStakeEl.textContent='-'; perBetEl.textContent='-'; return;\n        }\n\n        var profit = returned - wagered;\n        var roi = (profit / wagered) * 100;\n\n        profitEl.textContent = formatNumber(profit);\n        roiEl.textContent = roi.toFixed(2) + '%';\n\n        if (!isNaN(numBets) \u0026\u0026 numBets \u003e 0) {\n            avgStakeEl.textContent = formatNumber(wagered / numBets);\n            perBetEl.textContent = formatNumber(profit / numBets);\n        } else {\n            avgStakeEl.textContent = '-';\n            perBetEl.textContent = '-';\n        }\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        wageredEl.value=''; returnedEl.value=''; numBetsEl.value='';\n        profitEl.textContent='-'; roiEl.textContent='-'; avgStakeEl.textContent='-'; perBetEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora ROI - Retorno sobre Investimento em Apostas"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Aposta por linha Número de apostas 3 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/round-robin-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"roundrobin_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e3\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2];\n    var root = document.getElementById('roundrobin_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Round Robin - Múltiplos Parlays"},{"content":" Calculadora de Odds Justas (Sem Margem) Passo 1: Selecionar formato de odds Cotas decimais Fracionário Americano Passo 2: Inserir odds da casa de apostas Resultado 1 Odds da Casa Prob. Implícita — Prob. Justa — Odds Justas (Sem Margem) — Resultado 2 Odds da Casa Prob. Implícita — Prob. Justa — Odds Justas (Sem Margem) — + Adicionar Resultado Digite odds decimais (ex. 2.50) Resultados Margem Total — Margem/Juice — Acima de 100% = margem de lucro da casa Reiniciar ","permalink":"https://calculators-odds.com/pt/no-vig-calculator/","summary":"\u003cstyle\u003e\n.novig {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.novig__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.novig__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.novig__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.novig__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.novig__format-btn {\n    flex: 1;\n    min-width: 100px;\n    padding: 10px 15px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.novig__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.novig__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.novig__outcomes-list {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.novig__outcome {\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n    padding: 12px;\n}\n\n.novig__outcome-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 10px;\n}\n\n.novig__outcome-label {\n    font-weight: 600;\n    font-size: 14px;\n    color: #4CAF50;\n}\n\n.novig__outcome-remove {\n    padding: 4px 8px;\n    background: #f44336;\n    color: #fff;\n    border: none;\n    border-radius: 3px;\n    cursor: pointer;\n    font-size: 11px;\n    transition: background 0.2s;\n}\n\n.novig__outcome-remove:hover {\n    background: #d32f2f;\n}\n\n.novig__outcome-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr 1fr 1fr;\n    gap: 10px;\n    align-items: end;\n}\n\n.novig__field {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n}\n\n.novig__field-label {\n    font-size: 10px;\n    color: rgba(232, 232, 232, 0.6);\n    text-transform: uppercase;\n}\n\n.novig__input {\n    width: 100%;\n    padding: 10px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 14px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n    box-sizing: border-box;\n}\n\n.novig__input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.novig__input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.novig__input.invalid {\n    border-color: #f44336;\n}\n\n.novig__value {\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.3);\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 600;\n    text-align: center;\n}\n\n.novig__value.implied {\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.novig__value.fair-prob {\n    color: #4CAF50;\n}\n\n.novig__value.fair-odds {\n    color: #2196F3;\n}\n\n.novig__add-btn {\n    width: 100%;\n    padding: 10px;\n    margin-top: 10px;\n    background: transparent;\n    border: 2px dashed rgba(255, 255, 255, 0.3);\n    color: #e8e8e8;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 14px;\n    transition: all 0.2s;\n}\n\n.novig__add-btn:hover {\n    border-color: #4CAF50;\n    color: #4CAF50;\n}\n\n.novig__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.novig__summary-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 15px;\n}\n\n.novig__summary-box {\n    background: rgba(0, 0, 0, 0.2);\n    padding: 15px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.novig__summary-label {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 5px;\n}\n\n.novig__summary-value {\n    font-size: 24px;\n    font-weight: 700;\n    color: #e8e8e8;\n}\n\n.novig__summary-value.good {\n    color: #4CAF50;\n}\n\n.novig__summary-value.bad {\n    color: #f44336;\n}\n\n.novig__summary-value.warning {\n    color: #ff9800;\n}\n\n.novig__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.novig__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.novig__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.novig__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 600px) {\n    .novig__outcome-grid {\n        grid-template-columns: 1fr 1fr;\n    }\n\n    .novig__summary-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .novig__format-btn {\n        min-width: 80px;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"novig\"\u003e\n    \u003cdiv class=\"novig__title\"\u003eCalculadora de Odds Justas (Sem Margem)\u003c/div\u003e\n\n    \u003cdiv class=\"novig__section\"\u003e\n        \u003cdiv class=\"novig__section-title\"\u003ePasso 1: Selecionar formato de odds\u003c/div\u003e\n        \u003cdiv class=\"novig__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"novig__format-btn active\" data-type=\"decimal\"\u003eCotas decimais\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"novig__format-btn\" data-type=\"fractional\"\u003eFracionário\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"novig__format-btn\" data-type=\"american\"\u003eAmericano\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"novig__section\"\u003e\n        \u003cdiv class=\"novig__section-title\"\u003ePasso 2: Inserir odds da casa de apostas\u003c/div\u003e\n        \u003cdiv class=\"novig__outcomes-list\"\u003e\n            \u003cdiv class=\"novig__outcome\" data-index=\"0\"\u003e\n                \u003cdiv class=\"novig__outcome-header\"\u003e\n                    \u003cspan class=\"novig__outcome-label\"\u003eResultado 1\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__outcome-grid\"\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eOdds da Casa\u003c/span\u003e\n                        \u003cinput type=\"text\" class=\"novig__input novig__odds-input\" data-index=\"0\" placeholder=\"2.50\"\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eProb. Implícita\u003c/span\u003e\n                        \u003cdiv class=\"novig__value implied\" data-index=\"0\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eProb. Justa\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-prob\" data-index=\"0\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eOdds Justas (Sem Margem)\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-odds\" data-index=\"0\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"novig__outcome\" data-index=\"1\"\u003e\n                \u003cdiv class=\"novig__outcome-header\"\u003e\n                    \u003cspan class=\"novig__outcome-label\"\u003eResultado 2\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__outcome-grid\"\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eOdds da Casa\u003c/span\u003e\n                        \u003cinput type=\"text\" class=\"novig__input novig__odds-input\" data-index=\"1\" placeholder=\"2.50\"\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eProb. Implícita\u003c/span\u003e\n                        \u003cdiv class=\"novig__value implied\" data-index=\"1\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eProb. Justa\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-prob\" data-index=\"1\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003eOdds Justas (Sem Margem)\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-odds\" data-index=\"1\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cbutton type=\"button\" class=\"novig__add-btn\"\u003e+ Adicionar Resultado\u003c/button\u003e\n        \u003cdiv class=\"novig__hint novig__hint-format\"\u003eDigite odds decimais (ex. 2.50)\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"novig__section\"\u003e\n        \u003cdiv class=\"novig__section-title\"\u003eResultados\u003c/div\u003e\n        \u003cdiv class=\"novig__summary-grid\"\u003e\n            \u003cdiv class=\"novig__summary-box\"\u003e\n                \u003cdiv class=\"novig__summary-label\"\u003eMargem Total\u003c/div\u003e\n                \u003cdiv class=\"novig__summary-value\" id=\"novigTotalImplied\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"novig__summary-box\"\u003e\n                \u003cdiv class=\"novig__summary-label\"\u003eMargem/Juice\u003c/div\u003e\n                \u003cdiv class=\"novig__summary-value\" id=\"novigVig\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"novig__hint\"\u003eAcima de 100% = margem de lucro da casa\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"novig__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"novig__btn novig__btn--secondary\" id=\"novigReset\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let outcomeCount = 2;\n    const maxOutcomes = 10;\n\n    const placeholders = {\n        decimal: '2.50',\n        fractional: '3\\/2',\n        american: '\\u002b150'\n    };\n\n    const hints = {\n        decimal: 'Digite odds decimais (ex. 2.50)',\n        fractional: 'Digite odds fracionárias (ex. 3\\/2)',\n        american: 'Digite odds americanas (ex. \\u002b150 ou -200)'\n    };\n\n    const outcomeLabels = [\n        'Resultado 1',\n        'Resultado 2',\n        'Resultado 3 (Empate)',\n        'Outcome 4',\n        'Outcome 5',\n        'Outcome 6',\n        'Outcome 7',\n        'Outcome 8',\n        'Outcome 9',\n        'Outcome 10'\n    ];\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateAmerican(value) {\n        const cleaned = value.replace(/^\\+/, '');\n        return /^-?\\d+$/.test(cleaned) \u0026\u0026 (Math.abs(parseInt(cleaned)) \u003e= 100);\n    }\n\n    function fractionalToDecimal(fraction) {\n        const parts = fraction.split('/');\n        return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n    }\n\n    function americanToDecimal(american) {\n        const value = parseInt(american.replace(/^\\+/, ''));\n        return value \u003e 0 ? (value / 100) + 1 : (100 / Math.abs(value)) + 1;\n    }\n\n    function decimalToFractional(decimal) {\n        const profit = decimal - 1;\n        const gcd = (a, b) =\u003e b ? gcd(b, a % b) : a;\n        const precision = 100;\n        const numerator = Math.round(profit * precision);\n        const denominator = precision;\n        const divisor = gcd(numerator, denominator);\n        return `${numerator / divisor}/${denominator / divisor}`;\n    }\n\n    function decimalToAmerican(decimal) {\n        if (decimal \u003e= 2) {\n            return '+' + Math.round((decimal - 1) * 100);\n        }\n        return Math.round(-100 / (decimal - 1)).toString();\n    }\n\n    function getDecimalOdds(value) {\n        if (!value) return null;\n\n        if (currentOddsType === 'decimal') {\n            return validateDecimal(value) ? parseFloat(value) : null;\n        } else if (currentOddsType === 'fractional') {\n            return validateFractional(value) ? fractionalToDecimal(value) : null;\n        } else if (currentOddsType === 'american') {\n            return validateAmerican(value) ? americanToDecimal(value) : null;\n        }\n        return null;\n    }\n\n    function formatOdds(decimalOdds) {\n        if (currentOddsType === 'decimal') {\n            return decimalOdds.toFixed(2);\n        } else if (currentOddsType === 'fractional') {\n            return decimalToFractional(decimalOdds);\n        } else if (currentOddsType === 'american') {\n            return decimalToAmerican(decimalOdds);\n        }\n        return decimalOdds.toFixed(2);\n    }\n\n    function updatePlaceholders() {\n        container.querySelectorAll('.novig__odds-input').forEach(input =\u003e {\n            input.placeholder = placeholders[currentOddsType];\n        });\n\n        const hintEl = container.querySelector('.novig__hint-format');\n        if (hintEl) {\n            hintEl.textContent = hints[currentOddsType];\n        }\n    }\n\n    function addOutcome() {\n        if (outcomeCount \u003e= maxOutcomes) return;\n\n        const outcomesList = container.querySelector('.novig__outcomes-list');\n\n        const newOutcome = document.createElement('div');\n        newOutcome.className = 'novig__outcome';\n        newOutcome.dataset.index = outcomeCount;\n        newOutcome.innerHTML = `\n            \u003cdiv class=\"novig__outcome-header\"\u003e\n                \u003cspan class=\"novig__outcome-label\"\u003e${outcomeLabels[outcomeCount] || 'Outcome ' + (outcomeCount + 1)}\u003c/span\u003e\n                \u003cbutton type=\"button\" class=\"novig__outcome-remove\"\u003e✕\u003c/button\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"novig__outcome-grid\"\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003eOdds da Casa\u003c/span\u003e\n                    \u003cinput type=\"text\" class=\"novig__input novig__odds-input\" data-index=\"${outcomeCount}\" placeholder=\"${placeholders[currentOddsType]}\"\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003eProb. Implícita\u003c/span\u003e\n                    \u003cdiv class=\"novig__value implied\" data-index=\"${outcomeCount}\"\u003e—\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003eProb. Justa\u003c/span\u003e\n                    \u003cdiv class=\"novig__value fair-prob\" data-index=\"${outcomeCount}\"\u003e—\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003eOdds Justas (Sem Margem)\u003c/span\u003e\n                    \u003cdiv class=\"novig__value fair-odds\" data-index=\"${outcomeCount}\"\u003e—\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        `;\n\n        outcomesList.appendChild(newOutcome);\n        outcomeCount++;\n\n        newOutcome.querySelector('.novig__odds-input').addEventListener('input', calculate);\n        newOutcome.querySelector('.novig__outcome-remove').addEventListener('click', function() {\n            removeOutcome(newOutcome);\n        });\n\n        if (outcomeCount \u003e= maxOutcomes) {\n            container.querySelector('.novig__add-btn').style.display = 'none';\n        }\n\n        calculate();\n    }\n\n    function removeOutcome(outcomeEl) {\n        if (outcomeCount \u003c= 2) return;\n\n        outcomeEl.remove();\n        outcomeCount--;\n\n        const outcomes = container.querySelectorAll('.novig__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            outcome.dataset.index = index;\n            outcome.querySelector('.novig__odds-input').dataset.index = index;\n            outcome.querySelectorAll('.novig__value').forEach(v =\u003e v.dataset.index = index);\n        });\n\n        if (outcomeCount \u003c maxOutcomes) {\n            container.querySelector('.novig__add-btn').style.display = 'block';\n        }\n\n        calculate();\n    }\n\n    function calculate() {\n        const inputs = container.querySelectorAll('.novig__odds-input');\n        const impliedCells = container.querySelectorAll('.novig__value.implied');\n        const fairProbCells = container.querySelectorAll('.novig__value.fair-prob');\n        const fairOddsCells = container.querySelectorAll('.novig__value.fair-odds');\n\n        let totalImplied = 0;\n        const impliedProbs = [];\n\n        inputs.forEach((input, index) =\u003e {\n            const value = input.value.trim();\n            const decOdds = getDecimalOdds(value);\n\n            if (value \u0026\u0026 !decOdds) {\n                input.classList.add('invalid');\n                impliedCells[index].textContent = '—';\n                impliedProbs.push(null);\n            } else if (decOdds) {\n                input.classList.remove('invalid');\n                const implied = (1 / decOdds) * 100;\n                totalImplied += implied;\n                impliedProbs.push(implied);\n                impliedCells[index].textContent = implied.toFixed(1) + '%';\n            } else {\n                input.classList.remove('invalid');\n                impliedCells[index].textContent = '—';\n                impliedProbs.push(null);\n            }\n        });\n\n        const totalImpliedEl = container.querySelector('#novigTotalImplied');\n        const vigEl = container.querySelector('#novigVig');\n\n        if (totalImplied \u003e 0) {\n            totalImpliedEl.textContent = totalImplied.toFixed(2) + '%';\n\n            const vig = totalImplied - 100;\n            vigEl.textContent = (vig \u003e= 0 ? '+' : '') + vig.toFixed(2) + '%';\n\n            if (vig \u003e 10) {\n                vigEl.className = 'novig__summary-value bad';\n                totalImpliedEl.className = 'novig__summary-value bad';\n            } else if (vig \u003e 5) {\n                vigEl.className = 'novig__summary-value warning';\n                totalImpliedEl.className = 'novig__summary-value warning';\n            } else if (vig \u003e 0) {\n                vigEl.className = 'novig__summary-value';\n                totalImpliedEl.className = 'novig__summary-value';\n            } else {\n                vigEl.className = 'novig__summary-value good';\n                totalImpliedEl.className = 'novig__summary-value good';\n            }\n\n            impliedProbs.forEach((implied, index) =\u003e {\n                if (implied !== null) {\n                    const fairProb = (implied / totalImplied) * 100;\n                    fairProbCells[index].textContent = fairProb.toFixed(1) + '%';\n\n                    const fairDecimalOdds = 100 / fairProb;\n                    fairOddsCells[index].textContent = formatOdds(fairDecimalOdds);\n                } else {\n                    fairProbCells[index].textContent = '—';\n                    fairOddsCells[index].textContent = '—';\n                }\n            });\n        } else {\n            totalImpliedEl.textContent = '—';\n            totalImpliedEl.className = 'novig__summary-value';\n            vigEl.textContent = '—';\n            vigEl.className = 'novig__summary-value';\n\n            fairProbCells.forEach(cell =\u003e cell.textContent = '—');\n            fairOddsCells.forEach(cell =\u003e cell.textContent = '—');\n        }\n    }\n\n    function reset() {\n        const outcomes = container.querySelectorAll('.novig__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            if (index \u003e= 2) outcome.remove();\n        });\n        outcomeCount = 2;\n\n        container.querySelectorAll('.novig__odds-input').forEach(input =\u003e {\n            input.value = '';\n            input.classList.remove('invalid');\n        });\n\n        container.querySelectorAll('.novig__value.implied').forEach(cell =\u003e cell.textContent = '—');\n        container.querySelectorAll('.novig__value.fair-prob').forEach(cell =\u003e cell.textContent = '—');\n        container.querySelectorAll('.novig__value.fair-odds').forEach(cell =\u003e cell.textContent = '—');\n\n        container.querySelector('#novigTotalImplied').textContent = '—';\n        container.querySelector('#novigTotalImplied').className = 'novig__summary-value';\n        container.querySelector('#novigVig').textContent = '—';\n        container.querySelector('#novigVig').className = 'novig__summary-value';\n\n        container.querySelector('.novig__add-btn').style.display = 'block';\n    }\n\n    \n    container.querySelectorAll('.novig__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.novig__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            updatePlaceholders();\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.novig__odds-input').forEach(input =\u003e {\n        input.addEventListener('input', calculate);\n    });\n\n    container.querySelector('.novig__add-btn').addEventListener('click', addOutcome);\n    container.querySelector('#novigReset').addEventListener('click', reset);\n})();\n\u003c/script\u003e","title":"Calculadora Sem Vig - Encontrar Odds Justas"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Seleção 5 Seleção 6 Seleção 7 Aposta por linha Número de apostas 120 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/super-heinz-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"superheinz_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 7\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e120\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5, 6, 7];\n    var root = document.getElementById('superheinz_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Super Heinz - 120 Apostas de 7 Seleções"},{"content":" Tipo de evento 2 vias (1-2) 3 vias (1-X-2) Formato de Odds Decimal Fracionário Americano Aposta total Resultado 1 Empate (X) Resultado 2 Margem - Aposta 1 - Aposta X - Aposta 2 - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/surebet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"surebet_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eTipo de evento\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-eventtype\"\u003e\n            \u003coption value=\"2\"\u003e2 vias (1-2)\u003c/option\u003e\n            \u003coption value=\"3\"\u003e3 vias (1-X-2)\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta total\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-totalstake\" type=\"text\" placeholder=\"1000\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__grid calc-wrap__grid--3 js-oddsgrid\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eResultado 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row calc-wrap__row--hidden js-xrow\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eEmpate (X)\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-oddsx\" type=\"text\" placeholder=\"3.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eResultado 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMargem\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-margin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item js-result-msg\" style=\"display:none\"\u003e\n            \u003cspan class=\"calc-wrap__result-value js-msg\"\u003e\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results js-stakes-output\" style=\"display:none\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta 1\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-s1\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item js-sx-item\" style=\"display:none\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta X\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-sx\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta 2\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-s2\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('surebet_0');\n    var eventTypeEl = root.querySelector('.js-eventtype');\n    var formatEl = root.querySelector('.js-format');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var odds1El = root.querySelector('.js-odds1');\n    var oddsXEl = root.querySelector('.js-oddsx');\n    var odds2El = root.querySelector('.js-odds2');\n    var xRow = root.querySelector('.js-xrow');\n    var marginEl = root.querySelector('.js-margin');\n    var msgContainer = root.querySelector('.js-result-msg');\n    var msgEl = root.querySelector('.js-msg');\n    var stakesOutput = root.querySelector('.js-stakes-output');\n    var s1El = root.querySelector('.js-s1');\n    var sxEl = root.querySelector('.js-sx');\n    var sxItem = root.querySelector('.js-sx-item');\n    var s2El = root.querySelector('.js-s2');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var is3way = eventTypeEl.value === '3';\n        xRow.classList.toggle('calc-wrap__row--hidden', !is3way);\n        sxItem.style.display = is3way ? '' : 'none';\n\n        var d1 = convertToDecimal(odds1El.value.trim(), format);\n        var d2 = convertToDecimal(odds2El.value.trim(), format);\n        var dx = is3way ? convertToDecimal(oddsXEl.value.trim(), format) : null;\n\n        [odds1El, odds2El, oddsXEl].forEach(function(el) { el.classList.remove('invalid'); });\n        if (odds1El.value.trim() \u0026\u0026 !d1) odds1El.classList.add('invalid');\n        if (odds2El.value.trim() \u0026\u0026 !d2) odds2El.classList.add('invalid');\n        if (is3way \u0026\u0026 oddsXEl.value.trim() \u0026\u0026 !dx) oddsXEl.classList.add('invalid');\n\n        if (!d1 || !d2 || (is3way \u0026\u0026 !dx)) {\n            marginEl.textContent = '-'; msgContainer.style.display = 'none'; stakesOutput.style.display = 'none';\n            return;\n        }\n\n        var invertedSum = 1/d1 + 1/d2;\n        if (is3way) invertedSum += 1/dx;\n\n        var margin = (1 - invertedSum) * 100;\n        marginEl.textContent = margin.toFixed(2) + '%';\n\n        msgContainer.style.display = '';\n        if (margin \u003e 0) {\n            marginEl.style.color = '#4CAF50';\n            msgEl.textContent = 'Surebet encontrada! Lucro garantido possível.';\n            msgEl.style.color = '#4CAF50';\n        } else {\n            marginEl.style.color = '#f44336';\n            msgEl.textContent = 'Sem surebet. Essas odds resultam em perda.';\n            msgEl.style.color = '#f44336';\n        }\n\n        var totalStake = parseFloat(totalStakeEl.value);\n        if (!totalStake || totalStake \u003c= 0) { stakesOutput.style.display = 'none'; return; }\n\n        stakesOutput.style.display = '';\n        var stake1 = (totalStake / invertedSum) * (1/d1);\n        var stake2 = (totalStake / invertedSum) * (1/d2);\n        s1El.textContent = formatNumber(stake1);\n        s2El.textContent = formatNumber(stake2);\n\n        if (is3way) {\n            var stakeX = (totalStake / invertedSum) * (1/dx);\n            sxEl.textContent = formatNumber(stakeX);\n        }\n\n        var payout = totalStake / invertedSum;\n        profitEl.textContent = formatNumber(payout - totalStake);\n    }\n\n    eventTypeEl.addEventListener('change', update);\n    formatEl.addEventListener('change', function() {\n        var ph = getOddsPlaceholder(formatEl.value);\n        [odds1El, odds2El, oddsXEl].forEach(function(el){el.placeholder=ph;});\n        update();\n    });\n    [odds1El, odds2El, oddsXEl, totalStakeEl].forEach(function(el){el.addEventListener('input', update);});\n\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; oddsXEl.value=''; totalStakeEl.value='';\n        formatEl.selectedIndex=0; eventTypeEl.selectedIndex=0;\n        [odds1El, odds2El, oddsXEl].forEach(function(el){el.classList.remove('invalid');});\n        marginEl.textContent='-'; msgContainer.style.display='none'; stakesOutput.style.display='none';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Surebet - Calcular Stakes de Lucro Garantido"},{"content":" Pontos do Teaser 6 6.5 7 10 13 Número de Pernas 2 3 4 5 6 Aposta Odds do Teaser - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/teaser-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"teaser_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003ePontos do Teaser\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-points\"\u003e\n            \u003coption value=\"6\"\u003e6\u003c/option\u003e\n            \u003coption value=\"6.5\"\u003e6.5\u003c/option\u003e\n            \u003coption value=\"7\"\u003e7\u003c/option\u003e\n            \u003coption value=\"10\"\u003e10\u003c/option\u003e\n            \u003coption value=\"13\"\u003e13\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eNúmero de Pernas\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-legs\"\u003e\n            \u003coption value=\"2\"\u003e2\u003c/option\u003e\n            \u003coption value=\"3\"\u003e3\u003c/option\u003e\n            \u003coption value=\"4\"\u003e4\u003c/option\u003e\n            \u003coption value=\"5\"\u003e5\u003c/option\u003e\n            \u003coption value=\"6\"\u003e6\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eOdds do Teaser\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-odds\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('teaser_0');\n    var pointsEl = root.querySelector('.js-points');\n    var legsEl = root.querySelector('.js-legs');\n    var stakeEl = root.querySelector('.js-stake');\n    var oddsEl = root.querySelector('.js-odds');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    \n    var TEASER_ODDS = {\n        '6':    { 2: -110, 3: +160, 4: +260, 5: +400, 6: +600 },\n        '6.5':  { 2: -120, 3: +140, 4: +240, 5: +360, 6: +500 },\n        '7':    { 2: -130, 3: +120, 4: +200, 5: +320, 6: +450 },\n        '10':   { 2: -200, 3: -110, 4: +120, 5: +180, 6: +250 },\n        '13':   { 2: -350, 3: -170, 4: -110, 5: +110, 6: +150 }\n    };\n\n    function americanToDecimal(a) {\n        if (a \u003e 0) return (a / 100) + 1;\n        return (100 / Math.abs(a)) + 1;\n    }\n\n    function formatAmerican(a) {\n        return a \u003e 0 ? '+' + a : '' + a;\n    }\n\n    function update() {\n        var pts = pointsEl.value;\n        var legs = parseInt(legsEl.value);\n        var stake = parseFloat(stakeEl.value);\n        var americanOdd = TEASER_ODDS[pts][legs];\n        oddsEl.textContent = formatAmerican(americanOdd);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var dec = americanToDecimal(americanOdd);\n        var payout = stake * dec;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    pointsEl.addEventListener('change', update);\n    legsEl.addEventListener('change', update);\n    stakeEl.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        stakeEl.value=''; pointsEl.selectedIndex=0; legsEl.selectedIndex=0;\n        oddsEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n    update();\n})();\n\u003c/script\u003e","title":"Calculadora Teaser - Calcular Pagamentos e Odds Teaser"},{"content":" Tipo de Tricast Tricast Direto Tricast Combinado Odds 1º Lugar Odds 2º Lugar Odds 3º Lugar Aposta Número de apostas 1 Aposta total - Dividendo Estimado - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/tricast-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"tricast_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eTipo de Tricast\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-type\"\u003e\n            \u003coption value=\"straight\"\u003eTricast Direto\u003c/option\u003e\n            \u003coption value=\"combination\"\u003eTricast Combinado\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds 1º Lugar\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"5.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds 2º Lugar\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"8.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eOdds 3º Lugar\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds3\" type=\"text\" placeholder=\"12.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"1\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-numbets\"\u003e1\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eDividendo Estimado\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dividend\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('tricast_0');\n    var typeEl = root.querySelector('.js-type');\n    var odds1El = root.querySelector('.js-odds1');\n    var odds2El = root.querySelector('.js-odds2');\n    var odds3El = root.querySelector('.js-odds3');\n    var stakeEl = root.querySelector('.js-stake');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var dividendEl = root.querySelector('.js-dividend');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var o1 = parseFloat(odds1El.value);\n        var o2 = parseFloat(odds2El.value);\n        var o3 = parseFloat(odds3El.value);\n        var stake = parseFloat(stakeEl.value);\n        var isCombination = typeEl.value === 'combination';\n        var numBets = isCombination ? 6 : 1;\n        numBetsEl.textContent = numBets;\n\n        if (isNaN(o1) || isNaN(o2) || isNaN(o3) || o1 \u003c= 1 || o2 \u003c= 1 || o3 \u003c= 1) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n        if (!stake || stake \u003c= 0) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n\n        \n        var dividend = o1 * o2 * o3;\n        var totalStake = stake * numBets;\n        var payout = dividend * stake;\n\n        totalStakeEl.textContent = formatNumber(totalStake);\n        dividendEl.textContent = formatNumber(dividend);\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - totalStake);\n    }\n\n    typeEl.addEventListener('change', update);\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; odds3El.value=''; stakeEl.value='';\n        typeEl.selectedIndex=0; numBetsEl.textContent='1';\n        totalStakeEl.textContent='-'; dividendEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Tricast - Calcular Retornos dos Primeiros Três"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Aposta Odd combinada - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/treble-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"treble_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eOdd combinada\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-combined\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('treble_0');\n    const formatEl = root.querySelector('.js-format');\n    const stakeEl = root.querySelector('.js-stake');\n    const combinedEl = root.querySelector('.js-combined');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function getOddsInputs() { return root.querySelectorAll('.js-odds'); }\n\n    function update() {\n        const format = formatEl.value;\n        const oddsInputs = getOddsInputs();\n        let combined = 1, allValid = true;\n\n        oddsInputs.forEach(function(input) {\n            const d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); }\n            if (d) combined *= d; else allValid = false;\n        });\n\n        const stake = parseFloat(stakeEl.value);\n        if (!allValid) { combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        combinedEl.textContent = combined.toFixed(2);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        const payout = combined * stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    formatEl.addEventListener('change', function() {\n        getOddsInputs().forEach(i =\u003e i.placeholder = getOddsPlaceholder(formatEl.value));\n        update();\n    });\n    root.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        getOddsInputs().forEach(i =\u003e { i.value = ''; i.classList.remove('invalid'); });\n        stakeEl.value = ''; formatEl.selectedIndex = 0;\n        combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Tripla - Retornos de 3 Seleções"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Aposta por linha Número de apostas 4 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/trixie-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"trixie_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e4\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3];\n    var root = document.getElementById('trixie_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Trixie - 4 Apostas de 3 Seleções"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 Aposta por linha Número de apostas 11 Aposta total - Pagamento - Lucro - Reiniciar ","permalink":"https://calculators-odds.com/pt/yankee-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"yankee_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta por linha\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eNúmero de apostas\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e11\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eAposta total\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4];\n    var root = document.getElementById('yankee_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Calculadora Yankee - 11 Apostas de 4 Seleções"},{"content":" Decimal Fracionário Americano Probabilidade Implícita - Reiniciar ","permalink":"https://calculators-odds.com/pt/odds-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"converter_0\"\u003e\n    \u003cdiv class=\"calc-wrap__grid calc-wrap__grid--3\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eDecimal\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-decimal\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eFracionário\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-fractional\" type=\"text\" placeholder=\"3/2\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eAmericano\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-american\" type=\"text\" placeholder=\"+150\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProbabilidade Implícita\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-probability\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('converter_0');\n    const decEl = root.querySelector('.js-decimal');\n    const fracEl = root.querySelector('.js-fractional');\n    const amerEl = root.querySelector('.js-american');\n    const probEl = root.querySelector('.js-probability');\n    const resetBtn = root.querySelector('.js-reset');\n    let updating = false;\n\n    function fromDecimal(d, source) {\n        if (source !== decEl) decEl.value = d.toFixed(2);\n        if (source !== fracEl) fracEl.value = convertDecimalToFractional(d) || '-';\n        if (source !== amerEl) amerEl.value = convertDecimalToAmerican(d) || '-';\n        probEl.textContent = (100 / d).toFixed(2) + '%';\n    }\n\n    function clearOthers(source) {\n        if (source !== decEl) decEl.value = '';\n        if (source !== fracEl) fracEl.value = '';\n        if (source !== amerEl) amerEl.value = '';\n        probEl.textContent = '-';\n    }\n\n    decEl.addEventListener('input', function() {\n        if (updating) return; updating = true;\n        const v = decEl.value.trim();\n        if (!v) { clearOthers(decEl); updating = false; return; }\n        const d = parseFloat(v);\n        if (!isNaN(d) \u0026\u0026 d \u003e 1) {\n            decEl.classList.remove('invalid');\n            fromDecimal(d, decEl);\n        } else {\n            decEl.classList.add('invalid');\n            clearOthers(decEl);\n        }\n        updating = false;\n    });\n\n    fracEl.addEventListener('input', function() {\n        if (updating) return; updating = true;\n        const v = fracEl.value.trim();\n        if (!v) { clearOthers(fracEl); updating = false; return; }\n        if (validateFractionalCoefficient(v)) {\n            fracEl.classList.remove('invalid');\n            fromDecimal(convertFractionToDecimal(v), fracEl);\n        } else {\n            fracEl.classList.add('invalid');\n            clearOthers(fracEl);\n        }\n        updating = false;\n    });\n\n    amerEl.addEventListener('input', function() {\n        if (updating) return; updating = true;\n        const v = amerEl.value.trim();\n        if (!v) { clearOthers(amerEl); updating = false; return; }\n        if (validateAmericanCoefficient(v)) {\n            amerEl.classList.remove('invalid');\n            fromDecimal(convertAmericanToDecimal(v), amerEl);\n        } else {\n            amerEl.classList.add('invalid');\n            clearOthers(amerEl);\n        }\n        updating = false;\n    });\n\n    resetBtn.addEventListener('click', function() {\n        decEl.value = ''; fracEl.value = ''; amerEl.value = '';\n        [decEl, fracEl, amerEl].forEach(el =\u003e el.classList.remove('invalid'));\n        probEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"Conversor de Odds - Decimal, Fracionária e Americana"},{"content":" Spread de Pontos Moneyline Favorito - Moneyline Azarão - Prob. Impl. Favorito - Prob. Impl. Azarão - Cota moneyline Spread Estimado - Reiniciar ","permalink":"https://calculators-odds.com/pt/spread-moneyline-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"spreadml_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eSpread de Pontos\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-spread\" type=\"text\" placeholder=\"-3.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMoneyline Favorito\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-favml\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMoneyline Azarão\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dogml\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Impl. Favorito\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-favprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eProb. Impl. Azarão\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dogprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__separator\"\u003e\u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eCota moneyline\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-ml\" type=\"text\" placeholder=\"-150\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eSpread Estimado\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-estspr\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('spreadml_0');\n    var spreadEl = root.querySelector('.js-spread');\n    var favMlEl = root.querySelector('.js-favml');\n    var dogMlEl = root.querySelector('.js-dogml');\n    var favProbEl = root.querySelector('.js-favprob');\n    var dogProbEl = root.querySelector('.js-dogprob');\n    var mlEl = root.querySelector('.js-ml');\n    var estSprEl = root.querySelector('.js-estspr');\n    var resetBtn = root.querySelector('.js-reset');\n\n    \n    \n    function spreadToMoneyline(spread) {\n        var absSpread = Math.abs(spread);\n        \n        var prob = 0.5 + (absSpread * 0.03); \n        if (prob \u003e= 0.99) prob = 0.99;\n        var favML, dogML;\n        if (prob \u003e= 0.5) {\n            favML = Math.round(-100 * prob / (1 - prob));\n            dogML = Math.round(100 * (1 - prob) / prob);\n        } else {\n            favML = Math.round(100 * (1 - prob) / prob);\n            dogML = Math.round(-100 * prob / (1 - prob));\n        }\n        return { favML: favML, dogML: dogML \u003e 0 ? '+' + dogML : '' + dogML, favProb: prob, dogProb: 1 - prob, favMLstr: favML \u003c 0 ? '' + favML : '+' + favML };\n    }\n\n    function moneylineToSpread(ml) {\n        var prob;\n        if (ml \u003c 0) prob = Math.abs(ml) / (Math.abs(ml) + 100);\n        else prob = 100 / (ml + 100);\n        var spread = (prob - 0.5) / 0.03;\n        return spread;\n    }\n\n    function updateSpread() {\n        var spread = parseFloat(spreadEl.value);\n        if (isNaN(spread)) {\n            favMlEl.textContent='-'; dogMlEl.textContent='-'; favProbEl.textContent='-'; dogProbEl.textContent='-'; return;\n        }\n        var result = spreadToMoneyline(spread);\n        favMlEl.textContent = result.favMLstr;\n        dogMlEl.textContent = result.dogML;\n        favProbEl.textContent = (result.favProb * 100).toFixed(1) + '%';\n        dogProbEl.textContent = (result.dogProb * 100).toFixed(1) + '%';\n    }\n\n    function updateML() {\n        var ml = parseInt(mlEl.value);\n        if (isNaN(ml) || ml === 0) { estSprEl.textContent='-'; return; }\n        var spread = moneylineToSpread(ml);\n        var sign = spread \u003e= 0 ? '+' : '';\n        estSprEl.textContent = sign + spread.toFixed(1);\n    }\n\n    spreadEl.addEventListener('input', updateSpread);\n    mlEl.addEventListener('input', updateML);\n    resetBtn.addEventListener('click', function() {\n        spreadEl.value=''; mlEl.value='';\n        favMlEl.textContent='-'; dogMlEl.textContent='-'; favProbEl.textContent='-'; dogProbEl.textContent='-'; estSprEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Conversor Spread para Moneyline - Converter Spreads NFL e NBA"},{"content":" Formato de Odds Decimal Fracionário Americano Seleção 1 Seleção 2 Seleção 3 Seleção 4 + Adicionar − Remover Aposta Odd combinada - Pagamento - Lucro - Reiniciar O que e uma aposta acumuladora? Um acumulador (tambem chamado de \u0026ldquo;acca\u0026rdquo;, \u0026ldquo;parlay\u0026rdquo; ou \u0026ldquo;combinada\u0026rdquo;) junta quatro ou mais selecoes em uma unica aposta. Todas as selecoes precisam vencer para a aposta pagar. As odds se multiplicam, criando potencial de retorno alto com uma stake pequena - mas com risco significativo, ja que todas as escolhas precisam estar certas.\nPrincipais caracteristicas:\n4 ou mais selecoes de eventos diferentes Todas as selecoes precisam vencer As odds se multiplicam (efeito exponencial) Uma selecao perdedora = a aposta inteira perde Maior potencial de retorno entre tipos de aposta padrao Tamanhos comuns de acumulador:\nNome Selecoes Exemplo de odds combinadas 4-fold 4 2.0 x 2.0 x 2.0 x 2.0 = 16.00 5-fold 5 2.0^5 = 32.00 6-fold 6 2.0^6 = 64.00 10-fold 10 2.0^10 = 1,024.00 Como funciona a calculadora de acumulador Adicione suas selecoes e a calculadora calcula na hora o retorno potencial:\nEntrada Descricao Odds de cada selecao As odds de cada escolha (adicione quantas precisar) Stake Valor total apostado no acumulador Formato de odds Decimal, Fracionario ou Americano Rule 4 Deducao opcional por selecao (corrida de cavalos) Formula do acumulador Odds combinadas = Odds1 x Odds2 x Odds3 x ... x Oddsn Pagamento total = Stake x Odds combinadas Lucro = Pagamento total - Stake Exemplo: 5 selecoes a 1.50, 1.80, 2.00, 1.60, 2.20 com stake de 10 €\nOdds combinadas = 1.50 x 1.80 x 2.00 x 1.60 x 2.20 = 19.01 Pagamento = 10 € x 19.01 = 190.10 € Lucro = 190.10 € - 10 € = 180.10 € Exemplo real de acumulador Futebol no sabado (5-fold) Selecao Jogo Odds 1 Arsenal vence o Brighton 1.55 2 Liverpool vence o Wolves 1.40 3 Man City vence o Burnley 1.25 4 Chelsea vence o Everton 1.70 5 Tottenham vence o Fulham 1.65 Stake: 20 €\nCalculo:\nOdds combinadas: 1.55 x 1.40 x 1.25 x 1.70 x 1.65 = 7.61 Pagamento potencial: 20 € x 7.61 = 152.20 € Lucro potencial: 132.20 € Se os cinco times vencerem, voce recebe 152.20 €. Se apenas um time nao vencer, voce perde a stake de 20 € inteira.\nO poder (e o risco) dos acumuladores Como as odds se multiplicam A natureza exponencial do acumulador cria retornos enormes:\nStake 4-fold (todas 2.0) 6-fold (todas 2.0) 10-fold (todas 2.0) 5 € 80 € 320 € 5,120 € 10 € 160 € 640 € 10,240 € 20 € 320 € 1,280 € 20,480 € Mas a probabilidade joga contra voce Selecoes Taxa de acerto (cada) Chance do acumulador 4 50% 6.25% 5 50% 3.13% 6 50% 1.56% 10 50% 0.098% Mesmo com 60% de acerto por selecao:\n4-fold: 13% de chance 6-fold: 4.7% de chance 10-fold: 0.6% de chance Realidade: a maioria dos apostadores recreativos ganha menos de 1 em 20 acumuladores.\nResultados do acumulador (como interpretar) Todas as selecoes vencem ✓ Selecao Resultado Arsenal ✓ Ganhou Liverpool ✓ Ganhou Man City ✓ Ganhou Chelsea ✓ Ganhou Tottenham ✓ Ganhou Resultado: pagamento total (152.20 € do exemplo acima)\nUma selecao perde ✗ Selecao Resultado Arsenal ✓ Ganhou Liverpool ✓ Ganhou Man City ✓ Ganhou Chelsea ✗ Perdeu Tottenham ✓ Ganhou Resultado: a aposta inteira perde - 0 € retornado\nQuatro de cinco nao basta. O acumulador e \u0026ldquo;tudo ou nada\u0026rdquo;.\nUma selecao e anulada (void) ⊘ Selecao Resultado Arsenal ✓ Ganhou Liverpool ✓ Ganhou Man City ⊘ Void Chelsea ✓ Ganhou Tottenham ✓ Ganhou Resultado: o 5-fold vira um 4-fold com as selecoes restantes.\nNovo calculo: 20 € x (1.55 x 1.40 x 1.70 x 1.65) = 121.79 €\nTipos populares de acumulador Acumuladores de futebol Tipo Descricao Odds tipicas Weekend Acca 5-6 favoritos da Premier League 5x-15x BTTS Acca \u0026ldquo;Ambas marcam\u0026rdquo; em varios jogos 10x-30x Over 2.5 Acca Mais de 2.5 gols em varios jogos 8x-25x Correct Score Acca Placar exato (muito arriscado) 100x-1000x+ Acumuladores de corrida de cavalos Tipo Descricao Favourite Acca Favoritos em varias corridas Each Way Acca Termos de colocacao em cada selecao Meeting Acca Todas as selecoes do mesmo meeting Acumuladores de esportes dos EUA (parlays) Esporte Combinacao comum NFL Picks de spread no domingo NBA Favoritos no moneyline MLB Selecao de run line NHL Parlays de puck line Seguro e boost de acumulador Muitas casas oferecem promocoes para acumuladores:\nSeguro de acumulador (Acca Insurance) Se uma selecao perde em um 5+ fold, voce recebe a stake de volta como free bet.\nExemplo: 6-fold, 5 vencem, 1 perde -\u0026gt; stake devolvida como free bet\nBoost de acumulador (Acca Boost) Bonus percentual adicionado aos ganhos em acumuladores vencedores.\nSelecoes Boost tipico 4 5% 5 10% 6 15% 7+ 20%+ Exemplo: 100 € de ganho em um 5-fold com 10% de boost = 110 € de ganhos\nAcca Edge / Edit Algumas casas permitem:\nRemover uma selecao perdedora de um acumulador ja encerrado Editar selecoes antes de todos os eventos terminarem Sempre leia as regras - essas ofertas tem condicoes.\nDicas de estrategia para acumuladores 1. Mantenha um numero razoavel de selecoes Quanto mais pernas (legs), menor a chance. 4 a 6 selecoes equilibram retorno e probabilidade.\n2. Misture odds com inteligencia Nao escolha so favoritos muito baixos (retorno pequeno) nem so zebras (nao vao bater). Uma mistura entre 1.40 e 2.50 costuma fazer mais sentido.\n3. Pesquise todas as selecoes Seu acumulador e tao forte quanto a pior selecao. Uma escolha \u0026ldquo;no chute\u0026rdquo; estraga tudo.\n4. Considere each way para corrida de cavalos Acumuladores each way pagam se as selecoes vencerem OU ficarem colocadas, trazendo uma rede de seguranca.\n5. Use seguro de acumulador quando houver Se uma perna puder perder sem voce perder a stake, a matematica muda bastante.\n6. Defina um orcamento Acumuladores sao apostas de entretenimento e alto risco. Nunca aposte dinheiro que voce nao pode perder.\nAcumulador vs apostas de sistema Em duvida entre um acumulador direto e uma aposta de sistema? Veja a comparacao:\nRecurso Acumulador Sistema (ex: Yankee) Selecoes necessarias Todas precisam vencer Algumas podem perder Stake Menor Maior (varias apostas) Retorno se todas vencerem Maior Menor Retorno se 1 perder Zero Ainda pode pagar Nivel de risco Muito alto Medio Exemplo com 4 selecoes:\n4-fold: 1 aposta, todas precisam vencer Yankee: 11 apostas (6 duplas + 4 triplas + 1 quadrupla), ainda paga se 2+ vencerem Como calcular acumuladores grandes Exemplo de 10-fold Sel Time Odds 1 Arsenal 1.50 2 Liverpool 1.45 3 Man City 1.30 4 Chelsea 1.60 5 Tottenham 1.55 6 Man United 1.70 7 Newcastle 1.80 8 Brighton 2.00 9 Aston Villa 1.90 10 West Ham 1.75 Stake de 5 €:\nOdds combinadas: 1.50 x 1.45 x 1.30 x 1.60 x 1.55 x 1.70 x 1.80 x 2.00 x 1.90 x 1.75 = 94.47 Pagamento potencial: 5 € x 94.47 = 472.35 € Lucro potencial: 467.35 € Probabilidade de acerto (assumindo 50% cada): 0.5^10 = 0.098% (aprox. 1 em 1.000)\nMitos sobre acumuladores (desmistificados) Mito 1: \u0026ldquo;Acumulador e um bom jeito de ganhar dinheiro\u0026rdquo; Realidade: a margem da casa se multiplica com cada selecao. Um 4-fold tem aproximadamente 4x a margem de uma aposta simples.\nMito 2: \u0026ldquo;Basta escolher vencedores\u0026rdquo; Realidade: voce precisa bater as odds, nao apenas acertar vencedores. Favoritos vencem bastante, mas nem sempre estao em odds de valor.\nMito 3: \u0026ldquo;Quase ganhei, estou perto de acertar\u0026rdquo; Realidade: cada acumulador e independente. Quase-acertos nao aumentam sua chance no proximo.\nMito 4: \u0026ldquo;Adicionar mais selecoes vale a pena pelo retorno maior\u0026rdquo; Realidade: cada selecao reduz sua probabilidade de forma exponencial, enquanto o retorno aumenta de forma linear.\nQuando usar acumuladores Bons usos Aposta por entretenimento com dinheiro que voce pode perder Aproveitar promocoes (seguro/boost) Stakes pequenas buscando retornos grandes Apostas casuais em jogos que voce esta assistindo Maus usos Tentar construir bankroll de forma consistente Aposta profissional/seria Apostar mais do que voce pode perder Correr atras de prejuizos de apostas anteriores Perguntas frequentes Qual e o numero maximo de selecoes em um acumulador? A maioria das casas permite 10 a 20 selecoes, algumas ate 25. Limites maximos de pagamento geralmente entram antes de voce chegar nesses numeros.\nO que acontece se um jogo do meu acumulador for adiado? Aquela selecao vira void e e removida. Seu 6-fold vira um 5-fold com odds reduzidas.\nPosso fazer cash out em um acumulador? Sim. A maioria das casas oferece cash out antes de todas as selecoes terminarem. O valor depende dos resultados ate aqui e das odds restantes.\nQual e a diferenca entre accumulator e parlay? E a mesma coisa. \u0026ldquo;Accumulator\u0026rdquo; e o termo do Reino Unido; \u0026ldquo;parlay\u0026rdquo; e usado mais nos EUA.\nAcumuladores tem bom valor? Em geral, nao. A margem da casa se acumula em cada selecao. Promocoes como seguro de acumulador podem melhorar o valor.\nO que e um acumulador each way? Um each way acca paga se as selecoes vencerem OU ficarem colocadas. Sao duas apostas: uma de vitoria e outra de colocacao. Muito usado em corrida de cavalos.\nComece a calcular seus acumuladores Use nossa calculadora gratuita acima para:\nAdicionar quantas selecoes voce quiser Inserir odds em qualquer formato (decimal, fracionario ou americano) Informar sua stake Ver odds combinadas, pagamento e lucro na hora Ajustar selecoes para comparar diferentes combinacoes A calculadora atualiza em tempo real, facilitando testar cenarios e encontrar o acumulador que combina com seu apetite de risco e seu orcamento.\n","permalink":"https://calculators-odds.com/pt/accumulator-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"acca_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections js-selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eSeleção 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row calc-wrap__row--actions\"\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm js-add\" type=\"button\"\u003e+ Adicionar\u003c/button\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm calc-wrap__btn--outline js-remove\" type=\"button\"\u003e− Remover\u003c/button\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eOdd combinada\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-combined\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('acca_0');\n    const formatEl = root.querySelector('.js-format');\n    const selectionsEl = root.querySelector('.js-selections');\n    const stakeEl = root.querySelector('.js-stake');\n    const combinedEl = root.querySelector('.js-combined');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const addBtn = root.querySelector('.js-add');\n    const removeBtn = root.querySelector('.js-remove');\n    const resetBtn = root.querySelector('.js-reset');\n    const selLabel = 'Seleção';\n\n    function getOddsInputs() { return root.querySelectorAll('.js-odds'); }\n\n    function update() {\n        const format = formatEl.value;\n        const oddsInputs = getOddsInputs();\n        let combined = 1, allValid = true;\n\n        oddsInputs.forEach(function(input) {\n            const d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); }\n            if (d) combined *= d; else allValid = false;\n        });\n\n        const stake = parseFloat(stakeEl.value);\n        if (!allValid) { combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        combinedEl.textContent = combined.toFixed(2);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        const payout = combined * stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    addBtn.addEventListener('click', function() {\n        const count = getOddsInputs().length;\n        if (count \u003e= 20) return;\n        const row = document.createElement('div');\n        row.className = 'calc-wrap__row calc-wrap__sel-row';\n        row.innerHTML = '\u003clabel class=\"calc-wrap__label\"\u003e' + selLabel + ' ' + (count + 1) + '\u003c/label\u003e\u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"' + getOddsPlaceholder(formatEl.value) + '\" /\u003e';\n        selectionsEl.appendChild(row);\n    });\n\n    removeBtn.addEventListener('click', function() {\n        const rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        if (rows.length \u003e 2) { rows[rows.length - 1].remove(); update(); }\n    });\n\n    formatEl.addEventListener('change', function() {\n        getOddsInputs().forEach(i =\u003e i.placeholder = getOddsPlaceholder(formatEl.value));\n        update();\n    });\n    root.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        const rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        rows.forEach(function(r, i) { if (i \u003e= 4) r.remove(); });\n        getOddsInputs().forEach(i =\u003e { i.value = ''; i.classList.remove('invalid'); });\n        stakeEl.value = ''; formatEl.selectedIndex = 0;\n        combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"o-que-e-uma-aposta-acumuladora\"\u003eO que e uma aposta acumuladora?\u003c/h2\u003e\n\u003cp\u003eUm acumulador (tambem chamado de \u0026ldquo;acca\u0026rdquo;, \u0026ldquo;parlay\u0026rdquo; ou \u0026ldquo;combinada\u0026rdquo;) junta quatro ou mais selecoes em uma unica aposta. Todas as selecoes precisam vencer para a aposta pagar. As odds se multiplicam, criando potencial de retorno alto com uma stake pequena - mas com risco significativo, ja que todas as escolhas precisam estar certas.\u003c/p\u003e","title":"Calculadora de Acumulador (Parlay) - Calcule o retorno de multiplas selecoes"},{"content":" Formato de Odds Decimal Fracionário Americano Aposta total Resultado 1 - Resultado 2 - + Adicionar resultado − Remover Margem - Pagamento - Lucro - ROI (retorno sobre investimento) - Reiniciar O Que São Apostas de Arbitragem? Apostas de arbitragem (também chamadas \u0026ldquo;arbing\u0026rdquo; ou \u0026ldquo;surebetting\u0026rdquo;) são uma estratégia onde aposta em todos os resultados possíveis de um evento em diferentes casas de apostas para garantir lucro independentemente do resultado.\nComo funciona:\nA casa de apostas A oferece odds altas para a Equipa 1 A casa de apostas B oferece odds altas para a Equipa 2 As odds combinadas criam uma margem de lucro Aposta montantes calculados em ambos os resultados Ganha independentemente de quem vencer Exemplo: Jogo de ténis – Jogador A vs. Jogador B\nCasa de apostas 1: Jogador A a 2,10 Casa de apostas 2: Jogador B a 2,05 Se a margem combinada for inferior a 100 %, existe uma oportunidade de arbitragem.\nComo Funciona a Calculadora de Arbitragem Introduza as odds de diferentes casas de apostas:\nEntrada Descrição Odds Resultado 1 Melhores odds para o primeiro resultado Odds Resultado 2 Melhores odds para o segundo resultado Odds Resultado 3 Opcional: para mercados de 3 vias (empate) Aposta Total Montante que deseja investir A calculadora mostra:\nSe existe uma oportunidade de arbitragem A aposta exata para cada resultado O lucro garantido A percentagem de lucro Fórmula de Arbitragem Explicada Arbitragem de 2 Vias (Dois Resultados) % de Arbitragem = (1/Odds1) + (1/Odds2) × 100 Se o resultado \u0026lt; 100 %: Existe arbitragem Se o resultado \u0026gt; 100 %: Não há arbitragem (margem da casa)\nCálculo de Apostas Individuais Aposta no Resultado 1 = Aposta Total × (1/Odds1) / % de Arbitragem Aposta no Resultado 2 = Aposta Total × (1/Odds2) / % de Arbitragem Exemplo de Cálculo Jogo de ténis:\nOdds 1: 2,10 (Jogador A vence) Odds 2: 2,05 (Jogador B vence) Aposta total: 100 € Passo 1: Verificar arbitragem\n(1/2,10) + (1/2,05) = 0,476 + 0,488 = 0,964 (96,4 %) 96,4 % \u0026lt; 100 % = Existe arbitragem!\nPasso 2: Calcular apostas\nAposta no Jogador A = 100 € × (1/2,10) / 0,964 = 49,38 € Aposta no Jogador B = 100 € × (1/2,05) / 0,964 = 50,62 € Passo 3: Calcular retornos\nResultado Aposta Retorno Lucro Jogador A vence 49,38 € 49,38 € × 2,10 = 103,70 € 3,70 € Jogador B vence 50,62 € 50,62 € × 2,05 = 103,77 € 3,77 € Lucro garantido: ~3,70 € (3,7 % de retorno) independentemente do resultado.\nArbitragem de 3 Vias (Incluindo Empate) Para desportos como futebol com três resultados:\n% de Arbitragem = (1/Odds1) + (1/Odds2) + (1/OddsEmpate) × 100 Exemplo: Jogo de Futebol Vitória casa: 3,50 Empate: 3,80 Vitória fora: 2,20 (1/3,50) + (1/3,80) + (1/2,20) = 0,286 + 0,263 + 0,455 = 1,004 (100,4 %) 100,4 % \u0026gt; 100 % = Não há oportunidade de arbitragem.\nUm Exemplo de 3 Vias Funcional Vitória casa: 4,00 Empate: 4,20 Vitória fora: 2,10 (1/4,00) + (1/4,20) + (1/2,10) = 0,250 + 0,238 + 0,476 = 0,964 (96,4 %) Existe arbitragem! Com 100 € de aposta:\nResultado Aposta Retorno Casa 25,93 € 103,72 € Empate 24,69 € 103,70 € Fora 49,38 € 103,70 € Lucro garantido: ~3,70 €\nTipos de Oportunidades de Arbitragem 1. Arbitragem Pré-Jogo Encontrada antes do evento começar:\nMais tempo para colocar apostas Mais fácil de executar Margens de lucro mais baixas (0,5 % – 5 %) 2. Arbitragem ao Vivo Encontrada durante o evento:\nAs odds mudam rapidamente Maior potencial de lucro Requer execução rápida Maior risco por mudanças de odds 3. Arbitragem Entre Mercados Apostar em mercados relacionados mas diferentes:\nHandicap Asiático vs. 1X2 Mais/Menos vs. Totais de Equipa Cálculos mais complexos Margens de Lucro Realistas em Arbitragem Tipo de Mercado Margem Típica Notas Ténis 1 % – 5 % Dois resultados, odds competitivas Futebol (1X2) 0,5 % – 3 % Três resultados, mais difícil de encontrar Basquetebol 1 % – 4 % Moneylines e spreads E-sports 2 % – 8 % Mercados menos eficientes Desportos de nicho 3 % – 10 % Menos casas, maiores diferenças Quando Ocorrem as Oportunidades de Arbitragem Diferenças de Preços entre Casas Diferentes casas têm diferentes opiniões:\nCasa A favorece a Equipa 1 Casa B favorece a Equipa 2 As odds combinadas criam oportunidade Timing em Movimentos de Linhas Quando saem notícias ou entram apostas:\nUma casa ajusta rapidamente Outra casa reage mais lentamente Abre-se uma janela temporal de arbitragem Promoções e Odds Melhoradas As promoções das casas podem criar arbitragem:\nOdds melhoradas num resultado Odds normais noutros sítios Combinação lucrativa Riscos nas Apostas de Arbitragem 1. Contas Limitadas O maior risco. As casas não gostam de arbers:\nLimites de aposta na sua conta Mercados restritos Encerramento de conta Mitigação: Arredondar apostas para montantes naturais, variar tamanhos, não levantar com demasiada frequência.\n2. Mudanças de Odds As odds podem mudar entre apostas:\nColoca a aposta 1 As odds para a aposta 2 baixam A arbitragem desaparece ou torna-se prejuízo Mitigação: Usar exchanges, apostar rapidamente, ter contas prontas.\n3. Erros Palpáveis As casas podem anular apostas por erros óbvios:\nOdds mal colocadas são canceladas Fica com exposição unilateral Mitigação: Evitar odds suspeitamente altas, verificar erros.\n4. Limites Máximos de Aposta Pode não conseguir colocar a sua aposta calculada:\nA casa tem limites mais baixos Liquidez de mercado insuficiente Mitigação: Verificar limites antes de calcular, usar múltiplas casas.\nEstratégias de Apostas de Arbitragem 1. Começar Pequeno Comece com:\n100–500 € de bankroll total 5–10 contas em casas de apostas Apenas oportunidades pré-jogo Ganhar experiência antes de escalar.\n2. Documentar Tudo Mantenha registos de:\nCada aposta de arbitragem colocada Casa de apostas utilizada Aposta e lucro Restrições de conta 3. Diversificar Casas de Apostas Não sobreutilizar nenhuma casa:\nRodar entre casas Distribuir volume entre contas Manter padrões de aposta saudáveis 4. Usar Software de Arbitragem A pesquisa manual é lenta. Considere:\nSites de comparação de odds Serviços de alertas de arbitragem APIs de exchanges de apostas Bankroll Necessário para Arbitragem Objetivo Mensal Margem Média Volume Mensal Bankroll Necessário 100 € 2 % 5.000 € 500–1.000 € 500 € 2 % 25.000 € 2.500–5.000 € 1.000 € 2 % 50.000 € 5.000–10.000 € Assume que o bankroll é apostado 5–10 vezes por mês em todas as casas\nArbitragem vs. Apostas de Valor Característica Arbitragem Apostas de Valor Risco Zero (em teoria) Alguma variância Margem de lucro Menor (1–5 %) Maior (2–10 %+) Limites de conta Limites mais rápidos Limites mais lentos Complexidade Maior (múltiplas apostas) Menor (apostas únicas) Eficiência de capital Menor Maior Muitos apostadores experientes combinam ambas as abordagens.\nReferência Rápida de Arbitragem Odds Mínimas para 2 % de Lucro Odds 1 Odds Mínimas 2 1,80 2,33 2,00 2,08 2,20 1,92 2,50 1,72 3,00 1,52 Guia de Percentagem de Arbitragem Percentagem Significado \u0026lt; 95 % Arbitragem forte (5 %+ lucro) 95 % – 98 % Boa arbitragem (2–5 % lucro) 98 % – 100 % Arbitragem marginal (\u0026lt;2 % lucro) 100 % – 105 % Sem arbitragem (mercado normal) \u0026gt; 105 % Mercado com alta margem Perguntas Frequentes As apostas de arbitragem são legais? Sim, as apostas de arbitragem são legais. Está simplesmente a colocar apostas em diferentes casas de apostas. No entanto, as casas podem encerrar ou limitar contas de suspeitos de arbitragem.\nQuanto posso ganhar com arbitragem? Com um bankroll de 5.000 € e dedicação, 500–1.000 € por mês é realista. Os arbers profissionais com grandes bankrolls podem ganhar significativamente mais.\nPorque é que as casas não impedem a arbitragem? Tentam através de limites e encerramentos de conta. Mas diferentes casas têm diferentes opiniões sobre as odds, criando diferenças de preço naturais.\nPreciso de software especial? Não é necessário mas é útil. A pesquisa manual consome tempo. Muitos arbers usam ferramentas de comparação de odds ou serviços de alertas de arbitragem.\nQuão rápido preciso de ser? Os arbs pré-jogo podem durar minutos ou horas. Os arbs ao vivo podem durar segundos. A velocidade importa, especialmente em apostas ao vivo.\nQuais são os melhores desportos para arbitragem? Ténis e basquetebol (2 resultados) são os mais fáceis. Futebol é mais difícil (3 resultados). Os desportos de nicho costumam ter maiores margens mas menos liquidez.\nComece a Encontrar Oportunidades de Arbitragem Use a nossa calculadora de arbitragem gratuita acima para:\nIntroduzir odds de diferentes casas de apostas Ver se existe uma oportunidade de arbitragem Calcular as apostas exatas para cada resultado Conhecer o seu lucro garantido antes de apostar Comparar mercados de 2 e 3 vias A calculadora mostra instantaneamente se tem uma oportunidade lucrativa e exatamente quanto apostar em cada resultado para retornos garantidos.\n","permalink":"https://calculators-odds.com/pt/arbitrage-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"arb_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eFormato de Odds\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003eDecimal\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003eFracionário\u003c/option\u003e\n            \u003coption value=\"American\"\u003eAmericano\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eAposta total\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-totalstake\" type=\"text\" placeholder=\"1000\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections js-selections\"\u003e\n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eResultado 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n            \u003cspan class=\"calc-wrap__stake-out js-stake-out\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003eResultado 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n            \u003cspan class=\"calc-wrap__stake-out js-stake-out\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row calc-wrap__row--actions\"\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm js-add\" type=\"button\"\u003e+ Adicionar resultado\u003c/button\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm calc-wrap__btn--outline js-remove\" type=\"button\"\u003e− Remover\u003c/button\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eMargem\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-margin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003ePagamento\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eLucro\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eROI (retorno sobre investimento)\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-roi\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003eReiniciar\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('arb_0');\n    var formatEl = root.querySelector('.js-format');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var selectionsEl = root.querySelector('.js-selections');\n    var marginEl = root.querySelector('.js-margin');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var roiEl = root.querySelector('.js-roi');\n    var addBtn = root.querySelector('.js-add');\n    var removeBtn = root.querySelector('.js-remove');\n    var resetBtn = root.querySelector('.js-reset');\n    var outcomeLabel = 'Resultado';\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var stakeOuts = root.querySelectorAll('.js-stake-out');\n        var totalStake = parseFloat(totalStakeEl.value);\n        var decimalOdds = [];\n        var invertedSum = 0;\n        var allValid = true;\n\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) { decimalOdds.push(d); invertedSum += 1/d; } else allValid = false; }\n        });\n\n        if (!allValid || decimalOdds.length \u003c 2) {\n            marginEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; roiEl.textContent = '-';\n            stakeOuts.forEach(function(s) { s.textContent = '-'; });\n            return;\n        }\n\n        var margin = (1 - invertedSum) * 100;\n        marginEl.textContent = margin.toFixed(2) + '%';\n        marginEl.style.color = margin \u003e 0 ? '#4CAF50' : '#f44336';\n\n        if (!totalStake || totalStake \u003c= 0) {\n            payoutEl.textContent = '-'; profitEl.textContent = '-'; roiEl.textContent = '-';\n            stakeOuts.forEach(function(s) { s.textContent = '-'; });\n            return;\n        }\n\n        var payout = totalStake / invertedSum;\n        var profit = payout - totalStake;\n        var roi = (profit / totalStake) * 100;\n\n        stakeOuts.forEach(function(s, i) {\n            var individualStake = (totalStake / invertedSum) * (1 / decimalOdds[i]);\n            s.textContent = formatNumber(individualStake);\n        });\n\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(profit);\n        roiEl.textContent = roi.toFixed(2) + '%';\n    }\n\n    addBtn.addEventListener('click', function() {\n        var count = root.querySelectorAll('.js-odds').length;\n        if (count \u003e= 10) return;\n        var row = document.createElement('div');\n        row.className = 'calc-wrap__row calc-wrap__sel-row';\n        row.innerHTML = '\u003clabel class=\"calc-wrap__label\"\u003e' + outcomeLabel + ' ' + (count+1) + '\u003c/label\u003e\u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"' + getOddsPlaceholder(formatEl.value) + '\" /\u003e\u003cspan class=\"calc-wrap__stake-out js-stake-out\"\u003e-\u003c/span\u003e';\n        selectionsEl.appendChild(row);\n    });\n\n    removeBtn.addEventListener('click', function() {\n        var rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        if (rows.length \u003e 2) { rows[rows.length-1].remove(); update(); }\n    });\n\n    formatEl.addEventListener('change', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);});\n        update();\n    });\n    root.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        var rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        rows.forEach(function(r,i){ if(i\u003e=2)r.remove(); });\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        root.querySelectorAll('.js-stake-out').forEach(function(s){s.textContent='-';});\n        totalStakeEl.value=''; formatEl.selectedIndex=0;\n        marginEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-'; roiEl.textContent='-';\n    });\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"o-que-são-apostas-de-arbitragem\"\u003eO Que São Apostas de Arbitragem?\u003c/h2\u003e\n\u003cp\u003eApostas de arbitragem (também chamadas \u0026ldquo;arbing\u0026rdquo; ou \u0026ldquo;surebetting\u0026rdquo;) são uma estratégia onde aposta em \u003cstrong\u003etodos os resultados possíveis\u003c/strong\u003e de um evento em diferentes casas de apostas para garantir lucro independentemente do resultado.\u003c/p\u003e","title":"Calculadora de Apostas de Arbitragem - Encontre Oportunidades Sem Risco"},{"content":" Calculadora de Handicap Asiático Passo 1: Selecionar formato de odds Cotas decimais Cotas de Hong Kong Malaio Indonésio Passo 2: Inserir detalhes da aposta Aposta Valor que você deseja apostar Probabilidades Odds da sua casa de apostas Passo 3: Selecionar handicap -2.5 -2.25 -2 -1.75 -1.5 -1.25 -1 -0.75 -0.5 -0.25 0 +0.25 +0.5 +0.75 +1 +1.25 +1.5 +1.75 +2 +2.25 +2.5 Clique para selecionar valor do handicap Selecione um handicap para ver a explicação. Resultados Se seu time ganha Ganho Pagamento Potencial — Lucro — Cenário meio ganhar Meio Ganho Pagamento Potencial — Lucro — Se empate Anulada Pagamento Potencial — Lucro — Cenário meio perder Meia Perda Pagamento Potencial — Lucro — Se seu time perde Perda Pagamento Potencial — Lucro — Reiniciar O Que São Apostas de Handicap Asiático? O Handicap Asiático (AH) é uma forma de aposta que elimina a opção de empate dando a uma equipa uma vantagem (ou desvantagem) virtual. Originou-se na Indonésia e tornou-se popular mundialmente para apostas de futebol.\nCaracterísticas Principais Característica Apostas Tradicionais Handicap Asiático Resultados possíveis 3 (Ganhar/Empatar/Perder) 2 (Ganhar/Perder) Resultado empate Resultado separado Push ou split Valor Margens mais altas Margens mais baixas Complexidade Simples Mais complexo Porquê Usar Handicaps Asiáticos? Melhores odds - Margens de casa mais baixas Sem empates - Reduz resultados a dois Mais opções - Ajusta a tua posição com precisão Reembolsos parciais - Linhas de quarto oferecem seguro Tipos de Handicaps Asiáticos Handicaps de Golo Inteiro (0, -1, +1, -2, etc.) Se o resultado corresponde exatamente ao handicap, a tua aposta é devolvida (push).\nExemplo: Equipa A -1 (um golo de handicap)\nResultado Real Após Handicap Resultado Aposta Equipa A ganha 3-1 2-1 Ganha Equipa A ganha 2-1 1-1 Push (aposta devolvida) Equipa A ganha 1-0 0-0 Push (aposta devolvida) Empate 1-1 0-1 Perde Equipa B ganha Perde por mais Perde Handicaps de Meio Golo (-0,5, +0,5, -1,5, +1,5, etc.) Sem push possível - resultado claro de ganhar ou perder.\nExemplo: Equipa A -1,5\nResultado Real Após Handicap Resultado Aposta Equipa A ganha 3-0 1,5-0 Ganha Equipa A ganha 2-0 0,5-0 Ganha Equipa A ganha 2-1 0,5-1 Perde Qualquer outro Défice Perde Handicaps de Quarto de Golo (-0,25, +0,75, -1,25, etc.) A tua aposta é dividida equitativamente entre dois handicaps adjacentes.\nExemplo: Equipa A -0,75 (dividido entre -0,5 e -1)\nResultado Real Aposta -0,5 Aposta -1 Resultado Combinado Equipa A ganha 2-0 Ganha Ganha Ganha Completo Equipa A ganha 1-0 Ganha Push Meio Ganha Empate 0-0 Perde Perde Perde Completo Como Usar a Calculadora Passo 1: Selecionar Formato de Odds Escolhe o teu formato preferido:\nDecimal (1,90, 2,10) - Padrão europeu Hong Kong (0,90, 1,10) - Apenas lucro Malay (0,90, -0,90) - Formato misto Indonésio (0,90, -1,10) - Similar a Malay Passo 2: Introduzir a Tua Aposta Introduz o montante que queres apostar.\nPasso 3: Introduzir as Odds Introduz as odds oferecidas pela tua casa de apostas.\nPasso 4: Selecionar o Handicap Clica na linha de handicap que vais apostar (-2,5 a +2,5).\nPasso 5: Ver Todos os Cenários A calculadora mostra:\nGanha Completo - Pagamento e lucro Meio Ganha - Pagamento e lucro (linhas de quarto) Push - Aposta devolvida (linhas inteiras) Meio Perde - Perda parcial (linhas de quarto) Perde Completo - Perda total Conversão de Formatos de Odds Compreendendo Diferentes Formatos Decimal Hong Kong Malay Indonésio 1,50 0,50 0,50 -2,00 1,80 0,80 0,80 -1,25 1,90 0,90 0,90 -1,11 2,00 1,00 1,00 1,00 2,10 1,10 -0,91 1,10 2,50 1,50 -0,67 1,50 3,00 2,00 -0,50 2,00 Fórmulas de Conversão Hong Kong para Decimal:\nDecimal = HK + 1 Malay para Decimal:\nSe Malay ≥ 0: Decimal = Malay + 1 Se Malay \u0026lt; 0: Decimal = 1 - (1/Malay) Indonésio para Decimal:\nSe Indo ≥ 0: Decimal = Indo + 1 Se Indo \u0026lt; 0: Decimal = 1 - (1/Indo) Exemplos de Handicap Asiático Exemplo 1: Handicap de Golo Inteiro Aposta: 100 € no Benfica -1 a odds 1,90\nResultado Benfica Após Handicap Resultado Pagamento Ganha por 2+ Positivo Ganha 190 € Ganha por 1 Zero Push 100 € Empate ou perde Negativo Perde 0 € Exemplo 2: Handicap de Meio Golo Aposta: 100 € no Porto -1,5 a odds 2,10\nResultado Porto Após Handicap Resultado Pagamento Ganha por 2+ Positivo Ganha 210 € Ganha por 1 -0,5 Perde 0 € Empate ou perde Negativo Perde 0 € Exemplo 3: Handicap de Quarto de Golo Aposta: 100 € no Sporting -0,75 a odds 1,95\nIsto divide-se em:\n50 € no Sporting -0,5 a 1,95 50 € no Sporting -1 a 1,95 Resultado Sporting Aposta -0,5 Aposta -1 Retorno Total Ganha por 2+ Ganha (97,50 €) Ganha (97,50 €) 195 € Ganha por 1 Ganha (97,50 €) Push (50 €) 147,50 € Empate Perde (0 €) Perde (0 €) 0 € Cálculo de Meio Ganha:\nRetorno = (Aposta/2 × Odds) + (Aposta/2) Retorno = (50 € × 1,95) + 50 € = 147,50 € Lucro = 47,50 € Exemplo 4: Handicap Positivo Aposta: 100 € no Underdog +1,5 a odds 1,85\nResultado Underdog Após Handicap Resultado Pagamento Ganha +1,5+ golos Ganha 185 € Empate +1,5 golos Ganha 185 € Perde por 1 +0,5 Ganha 185 € Perde por 2+ Negativo Perde 0 € Linhas Comuns de Handicap Asiático Guia de Handicap no Futebol Handicap O Que Significa Quando Usar 0 (Empate Não Aposta) Push em empate Favorito ligeiro, queres seguro de empate -0,25 Metade em 0, metade em -0,5 Pequeno favorito -0,5 Tem de ganhar Favorito moderado -0,75 Metade em -0,5, metade em -1 Favorito claro -1 Ganha por 2+, push em 1 Favorito forte -1,5 Ganha por 2+ Favorito muito forte +0,5 Ganha ou empata Underdog moderado +1 Perde por 1 = push Underdog com seguro de golo Estratégia de Seleção de Handicap Tipo de Jogo Intervalo Típico de Handicap Jogo equilibrado 0, ±0,25, ±0,5 Ligeiro favorito -0,5 a -1 Favorito claro -1 a -1,5 Grande favorito -1,5 a -2,5 Grande underdog +1,5 a +2,5 Handicap Asiático vs. Handicap Europeu Característica Handicap Asiático Handicap Europeu Opção de empate Eliminada Ainda existe Resultados parciais Sim (linhas de quarto) Não Push possível Sim (linhas inteiras) Não Odds Geralmente melhores Maior margem Complexidade Maior Menor Quando Escolher Handicap Asiático Queres melhores odds - Margens mais baixas Queres proteção de empate - Usa 0, ±0,25 Queres seguro parcial - Usa linhas de quarto Apostas em favoritos - Linhas mais flexíveis Calculando Valor em Handicaps Asiáticos Encontrando Valor Valor = (A Tua Probabilidade × Odds Decimal) - 1 Exemplo:\nEstimas que a Equipa A tem 60 % de probabilidade de ganhar por 2+ Odds handicap asiático -1,5: 2,10 Valor = (0,60 × 2,10) - 1 = 0,26 = +26 % Isto é uma aposta de valor se a tua estimativa de probabilidade estiver correta.\nComparando Linhas Compara sempre diferentes opções de handicap:\nHandicap Odds % Break-even -1 1,90 52,6 % -1,25 2,05 48,8 % -1,5 2,20 45,5 % Escolhe a linha onde tens a maior vantagem.\nEstratégias de Apostas Handicap Asiático Estratégia 1: Empate Não Aposta (Handicap 0) Opção mais segura para favoritos. Se empatar, aposta devolvida.\nIdeal para: Apoiar favoritos onde o empate é possível.\nEstratégia 2: Seguro de Linha de Quarto Usa -0,25 ou -0,75 para proteção parcial.\nExemplo: -0,75 dá-te:\nGanha completo se a equipa ganha por 2+ Meio ganha se a equipa ganha por 1 Perde completo em empate ou derrota Estratégia 3: Valor do Handicap Positivo Apoiar underdogs com handicaps frequentemente proporciona valor.\nExemplo: Equipa com +1,5 só precisa de evitar perder por 2+ golos.\nEstratégia 4: Handicap Asiático ao Vivo As linhas movem-se durante os jogos. Procura valor quando:\nGolo cedo muda o handicap Cartão vermelho afeta o jogo Posse dominante não refletida no resultado Erros Comuns Erro 1: Confundir Linhas Inteiras e Meias Handicap -1: Ganha por exatamente 1 = Push Handicap -1,5: Ganha por exatamente 1 = Perde Solução: Verifica sempre se há cenário de push.\nErro 2: Ignorar Linhas de Quarto As linhas de quarto oferecem proteção parcial que as linhas inteiras/meias não têm.\nSolução: Considera -0,75 em vez de -1 para algum seguro.\nErro 3: Não Comparar Linhas Diferentes casas oferecem diferentes linhas de handicap.\nSolução: Procura a melhor linha, não apenas as melhores odds.\nErro 4: Mal Interpretar Handicaps Positivos +1 não significa que a tua equipa vai marcar. É uma vantagem virtual.\nSolução: Foca-te na margem de vitória, não no resultado absoluto.\nPerguntas Frequentes O que acontece com o Handicap Asiático num empate? Depende do handicap. Com 0 (Empate Não Aposta), a aposta é devolvida. Com -0,5, perdes. Com -0,25, perdes metade e recuperas metade. Com +0,5, ganhas. O Handicap Asiático elimina o empate como resultado de aposta separado.\nO que é um handicap de quarto de golo? Os handicaps de quarto de golo (-0,25, -0,75, -1,25, etc.) dividem a tua aposta entre dois handicaps adjacentes. Por exemplo, -0,75 divide-se entre -0,5 e -1. Isto cria quatro resultados possíveis: ganha completo, meio ganha, meio perde e perde completo.\nPorque é que as odds de Handicap Asiático são melhores? Os mercados de Handicap Asiático tipicamente têm margens de casa mais baixas (2-4 %) comparados com os mercados tradicionais 1X2 (5-10 %). Isto porque o AH é popular entre apostadores profissionais e traders de alto volume, forçando as casas a oferecer odds competitivas.\nO que significa +0 em Handicap Asiático? +0 (também chamado Empate Não Aposta ou DNB) significa que se o jogo empatar, a tua aposta é devolvida. Só ganhas se a tua equipa ganhar. Essencialmente remove o empate da equação enquanto apoias uma equipa para ganhar.\nComo calculo os retornos de meio ganha? Para meio ganha: Retorno = (Aposta/2 × Odds) + (Aposta/2). Para meio perde: Retorno = Aposta/2. Isto porque as linhas de quarto dividem a tua aposta entre dois handicaps adjacentes.\nO Handicap Asiático é só para futebol? Embora seja mais popular no futebol, o Handicap Asiático também é usado no basquetebol, ténis, esports e outros desportos. O conceito funciona para qualquer desporto onde possas medir a margem de vitória.\nComeça a Calcular Handicaps Asiáticos Usa a nossa calculadora gratuita de Handicap Asiático acima para:\nSelecionar o teu formato de odds (Decimal, HK, Malay, Indonésio) Introduzir o teu montante de aposta Introduzir as odds da tua casa de apostas Selecionar a linha de handicap Ver todos os resultados possíveis instantaneamente A calculadora mostra cenários de ganha completo, meio ganha, push, meio perde e perde completo com pagamentos e lucros exatos.\nDica profissional: Usa linhas de quarto (-0,25, -0,75) quando quiseres seguro parcial contra resultados apertados. Custam um pouco mais em odds mas protegem contra resultados de margem exata.\n","permalink":"https://calculators-odds.com/pt/asian-handicap-calculator/","summary":"\u003cstyle\u003e\n.asian {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.asian__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.asian__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.asian__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.asian__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.asian__format-btn {\n    flex: 1;\n    min-width: 80px;\n    padding: 10px 12px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 13px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.asian__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.asian__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.asian__row {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 15px;\n}\n\n.asian__input-group {\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n}\n\n.asian__label {\n    font-size: 13px;\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.asian__input {\n    width: 100%;\n    padding: 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 16px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n    box-sizing: border-box;\n}\n\n.asian__input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.asian__input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.asian__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.asian__handicap-grid {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    gap: 6px;\n}\n\n.asian__handicap-btn {\n    padding: 8px 4px;\n    border: 1px solid rgba(255, 255, 255, 0.2);\n    background: rgba(0, 0, 0, 0.2);\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 12px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.asian__handicap-btn:hover {\n    border-color: #2196F3;\n    background: rgba(33, 150, 243, 0.2);\n}\n\n.asian__handicap-btn.active {\n    background: #2196F3;\n    border-color: #2196F3;\n    color: #fff;\n}\n\n.asian__handicap-btn.positive {\n    border-color: rgba(76, 175, 80, 0.4);\n}\n\n.asian__handicap-btn.negative {\n    border-color: rgba(244, 67, 54, 0.4);\n}\n\n.asian__explanation {\n    margin-top: 15px;\n    padding: 12px;\n    background: rgba(33, 150, 243, 0.1);\n    border: 1px solid rgba(33, 150, 243, 0.3);\n    border-radius: 4px;\n    font-size: 13px;\n    line-height: 1.5;\n}\n\n.asian__scenarios {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.asian__scenario {\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n    padding: 12px;\n    display: none;\n}\n\n.asian__scenario.visible {\n    display: block;\n}\n\n.asian__scenario-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 8px;\n}\n\n.asian__scenario-title {\n    font-size: 13px;\n    font-weight: 600;\n    color: rgba(232, 232, 232, 0.9);\n}\n\n.asian__scenario-result {\n    font-size: 12px;\n    font-weight: 600;\n    padding: 4px 10px;\n    border-radius: 3px;\n}\n\n.asian__scenario-result.win {\n    background: rgba(76, 175, 80, 0.2);\n    color: #4CAF50;\n}\n\n.asian__scenario-result.lose {\n    background: rgba(244, 67, 54, 0.2);\n    color: #f44336;\n}\n\n.asian__scenario-result.half-win {\n    background: rgba(139, 195, 74, 0.2);\n    color: #8BC34A;\n}\n\n.asian__scenario-result.half-lose {\n    background: rgba(255, 152, 0, 0.2);\n    color: #ff9800;\n}\n\n.asian__scenario-result.push {\n    background: rgba(158, 158, 158, 0.2);\n    color: #9e9e9e;\n}\n\n.asian__scenario-values {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 10px;\n}\n\n.asian__scenario-item {\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n}\n\n.asian__scenario-label {\n    font-size: 10px;\n    color: rgba(232, 232, 232, 0.6);\n    text-transform: uppercase;\n}\n\n.asian__scenario-value {\n    font-size: 16px;\n    font-weight: 700;\n}\n\n.asian__scenario-value.positive {\n    color: #4CAF50;\n}\n\n.asian__scenario-value.negative {\n    color: #f44336;\n}\n\n.asian__scenario-value.neutral {\n    color: #9e9e9e;\n}\n\n.asian__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.asian__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.asian__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.asian__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 600px) {\n    .asian__row {\n        grid-template-columns: 1fr;\n    }\n\n    .asian__handicap-grid {\n        grid-template-columns: repeat(5, 1fr);\n    }\n\n    .asian__format-btn {\n        min-width: 70px;\n        font-size: 12px;\n    }\n\n    .asian__scenario-values {\n        grid-template-columns: 1fr;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"asian\"\u003e\n    \u003cdiv class=\"asian__title\"\u003eCalculadora de Handicap Asiático\u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003ePasso 1: Selecionar formato de odds\u003c/div\u003e\n        \u003cdiv class=\"asian__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn active\" data-type=\"decimal\"\u003eCotas decimais\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn\" data-type=\"hongkong\"\u003eCotas de Hong Kong\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn\" data-type=\"malay\"\u003eMalaio\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn\" data-type=\"indonesian\"\u003eIndonésio\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003ePasso 2: Inserir detalhes da aposta\u003c/div\u003e\n        \u003cdiv class=\"asian__row\"\u003e\n            \u003cdiv class=\"asian__input-group\"\u003e\n                \u003clabel class=\"asian__label\"\u003eAposta\u003c/label\u003e\n                \u003cinput type=\"text\" class=\"asian__input asian__stake\" placeholder=\"100\"\u003e\n                \u003cspan class=\"asian__hint\"\u003eValor que você deseja apostar\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"asian__input-group\"\u003e\n                \u003clabel class=\"asian__label\"\u003eProbabilidades\u003c/label\u003e\n                \u003cinput type=\"text\" class=\"asian__input asian__odds\" placeholder=\"1.90\"\u003e\n                \u003cspan class=\"asian__hint\"\u003eOdds da sua casa de apostas\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003ePasso 3: Selecionar handicap\u003c/div\u003e\n        \u003cdiv class=\"asian__handicap-grid\"\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-2.5\"\u003e-2.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-2.25\"\u003e-2.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-2\"\u003e-2\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1.75\"\u003e-1.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1.5\"\u003e-1.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1.25\"\u003e-1.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1\"\u003e-1\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-0.75\"\u003e-0.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-0.5\"\u003e-0.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-0.25\"\u003e-0.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn active\" data-handicap=\"0\"\u003e0\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+0.25\"\u003e+0.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+0.5\"\u003e+0.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+0.75\"\u003e+0.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1\"\u003e+1\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1.25\"\u003e+1.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1.5\"\u003e+1.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1.75\"\u003e+1.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+2\"\u003e+2\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+2.25\"\u003e+2.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+2.5\"\u003e+2.5\u003c/button\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"asian__hint\"\u003eClique para selecionar valor do handicap\u003c/div\u003e\n        \u003cdiv class=\"asian__explanation\" id=\"asianExplanation\"\u003e\n            Selecione um handicap para ver a explicação.\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003eResultados\u003c/div\u003e\n        \u003cdiv class=\"asian__scenarios\"\u003e\n            \u003cdiv class=\"asian__scenario visible\" id=\"asianWin\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianWinTitle\"\u003eSe seu time ganha\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result win\"\u003eGanho\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003ePagamento Potencial\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianWinPayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003eLucro\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value positive\" id=\"asianWinProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario\" id=\"asianHalfWin\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianHalfWinTitle\"\u003eCenário meio ganhar\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result half-win\"\u003eMeio Ganho\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003ePagamento Potencial\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianHalfWinPayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003eLucro\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value positive\" id=\"asianHalfWinProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario\" id=\"asianDraw\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianDrawTitle\"\u003eSe empate\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result push\"\u003eAnulada\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003ePagamento Potencial\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianDrawPayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003eLucro\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value neutral\" id=\"asianDrawProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario\" id=\"asianHalfLose\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianHalfLoseTitle\"\u003eCenário meio perder\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result half-lose\"\u003eMeia Perda\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003ePagamento Potencial\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianHalfLosePayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003eLucro\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value negative\" id=\"asianHalfLoseProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario visible\" id=\"asianLose\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianLoseTitle\"\u003eSe seu time perde\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result lose\"\u003ePerda\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003ePagamento Potencial\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianLosePayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003eLucro\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value negative\" id=\"asianLoseProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"asian__btn asian__btn--secondary\" id=\"asianReset\"\u003eReiniciar\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let currentHandicap = 0;\n\n    function toDecimalOdds(value, type) {\n        const num = parseFloat(value);\n        if (isNaN(num)) return null;\n\n        switch(type) {\n            case 'decimal':\n                return num \u003e 1 ? num : null;\n            case 'hongkong':\n                return num + 1;\n            case 'malay':\n                return num \u003e= 0 ? num + 1 : 1 - (1 / num);\n            case 'indonesian':\n                return num \u003e= 0 ? num + 1 : 1 - (1 / num);\n            default:\n                return num;\n        }\n    }\n\n    function isQuarterHandicap(h) {\n        return h % 0.5 !== 0 \u0026\u0026 h % 0.25 === 0;\n    }\n\n    function isWholeHandicap(h) {\n        return h % 1 === 0;\n    }\n\n    function getExplanation(h) {\n        if (h === 0) {\n            return '0 (Empate sem aposta): Seu time deve ganhar. Em empate, a aposta é devolvida. Se seu time perder, você perde a aposta.';\n        }\n\n        if (isQuarterHandicap(h)) {\n            if (h \u003e 0) {\n                return `\u003cstrong\u003e${h \u003e 0 ? '+' : ''}${h} handicap:\u003c/strong\u003e Your bet is split between ${h - 0.25} and ${h + 0.25}. Your team starts with a ${h} goal advantage. Half-win or half-lose possible.`;\n            } else {\n                return `\u003cstrong\u003e${h} handicap:\u003c/strong\u003e Your bet is split between ${h - 0.25} and ${h + 0.25}. Your team must overcome a ${Math.abs(h)} goal deficit. Half-win or half-lose possible.`;\n            }\n        }\n\n        if (h % 1 === 0.5 || h % 1 === -0.5) {\n            if (h \u003e 0) {\n                return `\u003cstrong\u003e+${h} handicap:\u003c/strong\u003e Your team starts with a ${h} goal head start. No draws possible - clear win or lose result only.`;\n            } else {\n                return `\u003cstrong\u003e${h} handicap:\u003c/strong\u003e Your team must win by more than ${Math.abs(h)} goals. No draws possible - clear win or lose.`;\n            }\n        }\n\n        if (isWholeHandicap(h)) {\n            if (h \u003e 0) {\n                return `\u003cstrong\u003e+${h} handicap:\u003c/strong\u003e Your team starts with ${h} goal(s) advantage. If the adjusted result is a draw, stake is returned (push).`;\n            } else {\n                return `\u003cstrong\u003e${h} handicap:\u003c/strong\u003e Your team must win by more than ${Math.abs(h)} goal(s). Exact match returns stake (push).`;\n            }\n        }\n\n        return \"Select a handicap to see explanation.\";\n    }\n\n    function calculate() {\n        const stake = parseFloat(container.querySelector('.asian__stake').value) || 0;\n        const oddsInput = container.querySelector('.asian__odds').value;\n        const decimalOdds = toDecimalOdds(oddsInput, currentOddsType);\n        const h = parseFloat(currentHandicap);\n\n        container.querySelector('#asianExplanation').innerHTML = getExplanation(h);\n\n        const isQuarter = isQuarterHandicap(h);\n        const isWhole = isWholeHandicap(h);\n        const isHalf = h % 1 === 0.5 || h % 1 === -0.5;\n\n        \n        container.querySelector('#asianWin').classList.add('visible');\n        container.querySelector('#asianLose').classList.add('visible');\n        container.querySelector('#asianDraw').classList.toggle('visible', isWhole || h === 0);\n        container.querySelector('#asianHalfWin').classList.toggle('visible', isQuarter);\n        container.querySelector('#asianHalfLose').classList.toggle('visible', isQuarter);\n\n        \n        if (h === 0) {\n            container.querySelector('#asianWinTitle').textContent = 'Se seu time ganha';\n            container.querySelector('#asianDrawTitle').textContent = 'Se empate';\n            container.querySelector('#asianLoseTitle').textContent = 'Se seu time perde';\n        } else if (h \u003e 0) {\n            container.querySelector('#asianWinTitle').textContent = `Your Team can lose by less than ${Math.abs(h)}`;\n            if (isWhole) container.querySelector('#asianDrawTitle').textContent = `If Your Team loses by exactly ${Math.abs(h)}`;\n            container.querySelector('#asianLoseTitle').textContent = `If Your Team loses by more than ${Math.abs(h)}`;\n        } else {\n            container.querySelector('#asianWinTitle').textContent = `If Your Team wins by more than ${Math.abs(h)}`;\n            if (isWhole) container.querySelector('#asianDrawTitle').textContent = `If Your Team wins by exactly ${Math.abs(h)}`;\n            container.querySelector('#asianLoseTitle').textContent = `Your Team wins by less than ${Math.abs(h)} or loses`;\n        }\n\n        if (isQuarter) {\n            if (h \u003e 0) {\n                container.querySelector('#asianHalfWinTitle').textContent = `If Your Team loses by ${Math.floor(Math.abs(h))}`;\n                container.querySelector('#asianHalfLoseTitle').textContent = `If Your Team loses by ${Math.ceil(Math.abs(h))}`;\n            } else {\n                container.querySelector('#asianHalfWinTitle').textContent = `If Your Team wins by ${Math.ceil(Math.abs(h))}`;\n                container.querySelector('#asianHalfLoseTitle').textContent = `If Your Team wins by ${Math.floor(Math.abs(h))}`;\n            }\n        }\n\n        if (!decimalOdds || stake \u003c= 0) {\n            ['Win', 'Draw', 'HalfWin', 'HalfLose', 'Lose'].forEach(type =\u003e {\n                container.querySelector(`#asian${type}Payout`).textContent = '—';\n                container.querySelector(`#asian${type}Profit`).textContent = '—';\n            });\n            return;\n        }\n\n        const profit = stake * (decimalOdds - 1);\n\n        \n        container.querySelector('#asianWinPayout').textContent = '$' + (stake + profit).toFixed(2);\n        container.querySelector('#asianWinProfit').textContent = '+$' + profit.toFixed(2);\n\n        \n        container.querySelector('#asianLosePayout').textContent = '$0.00';\n        container.querySelector('#asianLoseProfit').textContent = '-$' + stake.toFixed(2);\n\n        \n        if (isWhole || h === 0) {\n            container.querySelector('#asianDrawPayout').textContent = '$' + stake.toFixed(2);\n            container.querySelector('#asianDrawProfit').textContent = '$0.00';\n        }\n\n        \n        if (isQuarter) {\n            const halfProfit = profit / 2;\n            const halfLoss = stake / 2;\n\n            container.querySelector('#asianHalfWinPayout').textContent = '$' + (stake + halfProfit).toFixed(2);\n            container.querySelector('#asianHalfWinProfit').textContent = '+$' + halfProfit.toFixed(2);\n\n            container.querySelector('#asianHalfLosePayout').textContent = '$' + (stake - halfLoss).toFixed(2);\n            container.querySelector('#asianHalfLoseProfit').textContent = '-$' + halfLoss.toFixed(2);\n        }\n    }\n\n    function reset() {\n        container.querySelector('.asian__stake').value = '';\n        container.querySelector('.asian__odds').value = '';\n\n        container.querySelectorAll('.asian__handicap-btn').forEach(btn =\u003e {\n            btn.classList.remove('active');\n            if (btn.dataset.handicap === '0') btn.classList.add('active');\n        });\n        currentHandicap = 0;\n\n        calculate();\n    }\n\n    \n    container.querySelectorAll('.asian__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.asian__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.asian__handicap-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.asian__handicap-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentHandicap = this.dataset.handicap;\n            calculate();\n        });\n    });\n\n    container.querySelector('.asian__stake').addEventListener('input', calculate);\n    container.querySelector('.asian__odds').addEventListener('input', calculate);\n    container.querySelector('#asianReset').addEventListener('click', reset);\n\n    calculate();\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"o-que-são-apostas-de-handicap-asiático\"\u003eO Que São Apostas de Handicap Asiático?\u003c/h2\u003e\n\u003cp\u003eO Handicap Asiático (AH) é uma forma de aposta que \u003cstrong\u003eelimina a opção de empate\u003c/strong\u003e dando a uma equipa uma vantagem (ou desvantagem) virtual. Originou-se na Indonésia e tornou-se popular mundialmente para apostas de futebol.\u003c/p\u003e","title":"Calculadora Handicap Asiático - Pagamentos de Linhas Quarto e Meio"}]