<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Okeke Jenny</title>
    <description>The latest articles on DEV Community by Okeke Jenny (@elitepropx).</description>
    <link>https://dev.to/elitepropx</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4146774%2F8417bc66-3280-4a43-b614-4965407e6b53.png</url>
      <title>DEV Community: Okeke Jenny</title>
      <link>https://dev.to/elitepropx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elitepropx"/>
    <language>en</language>
    <item>
      <title>How to quote a pass rate so a stranger can check it</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Tue, 03 Nov 2026 17:29:43 +0000</pubDate>
      <link>https://dev.to/elitepropx/how-to-quote-a-pass-rate-so-a-stranger-can-check-it-31km</link>
      <guid>https://dev.to/elitepropx/how-to-quote-a-pass-rate-so-a-stranger-can-check-it-31km</guid>
      <description>&lt;h1&gt;
  
  
  How to quote a pass rate so a stranger can check it
&lt;/h1&gt;

&lt;p&gt;"87% success rate" is the most common number in the prop firm passing market and the least meaningful, because it does not say what it is a rate &lt;em&gt;of&lt;/em&gt;. A percentage with an undefined denominator is not a statistic. It is a mood.&lt;/p&gt;

&lt;p&gt;Here is what has to be true before a pass rate can be compared with another one.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Define the denominator, in purchases
&lt;/h2&gt;

&lt;p&gt;The candidate denominators are very different things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Evaluations attempted&lt;/strong&gt; — every account that was worked on, including ones abandoned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Purchases&lt;/strong&gt; — every time a client paid. This is the honest one for a buyer, because it is the unit they are deciding on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clients&lt;/strong&gt; — one person who bought four evaluations counts once, which can flatter or deflate depending on how they did.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A service quoting a rate per client while selling per evaluation has changed the meaning of the number without changing the number. The question to ask is literal: &lt;strong&gt;per purchase, or per client?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Include the resets, or the rate is survivorship bias
&lt;/h2&gt;

&lt;p&gt;A retry policy creates an obvious accounting temptation: the first attempt fails, the retry passes, and the pass is counted while the failure quietly leaves the sample. The rate goes up and nothing about the service changed.&lt;/p&gt;

&lt;p&gt;If retries are covered — and at a flat fee they usually are — then the honest figure counts resets as failures, because each reset is a purchase-equivalent the client did not have to make at another provider. Publishing "X of Y purchases reached funded status, including Z resets" is a weaker-sounding sentence that is worth more than a clean percentage.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Date the window and say what happened to open accounts
&lt;/h2&gt;

&lt;p&gt;A rate over an undefined period is not reproducible. Rates drift with firm rule changes, market regime, and the mix of account sizes being sold.&lt;/p&gt;

&lt;p&gt;Two minimum requirements: the window ("January–October 2026"), and a stated treatment of accounts still in progress. Excluding them inflates the rate. Counting them as failures deflates it. Either is defensible if it is written down; silence is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Make the claim checkable by someone who does not trust you
&lt;/h2&gt;

&lt;p&gt;A number in a headline cannot be verified. What can be verified is an artefact a firm will confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A certificate per pass, with the client name redacted and an account number the firm can look up.&lt;/li&gt;
&lt;li&gt;A checked date, so a reader knows which version of the firm's rules applied.&lt;/li&gt;
&lt;li&gt;The failures, listed with their cause, in the same place as the passes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last item is the one that separates a record from an advertisement, and it is also the one that is uncomfortable to publish, which is why it is informative.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Prefer the wording that cannot be read as a promise
&lt;/h2&gt;

&lt;p&gt;"87% success rate" implies a probability about your evaluation. It is not one — the outcome depends on the account size, the firm, the rules in force that month, and the trader. What a service can actually claim is a historical count over a defined population.&lt;/p&gt;

&lt;p&gt;The defensible sentence has four parts: &lt;strong&gt;count, denominator, window, treatment of resets.&lt;/strong&gt; For example — "63 of 71 purchases reached funded status between January and October 2026, including nine resets." Every word there is a fact about the past, and a reader can ask to see the 71.&lt;/p&gt;

&lt;h2&gt;
  
  
  The disclosure
&lt;/h2&gt;

&lt;p&gt;I run a passing service, &lt;a href="https://elitepropx.com/" rel="noopener noreferrer"&gt;ElitePropX&lt;/a&gt;, so the standard above is the one I am applying to myself. The &lt;a href="https://elitepropx.com/passed-challenges.html" rel="noopener noreferrer"&gt;passed challenges&lt;/a&gt; page lists the accounts that reached funded status with client names redacted, and the evaluations that were reset alongside them — roughly one in twenty. The &lt;a href="https://elitepropx.com/methodology.html" rel="noopener noreferrer"&gt;methodology&lt;/a&gt; page states what a checked date means and how a correction is published when a firm changes a rule.&lt;/p&gt;

&lt;p&gt;Whether the numbers on those pages are good is a separate question from whether they are legible. Legible first: a reader who can count the denominator can decide for themselves, and that is the only kind of claim worth making in a market where every competitor has a nicer percentage.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-line test
&lt;/h2&gt;

&lt;p&gt;Before you compare two services, ask both: &lt;strong&gt;"your rate — per purchase or per client, what window, and are resets counted?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The service that answers in one sentence is not necessarily better. It is the only one whose number you can actually use.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>datascience</category>
      <category>discuss</category>
    </item>
    <item>
      <title>What happens to the account after the pass: handover, KYC, and the first payout</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Tue, 03 Nov 2026 17:28:55 +0000</pubDate>
      <link>https://dev.to/elitepropx/what-happens-to-the-account-after-the-pass-handover-kyc-and-the-first-payout-19el</link>
      <guid>https://dev.to/elitepropx/what-happens-to-the-account-after-the-pass-handover-kyc-and-the-first-payout-19el</guid>
      <description>&lt;h1&gt;
  
  
  What happens to the account after the pass: handover, KYC, and the first payout
&lt;/h1&gt;

&lt;p&gt;The evaluation ends when the target is hit. The risk does not. Three separate things can still cost a trader a funded account that has already been earned, and all three happen after the part everyone optimises for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The handover window is where passes die
&lt;/h2&gt;

&lt;p&gt;A firm sees a login from one country for six weeks, then a new device in another country on the day the account is transferred. That is the exact shape its own anti-fraud checks are built to catch, and the trader who is legitimately taking over their account looks identical to the one who is not.&lt;/p&gt;

&lt;p&gt;Practically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Do not change region on handover day.&lt;/strong&gt; If you are going to log in from a new country, do it before the pass, not after.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do not route the first login through a VPN&lt;/strong&gt; because the service's region looked cleaner. A residential IP that matches your KYC address is the boring, correct choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log in once, from the device you will keep using.&lt;/strong&gt; Device churn is a signal on its own.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this is about hiding. It is about not setting off a heuristic that a human then has to clear, usually by email, usually over a weekend, while the account sits idle.&lt;/p&gt;

&lt;h2&gt;
  
  
  KYC belongs to the account holder, and it is not a formality
&lt;/h2&gt;

&lt;p&gt;This is the single most common reason a passed account never pays out: the identity on the funded account does not match the identity on the payout method.&lt;/p&gt;

&lt;p&gt;A firm will verify the person it is paying. If the name, address and payment details diverge — a different surname on a bank account, a wallet under a trading alias, a company account where the KYC is personal — the payout is held when it is requested, not when the account is opened. That is the worst possible moment to discover it.&lt;/p&gt;

&lt;p&gt;Confirm the payout details in the first 24 hours after handover, before any trading. It is a five-minute check at a moment when nothing is at stake.&lt;/p&gt;

&lt;h2&gt;
  
  
  The funded phase has rules the evaluation did not
&lt;/h2&gt;

&lt;p&gt;Most firms apply at least one condition that only exists after funding:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rule&lt;/th&gt;
&lt;th&gt;Typical form&lt;/th&gt;
&lt;th&gt;Why it surprises people&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Consistency at payout&lt;/td&gt;
&lt;td&gt;No single day above a share of total profit&lt;/td&gt;
&lt;td&gt;It is evaluated when you request, not when you pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;News windows&lt;/td&gt;
&lt;td&gt;A time band around scheduled events&lt;/td&gt;
&lt;td&gt;The evaluation may have allowed holding through&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimum trading days&lt;/td&gt;
&lt;td&gt;Counted from the funded start date&lt;/td&gt;
&lt;td&gt;A fast, correct pass can still be early&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Profit split tiers&lt;/td&gt;
&lt;td&gt;Split improves at a threshold&lt;/td&gt;
&lt;td&gt;Affects what you withdraw, not whether you passed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The rules tab for the funded phase is a different document from the one you read during the evaluation. Read it after handover, not before, because that is when it applies.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to verify in the first 24 hours
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The dashboard shows &lt;strong&gt;your&lt;/strong&gt; name and email.&lt;/li&gt;
&lt;li&gt;The payout method is set and matches your KYC identity.&lt;/li&gt;
&lt;li&gt;The funded-phase rules tab has been read and screenshotted, with the date visible.&lt;/li&gt;
&lt;li&gt;The account balance and starting floor match the certificate you were given.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Four items, one sitting. Each one is cheap to fix now and expensive to fix after a payout request has been refused.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the operator should hand over before the payout, not after
&lt;/h2&gt;

