Apex 30% Rule “Don’t Blow Your Payout” Calculator: Stop Violation Penalties

EpiccTrader uses affiliate links. At no cost to you, I may earn a commission when you sign up through them. Learn more

Let me break down this Apex 30% rule thing…

Because apparently, it’s still confusing the hell out of some people. But it’s all about to make sense, and you’ll want to bookmark this page so you can use the calculators every day.

Here’s the deal, plain and simple:

Apex doesn’t want you going full degen with your risk. They set a hard limit: Your total open risk can’t go above 30% of your profits, or your original drawdown amount.

That means all your open trades combined. If you break it, you might get denied a payout, which means you’ll have to trade another 8 days before requesting again.

Here’s a calculator that does the math for you…

Because who wants to do math when you could be trading?

Just punch in your numbers and BOOM – there’s your risk limit.

(No more trying to figure this out in your head while the market’s moving.)

Apex Trader Funding 30 Percent Risk Management Calculator

Apex 30% Risk Rule Calculator

Account Size / Starting Balance (e.g. 25000, 25k, $25,000) Prior Day’s Ending Balance (e.g. 26600, 26.6k, $26,600) Is it a static account? (yes/no) Calculate [tcb-script] /** * parseValue(value) * – Strips out commas, $, or other non-numeric characters * – Interprets trailing ‘k’/’K’ as thousand */ function parseValue(value) { if (!value) return 0; // Remove all commas, dollar signs, spaces, etc., except digits and K/k value = value.replace(/[$,]/g, ”).trim(); // If it ends in ‘k’ or ‘K’, remove that, then multiply by 1,000 let multiplier = 1; if (/[kK]$/.test(value)) { multiplier = 1000; value = value.slice(0, -1); } // Remove any leftover non-digit/decimal characters value = value.replace(/[^0-9.]/g, ”); // Parse as float, then apply multiplier let numericValue = parseFloat(value) * multiplier; if (isNaN(numericValue)) { numericValue = 0; } return numericValue; } function calculate() { const xInput = document.getElementById(“accountSize”).value; const yInput = document.getElementById(“priorBalance”).value; const zInput = document.getElementById(“staticAccount”).value.trim().toLowerCase(); // Convert inputs to numbers let x = parseValue(xInput); let y = parseValue(yInput); let errors = []; let result = 0; // — Validate inputs — // 1) staticAccount must be ‘yes’ or ‘no’ if (zInput !== “yes” && zInput !== “no”) { errors.push(“Invalid ‘Is it a static account?’ value. Please enter ‘yes’ or ‘no’.”); } // 2) Account size must be > 0 and recognized // Valid values: 25,000 / 50,000 / 75,000 / 100,000 / 150,000 / 250,000 / 300,000 const validX = [25000, 50000, 75000, 100000, 150000, 250000, 300000]; if (x <= 0) { errors.push(“Please enter a valid, positive Account Size / Starting Balance.”); } else if (!validX.includes(x)) { errors.push(“Unrecognized Account Size. Valid options: 25k, 50k, 75k, 100k, 150k, 250k, or 300k.”); } // 3) Prior day’s ending balance must be >= 0 if (y < 0) { errors.push(“Please enter a valid, non-negative Prior Day’s Ending Balance.”); } // If we found any errors, display them and stop const errorBox = document.getElementById(“errorMsg”); if (errors.length > 0) { let errorList = “<ul>”; errors.forEach(function(err) { errorList += “<li>” + err + “</li>”; }); errorList += “</ul>”; errorBox.innerHTML = errorList; errorBox.style.display = “block”; document.getElementById(“result”).textContent = “”; return; } else { // Hide the error box if no errors errorBox.style.display = “none”; } // — Perform the calculation if no errors — // z=no => Use the first set of conditions: if (zInput === “no”) { switch (x) { case 25000: if (y < 26600) { // the formula will be 1500 * 0.30 result = 1500 * 0.30; } else if (y < 28200) { // formula => (y – x) * 0.30 result = (y – x) * 0.30; } else { // formula => (y – x) * 0.50 result = (y – x) * 0.50; } break; case 50000: if (y < 52600) { result = 2500 * 0.30; } else if (y < 55200) { result = (y – x) * 0.30; } else { result = (y – x) * 0.50; } break; case 75000: if (y < 77850) { result = 2750 * 0.30; } else if (y < 80700) { result = (y – x) * 0.30; } else { result = (y – x) * 0.50; } break; case 100000: if (y < 77850) { result = 3000 * 0.30; } else if (y < 80700) { result = (y – x) * 0.30; } else { result = (y – x) * 0.50; } break; case 150000: if (y < 155100) { result = 5000 * 0.30; } else if (y < 160200) { result = (y – x) * 0.30; } else { result = (y – x) * 0.50; } break; case 250000: if (y < 256600) { result = 3500 * 0.30; } else if (y < 263200) { result = (y – x) * 0.30; } else { result = (y – x) * 0.50; } break; case 300000: if (y < 307600) { result = 7500 * 0.30; } else if (y < 315200) { result = (y – x) * 0.30; } else { result = (y – x) * 0.50; } break; default: // Shouldn’t be reached if validation is correct result = 0; break; } } // z=yes => The second set of conditions (only defined for x=100000) else if (zInput === “yes”) { if (x === 100000) { if (y < 102600) { // 625 * 0.30 result = 625 * 0.30; } else if (y < 105200) { // (y – x) * 0.30 result = (y – x) * 0.30; } else { // (y – x) * 0.50 result = (y – x) * 0.50; } } else { // If other static accounts are not defined, show error errors.push(“For static accounts (z=yes), only an Account Size of 100,000 is supported.”); let errorList = “<ul>”; errors.forEach(function(err) { errorList += “<li>” + err + “</li>”; }); errorList += “</ul>”; errorBox.innerHTML = errorList; errorBox.style.display = “block”; document.getElementById(“result”).textContent = “”; return; } } // Display the result document.getElementById(“result”).textContent = “Calculated amount: ” + result.toLocaleString(undefined, { maximumFractionDigits: 2 }); } [/tcb-script]

You may notice that the number takes a “jump” higher once you reach a certain profit level

Apex has updated the rule so that after you double your safety net, in profit, the risk management limit is now 50% of profits.

For your own sake though, I’d stick with no more than 30%, unless you want to blow up your PA account.

And there you have it. That’s your number, for that account. Have more accounts? Run the calc again, as many times as you need.

And don’t ever risk more than that amount at once, across all the trades in that account. 

Follow that, and you’ll stay inside the lines on this rule. Easy peasy.

That Other Apex 30% Rule (Consistency)

Some of y’all are still mixing this up. The 30% consistency rule with Apex is totally separate.

It’s also more simple, but I’m gonna give you a calculator for it anyway.

Your best day can’t be more than 30% of your profits for the payout period.

Payout period for this is either:

  1. Since you started the PA and traded at least 8 days, or
  2. 8+ trading days since your last approved request.

Yes, that’s approved request. So if you fail the 30% rule, you just have to keep trading until you qualify. 

You’ll qualify when your total profit is bigger than the amount this calculator gives you:

Apex 30% Consistency Rule Calculator

Apex 30% Consistency Rule Calculator

Enter your best day’s profit: (Examples: $1468, 1468, 1,468, 1.468k, etc.) Calculate [tcb-script] /** * parseValue(value) * – Removes $, commas, or other non-numeric characters * – Accepts trailing ‘k’/’K’ as thousands * – Returns a number (or 0 if invalid) */ function parseValue(value) { if (!value) return 0; // Strip out commas, dollar signs, etc. value = value.replace(/[$,]/g, ”).trim(); // If it ends with ‘k’ or ‘K’, remove that and multiply by 1000 let multiplier = 1; if (/[kK]$/.test(value)) { multiplier = 1000; value = value.slice(0, -1); } // Remove any remaining non-digit or decimal characters value = value.replace(/[^0-9.]/g, ”); // Convert to float let numericValue = parseFloat(value) * multiplier; if (isNaN(numericValue)) { numericValue = 0; } return numericValue; } function calculateBestDayProfit() { const profitInput = document.getElementById(“bestProfit”).value; let bestProfit = parseValue(profitInput); let errors = []; let result = 0; // Validate user input if (bestProfit <= 0) { errors.push(“Please enter a valid, positive profit amount.”); } const errorBox = document.getElementById(“errorMsg”); if (errors.length > 0) { // Show errors let errorList = “<ul>”; errors.forEach(function(err) { errorList += “<li>” + err + “</li>”; }); errorList += “</ul>”; errorBox.innerHTML = errorList; errorBox.style.display = “block”; // Clear any previous result document.getElementById(“result”).textContent = “”; return; } else { // Hide the error box if no errors errorBox.style.display = “none”; } // The formula: profit ÷ 0.30 result = bestProfit / 0.30; // Display result document.getElementById(“result”).textContent = “Calculated amount: ” + result.toLocaleString(undefined, { maximumFractionDigits: 2 }); } [/tcb-script]

Boom. You need to keep trading until your total profit is over the amount calculated above.

Beware: If you make a bigger daily profit than that some other day, you’ll have to re-calculate and it will be a bigger amount.

Pick up more Apex accounts on discount here.