<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Backtesting on Mulham Fetna</title>
    <link>https://mulhamfetna.com/tags/backtesting/</link>
    <description>Recent content in Backtesting on Mulham Fetna</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>contact@mulhamfetna.com (Mulham Fetna)</managingEditor>
    <webMaster>contact@mulhamfetna.com (Mulham Fetna)</webMaster>
    <copyright>© 2026 Mulham Fetna</copyright>
    <lastBuildDate>Mon, 07 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mulhamfetna.com/tags/backtesting/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>We forward-tested our own strategies on data they&#39;d never seen. They kept 17.6%</title>
      <link>https://mulhamfetna.com/projects/trading-strategy-finder/forward-decay/</link>
      <pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate>
      <author>contact@mulhamfetna.com (Mulham Fetna)</author>
      <guid>https://mulhamfetna.com/projects/trading-strategy-finder/forward-decay/</guid>
      <description>&lt;p&gt;Everyone forward-tests other people&amp;rsquo;s strategies. The uncomfortable experiment is doing it to your&#xA;own — the 54 optimizer-selected configurations you actually believe in — on a window of the future&#xA;that arrived &lt;em&gt;after&lt;/em&gt; every parameter was fixed, with a falsifier written before the run.&lt;/p&gt;&#xA;&lt;p&gt;We did it twice (round two after a data correction — more on that below). Here&amp;rsquo;s what honest&#xA;out-of-sample performance looks like.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;The headline table&#xA;    &lt;div id=&#34;the-headline-table&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#the-headline-table&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;3,733 entirely new trades across all 54 configurations, nine futures markets:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Fresh window, all 54&lt;/th&gt;&#xA;          &lt;th&gt;trades&lt;/th&gt;&#xA;          &lt;th&gt;raw&lt;/th&gt;&#xA;          &lt;th&gt;at $10/round-trip&lt;/th&gt;&#xA;          &lt;th&gt;at $25/round-trip&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;total&lt;/td&gt;&#xA;          &lt;td&gt;3,733&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;+$29,807&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;−$7,523&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;−$63,518&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&#xA;&lt;div class=&#34;chart&#34;&gt;&#xA;  &lt;canvas id=&#34;chart-2df95fd841dd091acb99a32486df3172&#34;&gt;&lt;/canvas&gt;&#xA;  &lt;script type=&#34;text/javascript&#34;&gt;&#xA;    window.addEventListener(&#34;DOMContentLoaded&#34;, (event) =&gt; {&#xA;      const ctx = document.getElementById(&#34;chart-2df95fd841dd091acb99a32486df3172&#34;);&#xA;      const chart = new Chart(ctx, {&#xA;        &#xA;type: &#39;bar&#39;,&#xA;data: {&#xA;  labels: [&#39;Raw (no costs)&#39;, &#39;At $10 per round trip&#39;, &#39;At $25 per round trip&#39;],&#xA;  datasets: [{&#xA;    label: &#39;Fleet P&amp;L, 3,733 fresh trades ($)&#39;,&#xA;    data: [29807, -7523, -63518],&#xA;    backgroundColor: [&#39;rgba(34, 197, 94, 0.55)&#39;, &#39;rgba(245, 158, 11, 0.6)&#39;, &#39;rgba(239, 68, 68, 0.65)&#39;]&#xA;  }]&#xA;},&#xA;options: {&#xA;  plugins: { legend: { display: false }, title: { display: true, text: &#39;The same 3,733 trades under three cost assumptions&#39; } },&#xA;  scales: { y: { title: { display: true, text: &#39;$&#39; } } }&#xA;}&#xA;&#xA;      });&#xA;    });&#xA;  &lt;/script&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The raw positive is statistically indistinguishable from zero (t = 0.88). Against what the&#xA;calibration window &lt;em&gt;promised&lt;/em&gt;, the fleet kept &lt;strong&gt;17.6%&lt;/strong&gt; of its per-trade rate — a decay that is&#xA;itself statistically significant (t = −2.53). The survivors of $25 costs are few and nameable: the&#xA;4-hour timeframe (+$10,106 net) and ES as an instrument (+$17,119). Fifteen of 54 configurations&#xA;stayed positive at $25; most of the rest are small-timeframe cells whose $4–7 gross per trade is a&#xA;commission illusion.&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mulhamfetna.com/projects/trading-strategy-finder/forward-decay/featured.png" />
    </item>
    
    <item>
      <title>We tested the most famous day-trading strategy on 16 years of data. Zero of 225 versions survived real costs.</title>
      <link>https://mulhamfetna.com/projects/trading-strategy-finder/orb-null-study/</link>
      <pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate>
      <author>contact@mulhamfetna.com (Mulham Fetna)</author>
      <guid>https://mulhamfetna.com/projects/trading-strategy-finder/orb-null-study/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;ve ever watched a trading tutorial, you&amp;rsquo;ve met the &lt;strong&gt;opening-range breakout&lt;/strong&gt;: mark the high&#xA;and low of the first minutes of the session, and trade the breakout when price escapes that range.&#xA;It&amp;rsquo;s simple, mechanical, and everywhere — and recent academic papers report spectacular returns for&#xA;it on stocks.&lt;/p&gt;&#xA;&lt;p&gt;We wanted to know: does it actually work on futures — the markets we research — once you pay&#xA;real-world trading costs?&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;How we made it impossible to fool ourselves&#xA;    &lt;div id=&#34;how-we-made-it-impossible-to-fool-ourselves&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-we-made-it-impossible-to-fool-ourselves&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The problem with backtests is that the person running them controls everything: which variants get&#xA;tried, which costs get assumed, which results get shown. Try enough variants and something will&#xA;always look great by accident.&lt;/p&gt;&#xA;&lt;p&gt;So before computing a single profit number, we &lt;strong&gt;pre-registered the entire experiment&lt;/strong&gt; in our&#xA;public repository: nine futures markets (Nasdaq, S&amp;amp;P, Russell, Dow, gold, silver, copper, crude&#xA;oil, natural gas), two session anchors, four range lengths (5/15/30/60 minutes), three exit rules&#xA;taken verbatim from the literature, plus a published comparator rule — &lt;strong&gt;225 configurations&lt;/strong&gt;, zero&#xA;tunable parameters, verdict thresholds and controls fixed in advance. Sixteen years of one-minute&#xA;data (2010–2026). One contract per trade. Costs stressed at $25 per round trip. No configuration&#xA;could be added, removed, or &amp;ldquo;fixed&amp;rdquo; after seeing results.&lt;/p&gt;</description>
      <media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://mulhamfetna.com/projects/trading-strategy-finder/orb-null-study/featured.png" />
    </item>
    
  </channel>
</rss>