&lt;p&gt;There is a structural conflict in a passing service that keeps control of a funded account until the client has been paid. It aligns incentives on paper — the operator only gets paid if the account pays — and it puts the operator in possession of an asset that belongs to someone else, under KYC documents that name the client.&lt;/p&gt;

&lt;p&gt;The cleaner structure is the boring one: register the account in the client's name, hand over credentials the day the target is met, and take the fee for the evaluation rather than for the outcome. That is how &lt;a href="https://elitepropx.com/services/passing-prop-firm-services.html" rel="noopener noreferrer"&gt;the evaluation plan&lt;/a&gt; at &lt;a href="https://elitepropx.com/" rel="noopener noreferrer"&gt;ElitePropX&lt;/a&gt; is set up — the flat fee covers the evaluation, and the funded account is the client's from the moment it exists, which is also why the fee is not a share of the profit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;The pass is a milestone, not the finish. Match your KYC to your payout method before you trade, take the account over from a device and region you will keep, and read the funded-phase rules as a separate document from the evaluation's. Every one of those is a five-minute task that prevents a category of loss the trading itself did not cause.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Four contract terms to read before you pay a prop firm passing service</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Tue, 03 Nov 2026 17:28:51 +0000</pubDate>
      <link>https://dev.to/elitepropx/four-contract-terms-to-read-before-you-pay-a-prop-firm-passing-service-3mjh</link>
      <guid>https://dev.to/elitepropx/four-contract-terms-to-read-before-you-pay-a-prop-firm-passing-service-3mjh</guid>
      <description>&lt;h1&gt;
  
  
  Four contract terms to read before you pay a prop firm passing service
&lt;/h1&gt;

&lt;p&gt;Every passing service sells the pass. The pass is the easy half to describe and the hard half to promise, so the marketing stops there.&lt;/p&gt;

&lt;p&gt;What actually decides whether you lost money is the four terms underneath it. None of them are exotic, and all of them are usually missing from the pricing page.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Who holds the funded account
&lt;/h2&gt;

&lt;p&gt;This is the one that matters and the one least often stated. When an evaluation is passed, the account exists somewhere — an email address, a login, a name on the KYC record, a payout method.&lt;/p&gt;

&lt;p&gt;If the operator registered the account, you do not own an account. You own a promise that the account will be transferred, on terms that were not written down when you paid. If you registered it, you own it from the first login and the service is doing work on your account rather than selling you one.&lt;/p&gt;

&lt;p&gt;Ask directly: &lt;strong&gt;whose email address is on the firm dashboard, and whose name is on the KYC record?&lt;/strong&gt; A service that cannot answer in one sentence has not thought about it, which is worse than a bad answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What a breach costs, and who pays the retry
&lt;/h2&gt;

&lt;p&gt;"Retries covered" is on every site in this market. It is a real benefit and it is nearly always undefined in three ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How many retries&lt;/strong&gt; — one, or until it passes?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Within what window&lt;/strong&gt; — same month, same quarter, indefinitely?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On which firm&lt;/strong&gt; — the original one, or any firm, which matters when the original changes its rules mid-evaluation?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A retry promise with no count and no window is not a term, it is a sentiment. The clause to look for is the one that says what happens on the second breach, because that is where the arithmetic of a fixed fee stops being generous.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The refund trigger, and what it actually returns
&lt;/h2&gt;

&lt;p&gt;"Pass or refund" sounds like a guarantee. Read what it refunds.&lt;/p&gt;

&lt;p&gt;Your true cost is not the service fee alone — it is the service fee plus the challenge fee you already paid the firm, doubled if you are on a retry. A refund of the service fee leaves the challenge fee with the firm, which is often the larger number on a $200k account.&lt;/p&gt;

&lt;p&gt;So the useful question is not "is there a refund" but &lt;strong&gt;"does the refund cover the firm's challenge fee as well, and what is the deadline for claiming it?"&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. What you receive, and whether a stranger could check it
&lt;/h2&gt;

&lt;p&gt;The deliverable is one of three things: login credentials, a certificate, or a screenshot.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Credentials&lt;/strong&gt; transfer an asset. Good.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A certificate&lt;/strong&gt; with the client name redacted is checkable — a firm can confirm an account number exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A screenshot&lt;/strong&gt; is a picture. It costs nothing to produce and proves nothing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the only artefact is an image, the pass has the same evidential status as a testimonial.&lt;/p&gt;

&lt;h2&gt;
  
  
  The awkward part: I run one of these
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://elitepropx.com/" rel="noopener noreferrer"&gt;ElitePropX&lt;/a&gt; is a flat-fee passing service — $220 per evaluation, any account size, retries covered, no profit split on the funded account. So this is not a neutral buyer's guide. Treat it as the list of questions I expect to be asked, and hold me to the same four answers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The account is registered in the client's name, with the client's email on the dashboard.&lt;/li&gt;
&lt;li&gt;Retries are covered without a count, because the fee is per evaluation rather than per attempt.&lt;/li&gt;
&lt;li&gt;A refund returns the service fee; the firm's challenge fee is not recoverable by us or by anyone.&lt;/li&gt;
&lt;li&gt;The deliverable is credentials plus a certificate with the client name redacted.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The parts that make those answers checkable rather than asserted are published: the &lt;a href="https://elitepropx.com/methodology.html" rel="noopener noreferrer"&gt;methodology&lt;/a&gt; explains what a checked date promises and how corrections are handled, and the &lt;a href="https://elitepropx.com/passed-challenges.html" rel="noopener noreferrer"&gt;passed challenges&lt;/a&gt; page includes the evaluations that were reset — roughly one in twenty — because a service that only lists wins has not published a record, it has published an advertisement.&lt;/p&gt;

&lt;h2&gt;
  
  
  The printable version
&lt;/h2&gt;

&lt;p&gt;Four questions, in the order that saves the most money:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Whose email and name are on the account? · How many retries, in what window, on which firm? · What does the refund return, and by when? · Is the deliverable credentials, a certificate, or a screenshot?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a service answers all four in writing, the price becomes comparable. If it answers two, the price is not the thing you should be comparing.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>Four contract terms to read before you pay a prop firm passing service</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Tue, 03 Nov 2026 17:06:55 +0000</pubDate>
      <link>https://dev.to/elitepropx/four-contract-terms-to-read-before-you-pay-a-prop-firm-passing-service-1oah</link>
      <guid>https://dev.to/elitepropx/four-contract-terms-to-read-before-you-pay-a-prop-firm-passing-service-1oah</guid>
      <description>&lt;h1&gt;
  
  
  Four contract terms to read before you pay a prop firm passing service
&lt;/h1&gt;

&lt;p&gt;Every passing service sells the pass. The pass is the easy half to describe and the hard half to promise, so the marketing stops there.&lt;/p&gt;

&lt;p&gt;What actually decides whether you lost money is the four terms underneath it. None of them are exotic, and all of them are usually missing from the pricing page.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Who holds the funded account
&lt;/h2&gt;

&lt;p&gt;This is the one that matters and the one least often stated. When an evaluation is passed, the account exists somewhere — an email address, a login, a name on the KYC record, a payout method.&lt;/p&gt;

&lt;p&gt;If the operator registered the account, you do not own an account. You own a promise that the account will be transferred, on terms that were not written down when you paid. If you registered it, you own it from the first login and the service is doing work on your account rather than selling you one.&lt;/p&gt;

&lt;p&gt;Ask directly: &lt;strong&gt;whose email address is on the firm dashboard, and whose name is on the KYC record?&lt;/strong&gt; A service that cannot answer in one sentence has not thought about it, which is worse than a bad answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What a breach costs, and who pays the retry
&lt;/h2&gt;

&lt;p&gt;"Retries covered" is on every site in this market. It is a real benefit and it is nearly always undefined in three ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How many retries&lt;/strong&gt; — one, or until it passes?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Within what window&lt;/strong&gt; — same month, same quarter, indefinitely?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On which firm&lt;/strong&gt; — the original one, or any firm, which matters when the original changes its rules mid-evaluation?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A retry promise with no count and no window is not a term, it is a sentiment. The clause to look for is the one that says what happens on the second breach, because that is where the arithmetic of a fixed fee stops being generous.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The refund trigger, and what it actually returns
&lt;/h2&gt;

&lt;p&gt;"Pass or refund" sounds like a guarantee. Read what it refunds.&lt;/p&gt;

&lt;p&gt;Your true cost is not the service fee alone — it is the service fee plus the challenge fee you already paid the firm, doubled if you are on a retry. A refund of the service fee leaves the challenge fee with the firm, which is often the larger number on a $200k account.&lt;/p&gt;

&lt;p&gt;So the useful question is not "is there a refund" but &lt;strong&gt;"does the refund cover the firm's challenge fee as well, and what is the deadline for claiming it?"&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. What you receive, and whether a stranger could check it
&lt;/h2&gt;

&lt;p&gt;The deliverable is one of three things: login credentials, a certificate, or a screenshot.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Credentials&lt;/strong&gt; transfer an asset. Good.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A certificate&lt;/strong&gt; with the client name redacted is checkable — a firm can confirm an account number exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A screenshot&lt;/strong&gt; is a picture. It costs nothing to produce and proves nothing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the only artefact is an image, the pass has the same evidential status as a testimonial.&lt;/p&gt;

&lt;h2&gt;
  
  
  The awkward part: I run one of these
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://elitepropx.com/" rel="noopener noreferrer"&gt;ElitePropX&lt;/a&gt; is a flat-fee passing service — $220 per evaluation, any account size, retries covered, no profit split on the funded account. So this is not a neutral buyer's guide. Treat it as the list of questions I expect to be asked, and hold me to the same four answers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The account is registered in the client's name, with the client's email on the dashboard.&lt;/li&gt;
&lt;li&gt;Retries are covered without a count, because the fee is per evaluation rather than per attempt.&lt;/li&gt;
&lt;li&gt;A refund returns the service fee; the firm's challenge fee is not recoverable by us or by anyone.&lt;/li&gt;
&lt;li&gt;The deliverable is credentials plus a certificate with the client name redacted.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The parts that make those answers checkable rather than asserted are published: the &lt;a href="https://elitepropx.com/methodology.html" rel="noopener noreferrer"&gt;methodology&lt;/a&gt; explains what a checked date promises and how corrections are handled, and the &lt;a href="https://elitepropx.com/passed-challenges.html" rel="noopener noreferrer"&gt;passed challenges&lt;/a&gt; page includes the evaluations that were reset — roughly one in twenty — because a service that only lists wins has not published a record, it has published an advertisement.&lt;/p&gt;

&lt;h2&gt;
  
  
  The printable version
&lt;/h2&gt;

&lt;p&gt;Four questions, in the order that saves the most money:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Whose email and name are on the account? · How many retries, in what window, on which firm? · What does the refund return, and by when? · Is the deliverable credentials, a certificate, or a screenshot?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a service answers all four in writing, the price becomes comparable. If it answers two, the price is not the thing you should be comparing.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>A verification page that survives a skeptic: redaction, dates, and publishing the resets</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Fri, 30 Oct 2026 06:36:37 +0000</pubDate>
      <link>https://dev.to/elitepropx/a-verification-page-that-survives-a-skeptic-redaction-dates-and-publishing-the-resets-4mli</link>
      <guid>https://dev.to/elitepropx/a-verification-page-that-survives-a-skeptic-redaction-dates-and-publishing-the-resets-4mli</guid>
      <description>&lt;h1&gt;
  
  
  A verification page that survives a skeptic
&lt;/h1&gt;

&lt;p&gt;Every service in a market like this one has a results page. Almost none of them is worth reading, because the format is the same: logos, a big number, no dates, no method, and a selection rule you cannot see. The page is written to be skimmed by someone already convinced.&lt;/p&gt;

&lt;p&gt;The question worth designing for is different: what would this page have to contain for a &lt;em&gt;skeptical&lt;/em&gt; reader to be able to check it?&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Redaction that keeps the evidence
&lt;/h2&gt;

&lt;p&gt;The instinct is to remove names, then remove account numbers, then remove the date because it feels identifying, and end up with a logo wall that proves nothing.&lt;/p&gt;

&lt;p&gt;Redaction should remove identity, not evidence. Keep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the firm and the plan,&lt;/li&gt;
&lt;li&gt;the account size,&lt;/li&gt;
&lt;li&gt;the pass or reset date,&lt;/li&gt;
&lt;li&gt;the phase and the result,&lt;/li&gt;
&lt;li&gt;the certificate or statement, with the account number masked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is left is a claim a reader can compare against the firm's own timeline and payout mechanics. "Alpha Capital Group, $100k, passed 12 September" is checkable in a way "500+ challenges passed" is not. The dates also make the page expensive to fake at scale, which is why they are the first thing a bad results page drops.&lt;/p&gt;

&lt;p&gt;The version of this that a buyer can actually read is &lt;a href="https://elitepropx.com/passed-challenges.html" rel="noopener noreferrer"&gt;passed prop firm challenges&lt;/a&gt; — certificates in, names out, dates intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Publish the resets
&lt;/h2&gt;

&lt;p&gt;This is the part almost nobody does, and it is the only part that converts the page from marketing into data.&lt;/p&gt;

&lt;p&gt;Any process with a failure rate has failures. If a results page shows none, one of three things is true: the sample is curated, the failures are renamed as something else, or the volume is too small to have any. A reader cannot tell which, so the rational move is to discount all of it.&lt;/p&gt;

&lt;p&gt;Publishing resets alongside passes does something a testimonial cannot: it sets a denominator. If you show twenty passes and one reset, the reader has a rate instead of a claim, and a rate can be argued with. It also forces the operator to write down why each reset happened, which is usually more informative than the passes: a breach on the news window, a trailing floor touched on an overnight gap, a consistency check at review.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Dates on the rules, not just the results
&lt;/h2&gt;

&lt;p&gt;Results age. So do rules. A comparison page dated 2024 is not wrong, it is stale, and the reader has no way to tell which sentences have expired.&lt;/p&gt;

&lt;p&gt;So each figure carries a checked date, and the page says what that date promises: which source was read, what happens when a firm does not publish a figure, and what the page does when a firm changes a rule after publication. That policy is the thing that makes a date mean something — without it, "updated" is a timestamp on a build, not a fact about the content. The one I work to is written up at &lt;a href="https://elitepropx.com/methodology.html" rel="noopener noreferrer"&gt;how we check firm rules&lt;/a&gt;, including the corrections log.&lt;/p&gt;

&lt;p&gt;A corrections log is uncomfortable and worth it. A page that has visibly corrected a figure is more credible than one that has never needed to, because the second one either got lucky or is not checking.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Separate the checkable claims from the persuasive ones
&lt;/h2&gt;

&lt;p&gt;There is a version of this page that puts a success rate at the top, and it is the version that gets discounted. Success rates depend on the sample, the definition of success, and who was allowed to buy — none of which the reader can audit.&lt;/p&gt;

&lt;p&gt;The claims that survive scrutiny are the ones with a paper trail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a fee, and what it covers,&lt;/li&gt;
&lt;li&gt;what happens on a retry,&lt;/li&gt;
&lt;li&gt;a payout split,&lt;/li&gt;
&lt;li&gt;a dated price comparison across providers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full breakdown, including what is and is not refundable, is on the &lt;a href="https://elitepropx.com/blog/prop-firm-passing-service-cost.html" rel="noopener noreferrer"&gt;cost page&lt;/a&gt;. Note the shape of it: prices and terms, no percentages. That is deliberate. The numbers a reader can verify against their own invoice are the numbers that belong on a page like this.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Make the page boring to maintain
&lt;/h2&gt;

&lt;p&gt;A verification page decays the moment it becomes a project. Two fields per record, appended to a text file, rendered at build time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"firm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Example"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"outcome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-09-12"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"evidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"certificate"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"firm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Example"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"outcome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reset"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-09-19"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"daily loss"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If adding a row takes more than a minute, the resets stop being added first, and then the page is a logo wall again. The format should be dull enough that nobody needs to be in the right mood to update it.&lt;/p&gt;




&lt;p&gt;None of this is exotic. It is the ordinary discipline of publishing a denominator, dating your claims, and letting a stranger check the arithmetic. It is rare in this market because it is only worth doing if the results survive being checked — which is exactly the filter a skeptical reader is applying.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>A printable prop firm rule checklist in vanilla JS, with no build step</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Fri, 30 Oct 2026 06:34:08 +0000</pubDate>
      <link>https://dev.to/elitepropx/a-printable-prop-firm-rule-checklist-in-vanilla-js-with-no-build-step-oa4</link>
      <guid>https://dev.to/elitepropx/a-printable-prop-firm-rule-checklist-in-vanilla-js-with-no-build-step-oa4</guid>
      <description>&lt;h1&gt;
  
  
  A printable rule checklist in vanilla JS, with no build step
&lt;/h1&gt;

&lt;p&gt;A prop firm rulebook is written in percentages. A trading platform shows dollars. The gap between those two units is where most evaluation failures happen, and it is a UI problem, not a discipline problem.&lt;/p&gt;

&lt;p&gt;So the tool is small: pick a plan, enter an account size, get every limit in cash, printable. Everything below is the reasoning behind it — no framework, no build step, one file that still works when the network does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The conversion is one function, with a rule about rounding
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accountSize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pct&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accountSize&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;pct&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Math.floor&lt;/code&gt;, not &lt;code&gt;Math.round&lt;/code&gt;. If the true daily limit is $4,999.50 and you display $5,000, a trader can be stopped out and believe they were inside the rule. Rounding in the stricter direction is the only choice that cannot mislead, and it costs nothing.&lt;/p&gt;

&lt;p&gt;The same logic applies to the profit target, except there the strict direction is upward — round the target &lt;em&gt;up&lt;/em&gt;, so "you need $10,000" is never understated as $9,999.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trailing floors are a state machine, not a number
&lt;/h2&gt;

&lt;p&gt;This is the part a static table cannot express. On a trailing plan the floor moves with the peak, so the figure the trader needs is the distance from the floor &lt;em&gt;right now&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;trailingFloor&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;startBalance&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;peak&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;trail&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;locksAtBalance&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;moved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;peak&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;trail&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c1"&gt;// Many plans stop raising the floor once it reaches the starting balance.&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;locksAtBalance&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;moved&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;startBalance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;moved&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;locksAtBalance&lt;/code&gt; is one line of code and it is the difference between a plan that lets you build a cushion and one that follows you until payout. Two plans with identical headline percentages differ only here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Missing data gets a state, not a default
&lt;/h2&gt;

&lt;p&gt;Every checklist row is one of three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;a confirmed figure from a rulebook read on a stated date,&lt;/li&gt;
&lt;li&gt;an unconfirmed row, printed as an open question, or&lt;/li&gt;
&lt;li&gt;a derived figure computed from confirmed inputs.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;row&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;confirmed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;note&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;confirmed&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;confirmed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;unconfirmed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;confirmed&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;note&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The temptation is to delete an unconfirmed row so the checklist looks complete. That is how a checklist stops being a checklist. An open question — "does this plan trail intraday or only at settlement?" — is the most useful line on the page, because it is the one the trader has to answer before paying.&lt;/p&gt;

&lt;p&gt;The working version, with plans read from firm documentation and figures left blank where the firm publishes none, is the &lt;a href="https://elitepropx.com/tools/rule-checklist-generator.html" rel="noopener noreferrer"&gt;rule checklist generator&lt;/a&gt;. It prints, it needs no account, and the row states are visible rather than hidden behind a tooltip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Print CSS is the actual feature
&lt;/h2&gt;

&lt;p&gt;The page exists to be carried into a session, so &lt;code&gt;@media print&lt;/code&gt; is not decoration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;print&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.site-header&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.cta-band&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;form&lt;/span&gt; &lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.checklist&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;break-inside&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;avoid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nc"&gt;.checklist&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;11pt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;break-inside: avoid&lt;/code&gt; on each row matters more than it sounds: a limit split across two printed pages is a limit nobody checks. Hiding the call to action on paper is the difference between a worksheet and a flyer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why vanilla, and where it costs you
&lt;/h2&gt;

&lt;p&gt;Three reasons, in order of how much they mattered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It has to work offline.&lt;/strong&gt; A rules checklist opened on a laptop during a news event should not depend on a CDN.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is one screen of state.&lt;/strong&gt; A framework would be more code than the feature, and harder for the next person to audit — which matters when the correctness of the arithmetic is the product.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No build step means no supply chain.&lt;/strong&gt; Nothing to update, nothing to install, nothing that breaks at 03:00.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cost is real: no reactivity, so every input handler re-renders the list by hand, and the state lives in a plain object that you have to keep coherent. At this size that is cheaper than the alternative. It stops being cheaper around the point you need URL-shareable state, which &lt;a href="https://elitepropx.com/tools/prop-firm-calculator-embed.html" rel="noopener noreferrer"&gt;the embedded calculator&lt;/a&gt; does and this one does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one thing to copy
&lt;/h2&gt;

&lt;p&gt;If you take nothing else: &lt;strong&gt;convert the unit before the trader is in the position.&lt;/strong&gt; A 5% daily limit on a $100,000 account is $5,000. Someone down $3,900 with an open position is not thinking in percentages, and "I still had 1.1% left" is not a thought anybody has while watching a losing trade. The rule was known; it was just in the wrong units.&lt;/p&gt;

&lt;p&gt;Which rule breaks first, once the units line up, is covered one at a time at &lt;a href="https://elitepropx.com/prop-firm-rules/" rel="noopener noreferrer"&gt;prop firm rules explained&lt;/a&gt; — daily loss and maximum loss are the two that end most evaluations, and they are the two that are easiest to misread as the same rule when one trails and the other does not.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>trading</category>
      <category>css</category>
    </item>
    <item>
      <title>Twenty prop firm rulebooks, one schema: normalising rules that only look comparable</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Fri, 30 Oct 2026 06:34:06 +0000</pubDate>
      <link>https://dev.to/elitepropx/twenty-prop-firm-rulebooks-one-schema-normalising-rules-that-only-look-comparable-4fm1</link>
      <guid>https://dev.to/elitepropx/twenty-prop-firm-rulebooks-one-schema-normalising-rules-that-only-look-comparable-4fm1</guid>
      <description>&lt;h1&gt;
  
  
  Twenty prop firm rulebooks, one schema
&lt;/h1&gt;

&lt;p&gt;Two evaluations can advertise the same number for the profit target, the same number for maximum loss, and behave nothing alike.&lt;/p&gt;

&lt;p&gt;That is not an accident of marketing. It is because "10% maximum loss" is three different rules depending on things the headline does not say: whether the floor moves, whether it moves against the &lt;em&gt;equity&lt;/em&gt; peak or the &lt;em&gt;balance&lt;/em&gt; peak, and whether it moves intraday or once at settlement. One trader passes a $100k account on 10% loss and an identical trade sequence fails another. Nothing in the number told them apart.&lt;/p&gt;

&lt;p&gt;I spent a while putting twenty of these side by side. The interesting part was not the figures. It was how many fields have to exist before a comparison is honest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fields that actually decide the outcome
&lt;/h2&gt;

&lt;p&gt;Roughly in order of how often they change the answer:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Why it changes the outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Drawdown model&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;static&lt;/code&gt;, &lt;code&gt;trailing_eod&lt;/code&gt;, &lt;code&gt;trailing_intraday&lt;/code&gt;. A trailing floor turns locked-in profit into a liability.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Drawdown basis&lt;/td&gt;
&lt;td&gt;Equity peak or balance peak. Closing a winner and re-entering changes one and not the other.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Daily limit basis&lt;/td&gt;
&lt;td&gt;Equity or balance, measured on server-day close or continuously.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lock point&lt;/td&gt;
&lt;td&gt;Many trailing plans stop moving once the floor reaches the starting balance; some never stop.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Server-day boundary&lt;/td&gt;
&lt;td&gt;If the reset is 00:00 server time and you trade the 23:00 candle, you are in two days at once.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consistency cap&lt;/td&gt;
&lt;td&gt;Usually "no single day above X% of total profit" — computed on closed P&amp;amp;L, at review, not at pass.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;News window&lt;/td&gt;
&lt;td&gt;A time band around an event, or a flat ban on holding through it. Vague in most rulebooks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimum days&lt;/td&gt;
&lt;td&gt;Turns a fast, correct pass into a breach with no trading error involved.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What "comparable" means, and what it does not
&lt;/h2&gt;

&lt;p&gt;Once those fields exist, the commercial numbers become readable. A plan with a 6% target, a static 6% floor and no minimum days is a different product from one with a 10% target, a trailing intraday 10% floor and five minimum days, even if both are sold as "easy".&lt;/p&gt;

&lt;p&gt;The version of this on &lt;a href="https://elitepropx.com/prop-firm-rules-matrix.html" rel="noopener noreferrer"&gt;ElitePropX's rules matrix&lt;/a&gt; is firm by firm, with the unconfirmed cells left visible rather than filled in. That last part is the design decision that took the most discipline, and it is worth explaining.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do not fill a gap from memory
&lt;/h2&gt;

&lt;p&gt;Every rulebook has a field that is not published, or published only per account size, or moved last quarter. The tempting thing is to infer it — "most trailing plans lock at breakeven, so assume this one does" — and that inference is exactly how a comparison table becomes fiction that reads as data.&lt;/p&gt;

&lt;p&gt;So each record carries its own uncertainty:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"firm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"plan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2-step"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"account_size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"drawdown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"trailing_eod"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"basis"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"equity"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"percent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"locks_at_balance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"consistency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"cap_percent_of_profit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"evaluated"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"review"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"checked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-10-23"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"unconfirmed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"drawdown.locks_at_balance"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;unconfirmed&lt;/code&gt; array is not documentation, it is data: the renderer prints those rows as an open question instead of a number. A field that is null is honest. A field guessed from a sibling plan is a liability in a document someone uses to size a position.&lt;/p&gt;

&lt;p&gt;That convention is written down at &lt;a href="https://elitepropx.com/methodology.html" rel="noopener noreferrer"&gt;how we check firm rules&lt;/a&gt; — which source counts, what a checked date promises, and what happens when a firm changes a figure after publication. If you are building a reference table of anything regulated, the checked-date and corrections policy is the part worth copying first; the table is the easy half.&lt;/p&gt;

&lt;h2&gt;
  
  
  The derived fields do the work
&lt;/h2&gt;

&lt;p&gt;The normalised record is only useful once it produces numbers a trader can act on without arithmetic in a live position:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Distance to floor in cash&lt;/strong&gt; — and on a trailing plan, the distance from the current floor, not from the starting balance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contracts or lots from a stop distance&lt;/strong&gt;, so the size is chosen from the floor rather than from the target.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trades at 1R to clear the target&lt;/strong&gt;, which is usually the moment a plan's "achievability" becomes obvious.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost per attempt including resets&lt;/strong&gt;, because the fee is paid before the outcome is known.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those four are the entire reason to keep a schema rather than a spreadsheet. Each one is a different loss of fidelity when you convert a percentage into currency at the wrong moment, and each is cheap once the fields are typed.&lt;/p&gt;

&lt;p&gt;The eight rules themselves, one at a time — daily loss, maximum loss, trailing drawdown, consistency, news, weekend holding, EAs, minimum days — are covered at &lt;a href="https://elitepropx.com/prop-firm-rules/" rel="noopener noreferrer"&gt;prop firm rules explained&lt;/a&gt;. Read that first if the field names above are new; come back to the schema when you need to compare two plans rather than understand one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway, if you never build the table
&lt;/h2&gt;

&lt;p&gt;Normalising rules is not a data-cleaning exercise. It is the step that reveals the rule the firm did not put in the headline. If you only ever do one thing, record for each plan you buy: the drawdown model, the basis, and the server-day boundary. Those three explain most of the resets that look like bad trading and are not.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>json</category>
      <category>datascience</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The clause that voids a funded account, and where you should have read it</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Mon, 26 Oct 2026 15:46:38 +0000</pubDate>
      <link>https://dev.to/elitepropx/the-clause-that-voids-a-funded-account-and-where-you-should-have-read-it-ndc</link>
      <guid>https://dev.to/elitepropx/the-clause-that-voids-a-funded-account-and-where-you-should-have-read-it-ndc</guid>
      <description>&lt;p&gt;Almost every buyer of a prop firm passing service checks the price. Very few check whether the service is permitted where they intend to use it. Those two checks take about the same amount of time, and only one of them can cost you the account. The same asymmetry — paying for the attempt, not the outcome — is why &lt;a href="https://dev.to/elitepropx/the-retry-policy-is-the-real-price-of-a-prop-firm-passing-service-2omk"&gt;the retry policy is the real price of a passing service&lt;/a&gt; is worth reading before the terms page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the clause lives
&lt;/h2&gt;

&lt;p&gt;Firms do not put the relevant term in one place. It shows up in three documents, and they are enforced at different moments:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Document&lt;/th&gt;
&lt;th&gt;What it governs&lt;/th&gt;
&lt;th&gt;When it bites&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Evaluation terms&lt;/td&gt;
&lt;td&gt;Who may trade the evaluation account&lt;/td&gt;
&lt;td&gt;During the evaluation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Funded account agreement&lt;/td&gt;
&lt;td&gt;Account ownership, delegation, sharing&lt;/td&gt;
&lt;td&gt;Before the funded login is issued&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payout conditions&lt;/td&gt;
&lt;td&gt;What must be true at withdrawal&lt;/td&gt;
&lt;td&gt;At payout review&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The third one is the one people miss. Passing the evaluation is not the same permission as being paid from the funded account, and the two are governed by separate text.&lt;/p&gt;

&lt;h2&gt;
  
  
  The clause that actually matters
&lt;/h2&gt;

&lt;p&gt;Search the firm's terms for these terms, in this order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;third-party trading&lt;/strong&gt; — the direct one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;account sharing&lt;/strong&gt; or &lt;strong&gt;shared access&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;delegation&lt;/strong&gt; / &lt;strong&gt;discretionary management&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;automated or algorithmic trading&lt;/strong&gt;, if a bot is involved&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ownership of the account&lt;/strong&gt; and whether it can be operated by someone other than the named holder&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most firms prohibit at least one of these outright on the funded account. Several permit it on the evaluation and forbid it afterwards, which is the worst combination for a buyer, because the service succeeds and the payout still fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why enforcement lands late
&lt;/h2&gt;

&lt;p&gt;A prohibited arrangement is usually not detected at account issue. It is detected after the account is traded and a payout is requested, when the firm reviews the trading record against the person who requested the logins. That review is where the term is applied.&lt;/p&gt;

&lt;p&gt;The practical consequence: the risk is not spread evenly. It is concentrated at the single moment when the money is supposed to move. A service that does not tell you this is not protecting you from it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the check should look like before you pay
&lt;/h2&gt;

&lt;p&gt;Four questions, and the answers should arrive in writing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Has the specific firm and account size been checked&lt;/strong&gt;, or is the answer about firms in general?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which clause was read&lt;/strong&gt;, and on the evaluation or on the funded account — or both?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What happens if the answer is no?&lt;/strong&gt; The correct answer is a refusal before payment, not a refund after a breach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What access is requested, and when does it end?&lt;/strong&gt; Scope limited to the evaluation account, returned on the pass, password changed afterwards.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the service cannot answer the second question, the "terms check" is a slogan. Reading the terms is a specific action with a specific output, and the output is a sentence naming the clause.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable part
&lt;/h2&gt;

&lt;p&gt;Some firms forbid this entirely, on both accounts. There is no version of the service that is permitted there, and any provider willing to accept that job has decided your account is worth more to them than the restriction is.&lt;/p&gt;

&lt;p&gt;That is why the refusal matters more than the acceptance. A provider that says yes to every firm has not read anything — and the place you find that out is the payout stage, after you have paid twice and waited six weeks.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://elitepropx.com/services/passing-prop-firm-services.html" rel="noopener noreferrer"&gt;terms-check step in the process I run&lt;/a&gt; happens before payment and has one of two outcomes: we name the clause and proceed, or we decline and the process stops at no cost. The funded stage is deliberately not covered — once the account is in your hands, sizing and drawdown management are yours, and no passing service can trade it for you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I run ElitePropX, a prop firm challenge passing service. This post describes the check we are supposed to perform; if a firm's current terms prohibit third-party trading, we decline the job. Verify the terms yourself for the firm and account size you are considering — terms change, and this post is general rather than specific to any firm's current rules.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>trading</category>
      <category>finance</category>
      <category>risk</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The retry policy is the real price of a prop firm passing service</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Mon, 26 Oct 2026 15:45:08 +0000</pubDate>
      <link>https://dev.to/elitepropx/the-retry-policy-is-the-real-price-of-a-prop-firm-passing-service-2omk</link>
      <guid>https://dev.to/elitepropx/the-retry-policy-is-the-real-price-of-a-prop-firm-passing-service-2omk</guid>
      <description>&lt;p&gt;If you compare prop firm passing services by headline fee, you will pick wrong about half the time. The number that decides what you actually spend is the &lt;strong&gt;retry policy&lt;/strong&gt; — and most providers do not publish it. If you want to price your own situation rather than take a table on trust, &lt;a href="https://dev.to/elitepropx/the-expected-value-of-a-prop-firm-challenge-in-python-5g9i"&gt;the expected value of a prop firm challenge, in Python&lt;/a&gt; lets you plug your own pass rate and fee into the same arithmetic.&lt;/p&gt;

&lt;p&gt;Here is the arithmetic that makes the difference visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The model
&lt;/h2&gt;

&lt;p&gt;Let &lt;code&gt;f&lt;/code&gt; be the fee, &lt;code&gt;p&lt;/code&gt; the probability of passing a given attempt, and &lt;code&gt;m&lt;/code&gt; the multiple of the fee charged on a retry (&lt;code&gt;1.0&lt;/code&gt; = full price again, &lt;code&gt;0.0&lt;/code&gt; = free).&lt;/p&gt;

&lt;p&gt;The expected spend per funded account is not &lt;code&gt;f&lt;/code&gt;. It is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;cost_per_funded_account&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fee&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pass_prob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;retry_multiplier&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;trials&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_attempts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Expected total spend to end up with one funded account.

    retry_multiplier: 1.0 -&amp;gt; a failed attempt costs the full fee again
                      0.5 -&amp;gt; retries are discounted
                      0.0 -&amp;gt; retries are free
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trials&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_attempts&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;fee&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;fee&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;retry_multiplier&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;pass_prob&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;trials&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;fee&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mult&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="mi"&gt;220&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;588&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;)]:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;$&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;fee&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; fee, retry x&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;mult&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;cost_per_funded_account&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fee&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mult&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At a 40% pass rate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$220 fee, retry x0.0:   $220
$400 fee, retry x0.0:   $400
$400 fee, retry x1.0:   $1,000
$588 fee, retry x1.0:   $1,470
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The provider advertising &lt;strong&gt;$400&lt;/strong&gt; can cost you more than twice the one advertising &lt;strong&gt;$588&lt;/strong&gt;. Nothing on either sales page tells you which column you are in, because the retry term is buried in checkout or not stated at all.&lt;/p&gt;

&lt;p&gt;This is the whole problem with fee comparison tables. They compare the price of attempt one and call it the price of the service.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the published prices actually are
&lt;/h2&gt;

&lt;p&gt;I keep a dated table of what these services charge at two account sizes. Checked October 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;At $100k&lt;/th&gt;
&lt;th&gt;At $200k&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://elitepropx.com/services/passing-prop-firm-services.html" rel="noopener noreferrer"&gt;ElitePropX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$220&lt;/td&gt;
&lt;td&gt;$220&lt;/td&gt;
&lt;td&gt;Flat, any size, retries covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ThePropFirmPass&lt;/td&gt;
&lt;td&gt;£449 (~$565)&lt;/td&gt;
&lt;td&gt;Not published&lt;/td&gt;
&lt;td&gt;Rises with size, from £349&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PassYourProp&lt;/td&gt;
&lt;td&gt;$588&lt;/td&gt;
&lt;td&gt;$1,158&lt;/td&gt;
&lt;td&gt;Size tiers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pass Prop Challenges&lt;/td&gt;
&lt;td&gt;$400&lt;/td&gt;
&lt;td&gt;$700&lt;/td&gt;
&lt;td&gt;Size tiers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Funded Traders Passing&lt;/td&gt;
&lt;td&gt;Not published&lt;/td&gt;
&lt;td&gt;Not published&lt;/td&gt;
&lt;td&gt;Quote only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things stand out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The spread is wider than the headline fees suggest.&lt;/strong&gt; At $200k, the gap between the cheapest flat price and the highest published price is more than 5x. If you are comparing providers for a $200k account, the fee you read at $100k is not the fee you pay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One of five does not publish a price at all.&lt;/strong&gt; Quote-only pricing is not automatically bad, but it means you cannot compare it to anything without asking, and you cannot tell later whether the number moved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions that decide the real cost
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What happens to a failed attempt?&lt;/strong&gt; Free re-run, discounted, or full price again. This single answer moves the expected cost more than the fee does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the fee change with account size?&lt;/strong&gt; A flat fee removes size from the calculation. A tiered fee means the $100k price is marketing and the $200k price is the product.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is there a profit split on the funded account?&lt;/strong&gt; A profit share is not a lower fee, it is a fee paid later and contingent on the account surviving. It also gives the provider a position in your funded account.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why the retry term is usually unstated
&lt;/h2&gt;

&lt;p&gt;Because stating it makes the headline number look worse, and the headline number is what gets compared. A provider charging $400 with free retries and a provider charging $400 with full-price retries present identically until you are at checkout.&lt;/p&gt;

&lt;p&gt;There is a structural version of this: a per-attempt fee is billable every time you fail, so the provider is paid more when you need more tries. That is not an accusation of bad faith, it is a description of the incentive. Fee models reward different behaviours, and you should know which behaviour your provider is being paid for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one thing to ask before you pay
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"If the evaluation fails while you are running it, what do I owe you for the next attempt?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Anything other than a clear answer is an answer. If the provider cannot state it in writing before you pay, the term that governs your loss is the one you did not read.&lt;/p&gt;

&lt;p&gt;Worth adding: the firm's own reset charge is separate from the service fee and is usually not refundable either. Model both. The &lt;a href="https://elitepropx.com/services/passing-prop-firm-services.html" rel="noopener noreferrer"&gt;flat-fee model I run&lt;/a&gt; covers resets while the evaluation is running, which is the reason it is priced the way it is rather than per attempt.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I run ElitePropX, one of the providers in the table above — so treat the $220 line as our own price rather than an independent figure. The other four figures are from their public pricing pages, checked October 2026, and I can send the raw rows to anyone who wants to rebuild the table.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>trading</category>
      <category>finance</category>
      <category>statistics</category>
      <category>python</category>
    </item>
    <item>
      <title>VPS latency is a trading rule, not an infrastructure detail</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Tue, 13 Oct 2026 18:34:31 +0000</pubDate>
      <link>https://dev.to/elitepropx/vps-latency-is-a-trading-rule-not-an-infrastructure-detail-4gm0</link>
      <guid>https://dev.to/elitepropx/vps-latency-is-a-trading-rule-not-an-infrastructure-detail-4gm0</guid>
      <description>&lt;p&gt;The connection between your trading terminal and the broker's server is usually filed under "infrastructure". On a prop firm evaluation it is a rule, because several of the rules that end accounts are enforced on &lt;em&gt;time&lt;/em&gt; rather than on price. A stop that triggers on your chart and a stop that triggers on the firm's server are two different events, and latency is the distance between them. Latency is only half the story: the same fill difference that costs a few ticks can decide whether a trailing floor is touched, which is what &lt;a href="https://dev.to/elitepropx/trailing-vs-static-drawdown-simulating-why-the-same-trades-pass-one-prop-firm-account-and-fail-4meg"&gt;trailing vs static drawdown&lt;/a&gt; shows with real intraday paths.&lt;/p&gt;

&lt;p&gt;This is worth taking seriously because the failure it produces is invisible in a backtest and looks like bad luck in a journal: the price never touched your stop, yet you were stopped out; or the daily loss limit fired and the loss you see is larger than the loss you sized.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three rules that are actually clocks
&lt;/h2&gt;

&lt;p&gt;Almost every drawdown rule that causes a surprise has a time component:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The daily loss limit reset.&lt;/strong&gt; It resets at a fixed server time — often the firm's midnight, sometimes the market's daily close in a specific timezone. The exact instant your "day" starts and ends is a server-defined boundary, not the one on your wall clock.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The news window.&lt;/strong&gt; Restrictions on opening or holding positions are defined as intervals around an event (e.g. "two minutes either side of a high-impact release"). The window is measured on the server's clock.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The maximum trade duration / overnight cutoff.&lt;/strong&gt; Some programmes require positions to be closed within a session or before a cutoff time. The cutoff is a server timestamp.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your terminal's clock, your VPS's clock and the broker's clock disagree, a trade you believe is inside the window can be outside it — and there is no "close enough". The rule evaluates a timestamp.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a home connection is the wrong reference
&lt;/h2&gt;

&lt;p&gt;Two distinct problems, and it is worth separating them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Latency.&lt;/strong&gt; The round-trip time between your terminal and the server. On a routed home connection in a different region this can be tens of milliseconds with high variance. That variance is the issue, not the absolute number: a variable delay means a stop order that arrives late by exactly the amount the price moved in that window, which on a fast instrument during a release can be the difference between a $200 loss and a $600 one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Timing.&lt;/strong&gt; Most prop-firm rule enforcement happens server-side, so latency does not change &lt;em&gt;whether&lt;/em&gt; the rule fired — it changes the price at which your order filled relative to the trigger. But a home connection with an unstable clock can also change what your terminal &lt;em&gt;thinks&lt;/em&gt; the time is, which matters for a manual decision near a cutoff.&lt;/p&gt;

&lt;p&gt;A VPS fixes both by placing the client in the same datacentre region as the broker, cutting round-trip time to single-digit milliseconds and removing the domestic-connection jitter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The arithmetic of a late fill
&lt;/h2&gt;

&lt;p&gt;The reason this matters to the account rather than to comfort is that the loss from a late fill is proportional to size:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extra loss = slippage_per_unit × size (in units)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Take a scenario: during a news release, price moves 8 pips in the 40 ms between your stop triggering and your order reaching the server under a home connection, versus 1 pip on a co-located VPS. On a position where one pip is worth $10: Execution only explains so much if the exposure is the real problem, which is the argument in &lt;a href="https://dev.to/elitepropx/multiple-funded-accounts-are-one-position-not-several-377c"&gt;multiple funded accounts are one position&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Home connection: 8 pips × $10 = &lt;strong&gt;$80 of slippage&lt;/strong&gt; on that single exit.&lt;/li&gt;
&lt;li&gt;Co-located VPS: 1 pip × $10 = &lt;strong&gt;$10&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither fills at the stop price, so both are worse than the chart suggests. The difference is $70 on one trade. Repeat it across a strategy that exits several times a day and the VPS is not a luxury — it is a direct reduction in the slippage that eats into a drawdown budget already measured in dollars.&lt;/p&gt;

&lt;p&gt;The second-order effect is worse. A stop that fills 8 pips late is 8 pips closer to the floor than planned, and the trader's sizing assumed the &lt;em&gt;planned&lt;/em&gt; stop. The trade was correctly sized for one loss and delivered a larger one. Over a series, that drift is exactly what "my account died earlier than my backtest" looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the firms require
&lt;/h2&gt;

&lt;p&gt;Many firms make a VPS mandatory for automated trading (EAs and bots), for two reasons: to keep the strategy's latency predictable, and to satisfy the firm's own requirement that the client runs continuously. The requirement is usually stated in the automated-trading or technical section of the rules rather than on the pricing page, which is why it surprises traders who read only the marketing.&lt;/p&gt;

&lt;p&gt;The practical checklist before running anything automated on an evaluation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Location.&lt;/strong&gt; The VPS region should match the broker's server region. Latency is a function of geography, not of how much RAM you bought.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always-on.&lt;/strong&gt; The client must not sleep. A dropped connection during an open position is a rule risk (some firms treat a dropped EA as a violation).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clock sync.&lt;/strong&gt; NTP synchronisation, so the terminal's timestamps agree with the server's for window-based rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standby power and redundancy.&lt;/strong&gt; A VPS that reboots on the daily boundary can miss the cutoff. The failure mode is a position held through a window that should have been closed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What to do this week
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Measure your actual round-trip latency&lt;/strong&gt; to the broker's server, not to a generic internet host, and note the &lt;em&gt;variance&lt;/em&gt; over a session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find the firm's reset time and news windows in server time&lt;/strong&gt;, and convert them into the timezone your terminal displays. Put the conversions on the chart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price the slippage you are currently paying.&lt;/strong&gt; If it is a meaningful fraction of your daily drawdown allowance, co-location pays for itself faster than any strategy tweak.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size from the realistic stop, not the ideal one.&lt;/strong&gt; If you know your exits slip, the budget should include the slip.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of this is alpha. It is the difference between a rule that fires on the server at the moment it is written to fire and a rule that fires on your side of the connection at a moment you did not choose. On an account whose entire margin is a few thousand dollars of drawdown, that difference is not infrastructure — it is risk.&lt;/p&gt;

&lt;p&gt;The practical setup — which programmes require a VPS, what region to pick for each broker, and how the timing rules are written — is in the &lt;a href="https://elitepropx.com/blog/prop-firm-vps-requirements.html" rel="noopener noreferrer"&gt;VPS requirements breakdown&lt;/a&gt;. If you would rather model the cost of slippage on your own sizing before choosing, the &lt;a href="https://elitepropx.com/tools/prop-firm-profit-calculator.html" rel="noopener noreferrer"&gt;prop firm profit calculator&lt;/a&gt; works in the same account currency.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>javascript</category>
      <category>finance</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Multiple funded accounts are one position, not several</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Tue, 13 Oct 2026 18:33:55 +0000</pubDate>
      <link>https://dev.to/elitepropx/multiple-funded-accounts-are-one-position-not-several-377c</link>
      <guid>https://dev.to/elitepropx/multiple-funded-accounts-are-one-position-not-several-377c</guid>
      <description>&lt;p&gt;A trader runs three funded accounts at the same firm, same instrument, same strategy, and treats them as three independent shots at a payout. Then a single bad session takes all three at once. The accounts were not three positions. They were one position, tripled, with three drawdown floors reporting the same loss.&lt;/p&gt;

&lt;p&gt;The diversification a trader thinks they own from multiple accounts is a function of &lt;em&gt;correlation between the account strategies&lt;/em&gt;, not the number of accounts. Getting this wrong is one of the most expensive modelling errors available, because it converts what looks like risk reduction into concentrated risk with three times the fee surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the independence assumption is so tempting
&lt;/h2&gt;

&lt;p&gt;Three accounts feels safer than one for an obvious reason: three floors means three separate opportunities for at least one to survive. That intuition is correct &lt;em&gt;if the strategies are independent&lt;/em&gt;. The arithmetic is the same as any portfolio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One account, probability of breach on a given day: &lt;code&gt;p&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Three accounts, probability that &lt;em&gt;all&lt;/em&gt; breach on a given day: &lt;code&gt;p³&lt;/code&gt; (if independent).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At &lt;code&gt;p = 0.2&lt;/code&gt;, that is 0.8% — reassuring. But the same three accounts trading the &lt;em&gt;same strategy on the same instrument in the same session&lt;/em&gt; have correlated daily returns. In the limit of perfect correlation, all three breach together: Running several accounts at one firm is not diversification, it is one position at several times the size — and when the correlated loss lands, the breaches stack; see &lt;a href="https://dev.to/elitepropx/a-soft-breach-and-a-hard-breach-are-different-failures-9g1"&gt;a soft breach and a hard breach are different failures&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Three perfectly correlated accounts, probability all breach: &lt;code&gt;p&lt;/code&gt; = 20%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two scenarios have identical account counts and identical per-account risk. They differ only in correlation, and the difference in joint-breach probability is a factor of twenty-five.&lt;/p&gt;

&lt;p&gt;That is the whole point: &lt;strong&gt;accounts are not the unit of diversification; strategies are.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the correlation actually comes from
&lt;/h2&gt;

&lt;p&gt;It is worth naming the sources, because they are all avoidable and none of them is visible on a dashboard:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Same instrument, same direction.&lt;/strong&gt; Two accounts long the same index in the same session is one bet, expressed twice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Same strategy, same signals.&lt;/strong&gt; A mean-reversion system run on three accounts generates the same entries. The trades are duplicates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Same session.&lt;/strong&gt; Two different edges traded in the same overlapping hours share the market regime, and regimes are the dominant risk factor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Same firm's shared constraint.&lt;/strong&gt; If the firm applies a portfolio-level or per-trader rule, three accounts at one firm are not even independent at the &lt;em&gt;rule&lt;/em&gt; level.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Only the first is obvious. The second and third are the ones that actually bite, because a trader running a breakout strategy on three accounts in the same 90-minute window is, mechanically, running one breakout strategy at triple size.&lt;/p&gt;

&lt;h2&gt;
  
  
  The measurable version
&lt;/h2&gt;

&lt;p&gt;If you keep trade logs per account, the correlation is computable and it is not hard:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Pearson correlation of daily returns between two accounts.&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;corr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;da&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;xa&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;ma&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;xb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;mb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;xa&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;xb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;da&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;xa&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;xa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;db&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;xb&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;xb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;da&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it on the daily P&amp;amp;L of account A against account B. A value near &lt;code&gt;1.0&lt;/code&gt; means the two accounts are one position. A value near &lt;code&gt;0&lt;/code&gt; means the second account is genuinely diversifying. Most "multiple accounts" setups measure above 0.8, which is why the downside arrives correlated even when the accounts look independent on paper.&lt;/p&gt;

&lt;p&gt;For more than two accounts, the object you want is the correlation matrix, and the useful summary is its largest eigenvalue: if one factor explains most of the variance, you have one strategy wearing several hats.&lt;/p&gt;

&lt;h2&gt;
  
  
  The consequences for drawdown
&lt;/h2&gt;

&lt;p&gt;Correlation does not just change the probability of a joint breach. It changes the &lt;em&gt;shape&lt;/em&gt; of the loss you have to survive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Independent accounts:&lt;/strong&gt; losses arrive at different times. One account can be funded and paying while another is recovering. The equity curve of the &lt;em&gt;portfolio of accounts&lt;/em&gt; is smooth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Correlated accounts:&lt;/strong&gt; losses arrive together. Every account is down on the same day, against floors that are all measured from peaks that all rose together. The worst day in one account is the worst day in all of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because drawdown is a function of the worst &lt;em&gt;path&lt;/em&gt;, not the average, correlated accounts concentrate exactly the event that ends them. The trailing-floor mechanic makes this worse: a good run raises all three floors simultaneously, so all three accounts are at maximum vulnerability at the same moment.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do about it
&lt;/h2&gt;

&lt;p&gt;None of this means multiple accounts are a mistake. It means the diversification has to be engineered rather than assumed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Measure the correlation before adding the third account.&lt;/strong&gt; Two accounts at 0.9 are one account with double fees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diversify the &lt;em&gt;strategy family&lt;/em&gt;, not the instrument.&lt;/strong&gt; Two correlated instruments (an index and its futures) are not diversifying; an intraday momentum system and an overnight mean-reversion system may be.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stagger the session, not just the signal.&lt;/strong&gt; If both accounts trade the same hours, they share the regime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the firm's portfolio-level rules.&lt;/strong&gt; Some firms cap aggregate risk across a trader's accounts, which makes the accounts correlated by policy regardless of strategy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reserve the uncorrelated account for the worst day.&lt;/strong&gt; The value of the second account is highest when it is the one &lt;em&gt;not&lt;/em&gt; in the drawdown. That only happens if it holds a different bet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A funded account is a small business with a hard floor. Running three of them is running three businesses — and three businesses selling the same thing in the same market on the same day are one business with three sets of overheads. Correlation is the number that tells you which you have.&lt;/p&gt;

&lt;p&gt;The practical firm-level detail — per-trader account caps, whether one firm's accounts share a risk limit, and how the rules treat multiple accounts at the same or different firms — is in the &lt;a href="https://elitepropx.com/blog/multiple-accounts-one-prop-firm.html" rel="noopener noreferrer"&gt;multiple accounts at one firm breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>statistics</category>
      <category>finance</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Weekend holding: what an overnight gap does to a funded account</title>
      <dc:creator>Okeke Jenny</dc:creator>
      <pubDate>Tue, 13 Oct 2026 18:33:20 +0000</pubDate>
      <link>https://dev.to/elitepropx/weekend-holding-what-an-overnight-gap-does-to-a-funded-account-4pdl</link>
      <guid>https://dev.to/elitepropx/weekend-holding-what-an-overnight-gap-does-to-a-funded-account-4pdl</guid>
      <description>&lt;p&gt;Here is a rule that costs more accounts than almost any other and gets discussed the least: what happens to an open position between Friday's close and Monday's open. Many prop firms restrict or forbid holding across the weekend. The restriction is easy to read and easy to ignore, because a backtest rarely tells you it exists — and because the strategy that violates it often looks &lt;em&gt;better&lt;/em&gt; than one that respects it.&lt;/p&gt;

&lt;p&gt;This is about the gap: why overnight and weekend exposure is a different instrument from intraday exposure, and how to decide whether your edge can live inside the rule.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap is not a bigger candle
&lt;/h2&gt;

&lt;p&gt;An overnight gap is a discontinuity, and discontinuity behaves differently from volatility in one specific way: it cannot be stopped out at a price.&lt;/p&gt;

&lt;p&gt;Consider a long on an instrument that closes at $1.0000 on Friday. Over a weekend, news moves the open to $0.9800 on Sunday night. A stop at $0.9950 did not get you out at $0.9950. It got you out at the first available price, which is $0.9800 — 150 pips below your intended exit, on a single bar, with no chance to react. Gap arithmetic is easy to get wrong in a backtest for the same reason as &lt;a href="https://dev.to/elitepropx/look-ahead-bias-hides-in-the-bars-you-did-not-load-554d"&gt;look-ahead bias hides in the bars you did not load&lt;/a&gt;: the bar you never loaded is the one that moved the floor.&lt;/p&gt;

&lt;p&gt;That difference matters most in exactly the situation a funded account is most vulnerable: right after a good run. A trader who is up $6,000 on a $50,000 account with a $2,500 trailing floor has a floor that has climbed to $53,500. A weekend gap of 180 pips on a size that translates to 3% of the account is not a loss on the weekend. It is a &lt;strong&gt;hard breach at the open&lt;/strong&gt;, before the first trade of the new week. A gap is easiest to size for if you convert the rule into currency first — the &lt;a href="https://elitepropx.com/tools/maximum-loss-calculator.html" rel="noopener noreferrer"&gt;maximum loss calculator&lt;/a&gt; turns the percentage floor into the distance your position can travel overnight.&lt;/p&gt;

&lt;p&gt;The gap did not exceed the drawdown. It exceeded the &lt;em&gt;stops&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the rule exists at the firm
&lt;/h2&gt;

&lt;p&gt;Two reasons, and it is worth understanding both because they shape how tightly firms enforce it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Risk control across the book.&lt;/strong&gt; A firm holding hundreds of accounts cannot hedge a shared directional exposure that every account carries into a weekend. Forbidding the hold removes a correlated tail risk from the entire portfolio at once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accountability for the gap.&lt;/strong&gt; A gap is un-hedgeable and uncontrollable, which makes it the worst possible event for a firm that has to defend a maximum drawdown. It is the one loss that cannot be managed by skill, so the rule removes it by construction.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is why the rule is usually a hard restriction with no fee-based workaround, unlike a daily-loss soft breach. Firms are not selling you a product you can pay to keep; they are removing an unmanageable risk from their book.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two shapes of the rule
&lt;/h2&gt;

&lt;p&gt;"Don't hold over the weekend" is written in at least three different ways, and they are not equivalent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No positions held through Friday's close.&lt;/strong&gt; You must be flat before the close. The strictest form.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No positions opened within a window before the close.&lt;/strong&gt; You may hold a position opened earlier, but cannot add near the close. This is a hedging of the same risk, and it interacts with your entry timing rather than your holding policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instrument-specific.&lt;/strong&gt; Some firms ban weekend holds on indices and FX but allow them on others, or vice versa. The restriction is in the instrument list, not the general rulebook.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assume the strictest interpretation until you have read the firm's specific account-type rules. A general marketing page saying "swing trading allowed" frequently refers to the &lt;em&gt;funded&lt;/em&gt; account, not the evaluation, or to a specific programme. Whether that gap is fatal depends on which drawdown model the firm runs: on a static floor you can absorb it, on a trailing floor the same gap closes an account that looked safe — &lt;a href="https://dev.to/elitepropx/trailing-vs-static-drawdown-simulating-why-the-same-trades-pass-one-prop-firm-account-and-fail-4meg"&gt;trailing vs static drawdown&lt;/a&gt; simulates the identical trade sequence under both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is your edge actually a gap edge?
&lt;/h2&gt;

&lt;p&gt;The question that decides everything: strip the overnight moves out of your backtest and look at what is left.&lt;/p&gt;

&lt;p&gt;A quick way to do it — recompute the strategy using only the intraday path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Does the edge survive without the gap?&lt;/span&gt;
&lt;span class="c1"&gt;// Take the same signals, but close the position before the session ends&lt;/span&gt;
&lt;span class="c1"&gt;// and re-enter at the next open instead of holding through it.&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;withoutGaps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;trades&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;trades&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;// Replace the overnight return with zero: the position is flat across the gap.&lt;/span&gt;
    &lt;span class="na"&gt;pnl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pnlIntraday&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;withGaps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;trades&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;trades&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;pnl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pnlIntraday&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;overnight&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the difference between &lt;code&gt;withGaps&lt;/code&gt; and &lt;code&gt;withoutGaps&lt;/code&gt; is most of the strategy's total return, the edge lives in the gap. That is not a flaw in the strategy — it is information. It means the strategy is incompatible with any firm that forbids the hold, and the correct response is to filter the firm list by that constraint &lt;em&gt;before&lt;/em&gt; comparing anything else, not to try to trade it anyway.&lt;/p&gt;

&lt;p&gt;If the difference is small, the strategy has an intraday core and the overnight component is noise. In that case the rule costs you little and you can ignore it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure mode to guard against
&lt;/h2&gt;

&lt;p&gt;The dangerous version of this is a trader who knows the rule, believes the overnight component is small, and is wrong — because the backtest understated it. Backtests frequently misprice overnight exposure in three ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They fill at the close rather than the open, silently avoiding the gap.&lt;/li&gt;
&lt;li&gt;They assume the stop was honoured at its price on the gap bar.&lt;/li&gt;
&lt;li&gt;They use continuous synthetic bars that do not have gaps at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of those turns a real weekend risk into a modelled non-event. The fix is to reconstruct the strategy on actual session-boundary data, with the open price as the only fill available after a gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to write down
&lt;/h2&gt;

&lt;p&gt;Before buying any evaluation, three numbers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The rule, in the firm's exact wording.&lt;/strong&gt; Which instruments, which programme, which account type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The overnight share of your edge.&lt;/strong&gt; The &lt;code&gt;withGaps&lt;/code&gt; minus &lt;code&gt;withoutGaps&lt;/code&gt; difference, as a fraction of total P&amp;amp;L.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The gap risk in account currency.&lt;/strong&gt; The worst historical weekend gap in your instrument, times your typical size — expressed in the drawdown's units, not pips.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If (2) is large, the rule is disqualifying for that firm and no sizing fixes it. If (3) is large relative to your remaining room, the same is true even for a small gap edge. The rule is not a formality you sign past; it is a constraint that eliminates some strategies and some firms, and the arithmetic that decides which is short and knowable in advance.&lt;/p&gt;

&lt;p&gt;The firm-by-firm version of the rule — which programmes permit weekend holds, which ban them outright, and where the instruments differ — is in the &lt;a href="https://elitepropx.com/blog/prop-firm-weekend-holding-rules.html" rel="noopener noreferrer"&gt;weekend holding rules breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>javascript</category>
      <category>finance</category>
      <category>statistics</category>
    </item>
  </channel>
</rss>
