<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[FX Engineer: Research Library]]></title><description><![CDATA[Long-form data analysis and methodology documentation.]]></description><link>https://fxeresearch.substack.com/s/research</link><image><url>https://substackcdn.com/image/fetch/$s_!C15H!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fa06f77-1172-4ce6-b1f3-f30bf17b4a25_512x512.png</url><title>FX Engineer: Research Library</title><link>https://fxeresearch.substack.com/s/research</link></image><generator>Substack</generator><lastBuildDate>Sun, 21 Jun 2026 03:11:32 GMT</lastBuildDate><atom:link href="https://fxeresearch.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[FX Engineer]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[fxeresearch@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[fxeresearch@substack.com]]></itunes:email><itunes:name><![CDATA[FX Engineer]]></itunes:name></itunes:owner><itunes:author><![CDATA[FX Engineer]]></itunes:author><googleplay:owner><![CDATA[fxeresearch@substack.com]]></googleplay:owner><googleplay:email><![CDATA[fxeresearch@substack.com]]></googleplay:email><googleplay:author><![CDATA[FX Engineer]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[RP-004: Price Path Dynamics After Retail Positioning Extremes]]></title><description><![CDATA[Forward excursion analysis of 75,864 SSI extreme events. The null holds. One asymmetry survives. And a forward-looking signal points somewhere unexpected.]]></description><link>https://fxeresearch.substack.com/p/price-path-dynamics-after-retail</link><guid isPermaLink="false">https://fxeresearch.substack.com/p/price-path-dynamics-after-retail</guid><dc:creator><![CDATA[FX Engineer]]></dc:creator><pubDate>Fri, 17 Apr 2026 13:03:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67138a03-dbef-406f-b185-a647b347ef32_2912x1456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Forward excursion analysis of 75,864 SSI extreme events. The null holds. One asymmetry survives. And a forward-looking signal points somewhere unexpected.</em></p><div><hr></div><p>RP-002 established that retail positioning does not Granger-cause price in any of seven major pairs. Information flows from price to SSI at 3-4x the reverse rate. RP-003 showed that session structure drives volatility concentration, not crowd behavior.</p><p>This report asks the natural follow-up: even if SSI doesn't cause price on average, do the <em>extremes</em> -- the moments when the crowd reaches maximum conviction -- produce a detectable price path signature? Does the contrarian reversal actually happen?</p><p>The answer, across 75,864 events and a decade of data, is no. With one narrow exception that points toward a different kind of signal entirely.</p><div><hr></div><h2>What We Tested</h2><p>We applied John Sweeney's excursion analysis framework to SSI extreme onset events -- the first bar where the SSI z-score crosses |1.5|, capturing the <em>start</em> of each extreme episode, not every bar during it. For each event, we tracked the forward M1 mid-price path for 24 hours and computed maximum adverse excursion (MAE) and maximum favorable excursion (MFE) at six windows: 1, 2, 4, 8, 12, and 24 hours.</p><p>The key metric is MAE-first percentage: what fraction of entries experience their worst drawdown before their best gain? If contrarian entries at SSI extremes work, you should see a "dip-then-rip" signature -- early drawdown followed by recovery. The price should draw down as the crowd's extreme position gets tested, then reverse as mean-reversion kicks in.</p><p>A random baseline of 7,696 entries from the same pairs and time period serves as the control. Same forward path computation, same metrics. Every finding in this report is stated relative to this baseline.</p><p><strong>Sample:</strong> 75,864 SSI extreme onset events across 27 currency pairs, March 2014 to December 2023. The training period ends at December 2023; January 2024 through March 2026 is reserved for out-of-sample validation.</p><div><hr></div><h2>The Null Result</h2><p>MAE-first percentage for SSI extreme events: <strong>50.3%</strong>. For the random baseline: <strong>49.9%</strong>.</p><p>A coin flip.</p><p>The table tells the full story:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MU7g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MU7g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 424w, https://substackcdn.com/image/fetch/$s_!MU7g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 848w, https://substackcdn.com/image/fetch/$s_!MU7g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 1272w, https://substackcdn.com/image/fetch/$s_!MU7g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MU7g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MU7g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 424w, https://substackcdn.com/image/fetch/$s_!MU7g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 848w, https://substackcdn.com/image/fetch/$s_!MU7g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 1272w, https://substackcdn.com/image/fetch/$s_!MU7g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc413793b-d420-4f09-b99e-e001ddee09b8_1680x604.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The delta never exceeds 1.4 points. At 75,000+ observations, a true effect of even 2 percentage points would be detectable with overwhelming statistical power. This is not a sample size problem. The dip-then-rip signature does not exist.</p><p>Recovery rates after drawdowns are likewise indistinguishable from random. A pattern that draws down 20 pips after an SSI extreme has a 20.7% chance of recovering to breakeven -- essentially identical to the 21.6% baseline. At every threshold tested (10, 15, 20, 30, 50 pips), SSI extreme entries recover at the same rate as random entries.</p><p>The price path after the crowd reaches maximum conviction is statistically identical to the price path after a random entry.</p><div><hr></div><h2>Deeper Extremes Don't Help</h2><p>The natural objection: "maybe |1.5| isn't extreme enough." It's a reasonable thought. So we stratified by z-score magnitude:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fO_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fO_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 424w, https://substackcdn.com/image/fetch/$s_!fO_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 848w, https://substackcdn.com/image/fetch/$s_!fO_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 1272w, https://substackcdn.com/image/fetch/$s_!fO_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fO_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fO_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 424w, https://substackcdn.com/image/fetch/$s_!fO_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 848w, https://substackcdn.com/image/fetch/$s_!fO_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 1272w, https://substackcdn.com/image/fetch/$s_!fO_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb27efd7-e649-4e9a-87ea-9031d02dbe1f_1628x460.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>At z-scores above 3.0 -- roughly 11% of all extreme events, 8,339 observations -- MAE-first is 49.7% and average forward return is -0.4 pips. Below a coin flip.</p><p>One nuance worth noting: average MFE <em>does</em> increase with z-score magnitude (26.6 pips at |1.5-2.0| vs 31.5 pips at |3.0+| over 8 hours). Deeper extremes produce larger price swings in <em>both</em> directions -- more volatility, not more directionality. This distinction turns out to be important later.</p><div><hr></div><h2>One Directional Asymmetry Survives</h2><p>The single non-random finding in the dataset: the contrarian outcome differs by the direction of the crowd's extreme.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jMpa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jMpa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 424w, https://substackcdn.com/image/fetch/$s_!jMpa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 848w, https://substackcdn.com/image/fetch/$s_!jMpa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 1272w, https://substackcdn.com/image/fetch/$s_!jMpa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jMpa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jMpa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 424w, https://substackcdn.com/image/fetch/$s_!jMpa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 848w, https://substackcdn.com/image/fetch/$s_!jMpa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 1272w, https://substackcdn.com/image/fetch/$s_!jMpa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863cc0d6-a5ff-43ac-9200-02fcf2c32195_1628x388.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Fading crowd-short extremes -- going long when the retail crowd is maximally short -- produces 54% MAE-first and +4.1 average pips at 8 hours. Fading crowd-long extremes produces 47.2% and -3.2 pips. The spread persists across forward windows and does not reverse.</p><p>The mechanism is consistent with documented retail behavioral patterns. Retail traders disproportionately buy dips and hold losing long positions. Crowd-long extremes therefore tend to represent retail catching a falling knife -- price was already declining, and it continues. Crowd-short extremes are rarer and represent retail panic-selling into a decline -- more likely to be an overcorrection that partially reverses.</p><p>RP-002's transfer entropy finding provides the causal structure: the crowd reacts to price, not the other way around. When the crowd panics short, they are reacting to a price decline that may be exhausting. When they pile in long, they are chasing a move that still has room to continue.</p><p>But the edge is small. A 54% rate against a 50% baseline is a 4-point advantage that would be difficult to capture after transaction costs. This is a finding <em>within</em> a null result, not a finding that overturns it.</p><div><hr></div><h2>The Null Holds Everywhere</h2><p><strong>Sessions:</strong> Asian 49.6%, London 50.4%, New York 50.7%. No session drives the result.</p><p><strong>Eras:</strong> 2014-2017: 49.2%. 2018-2020: 50.8%. 2021-2023: 50.9%. There is no period in the dataset where SSI extremes produced a systematic contrarian advantage.</p><p><strong>MAE timing:</strong> Median time to MAE is 224 minutes for extreme events vs 228 minutes for the random baseline. There is no early-MAE signature.</p><p>We checked every dimension we could think of. The null holds in all of them.</p><div><hr></div><h2>Trailing Volatility Doesn't Help Either</h2><p>A natural hypothesis: contrarian entries work better during high-volatility environments. When markets are moving aggressively, the crowd's extreme positioning is more likely to be punished.</p><p>Initial analysis using a forward-looking volatility proxy -- the sum of absolute MAE and MFE during the event's life -- appeared to support this with a large separation. Highest vs lowest quartile showed a 13-17 percentage point spread. Promising.</p><p>The problem: that proxy is contaminated. |MAE| + MFE describes what happened <em>during</em> the event, not what conditions existed <em>at entry</em>. Favorable outcomes mechanically produce high MFE. The proxy encodes the outcome it's supposed to predict.</p><p>We replaced it with trailing 24-hour ATR computed strictly from M1 data <em>before</em> entry -- information actually available at detection time. The result:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yWKV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yWKV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 424w, https://substackcdn.com/image/fetch/$s_!yWKV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 848w, https://substackcdn.com/image/fetch/$s_!yWKV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 1272w, https://substackcdn.com/image/fetch/$s_!yWKV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yWKV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yWKV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 424w, https://substackcdn.com/image/fetch/$s_!yWKV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 848w, https://substackcdn.com/image/fetch/$s_!yWKV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 1272w, https://substackcdn.com/image/fetch/$s_!yWKV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c4f48c-cb89-4ab8-a31f-5cf581593f53_1628x316.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The gap collapsed from double digits to less than one percentage point. Correlation between the forward proxy and trailing ATR: 0.109. They measure almost entirely different things.</p><p>This is the third instance in this research program where a forward-looking data element produced inflated results. The methodological discipline of replacing every proxy with a strictly pre-entry measure is non-negotiable.</p><div><hr></div><h2>What the Data Actually Shows</h2><p>SSI extremes do not predict directional price paths. The evidence is comprehensive: 75,864 events, a decade of data, every z-score magnitude, every session, every era. The null is structural.</p><p>But SSI extremes <em>do</em> mark elevated volatility conditions. Section 4's finding -- that deeper extremes produce larger MFE without producing directional advantage -- is the clue. The crowd reaches extreme positioning during volatile markets, and volatile markets produce large moves in both directions.</p><p>An SSI extreme tells you that something is happening. It does not tell you which way it will resolve.</p><p>This reframes the question entirely. The value of SSI positioning data may not lie in predicting direction but in identifying <em>when and where volatility will concentrate</em>. The crowd's positioning becomes a marker of market conditions where large moves are likely -- a volatility detector, not a directional signal.</p><p>That interpretation is consistent with what we observe in the live positioning event system: 91% of detected events produce a move exceeding 15 pips within the measurement window, regardless of whether the directional fade works. The move happens. The question is whether you can predict or exploit its timing and magnitude.</p><div><hr></div><h2>Where This Leads</h2><p>The three-paper convergence is now complete:</p><p><strong>RP-002:</strong> SSI does not Granger-cause price. Information flows from price to SSI at 3-4x the reverse rate.</p><p><strong>RP-003:</strong> Volatility concentrates in predictable session windows. London AM is structurally different.</p><p><strong>RP-004:</strong> Even at the extremes -- the exact conditions where contrarian logic should produce its strongest signal -- the forward price path is indistinguishable from random. The crowd follows price, not the other way around.</p><p>Together, these findings point away from directional prediction and toward volatility forecasting as the primary use of retail positioning data. The positioning extreme marks the location. Something else -- session structure, forward-looking volatility models, or mechanisms not yet identified -- determines whether the resulting move is exploitable.</p><p>That "something else" is the subject of RP-101, which documents the complete volatility predictability surface from 1 hour to 24 hours, and the ongoing research program that follows from it.</p><div><hr></div><h2>Why We Published the Old Numbers (And Why They Were Wrong)</h2><p>Earlier internal analysis reported 81% MAE-first rates and 97% favorable resolution for MAE-first patterns. Those findings appeared in the original version of this report and informed early product decisions.</p><p>They were wrong. The entry detection logic included a forward-looking SSI z-score value -- the entry population was selected partly by information unavailable at the time of detection. The collapse from 81% to 50.3% in this version measures the exact contribution of that look-ahead bias.</p><p>We are publishing this correction with the same prominence as the original finding. The methodology audit that uncovered this issue is documented in RP-001. Every number in the current research series uses strictly pre-entry data, with no forward-looking elements in event detection, stratification, or analysis.</p><div><hr></div><h2>Data and Reproducibility</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PAg6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PAg6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 424w, https://substackcdn.com/image/fetch/$s_!PAg6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 848w, https://substackcdn.com/image/fetch/$s_!PAg6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 1272w, https://substackcdn.com/image/fetch/$s_!PAg6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PAg6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PAg6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 424w, https://substackcdn.com/image/fetch/$s_!PAg6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 848w, https://substackcdn.com/image/fetch/$s_!PAg6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 1272w, https://substackcdn.com/image/fetch/$s_!PAg6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8afea2d-cc68-42b2-b5dc-d89c5bbbe3b2_1628x892.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>Limitations:</strong> GBPJPY has reduced coverage (304 of 6,283 events due to M1 data gap). Forward windows use M1 mid-prices; actual execution includes spread. The direction asymmetry was not pre-registered and should be treated as exploratory until confirmed out-of-sample.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fxeresearch.substack.com/p/price-path-dynamics-after-retail?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fxeresearch.substack.com/p/price-path-dynamics-after-retail?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fxeresearch.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fxeresearch.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fxeresearch.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share FX Engineer&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fxeresearch.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share FX Engineer</span></a></p><p></p><div><hr></div><p><em>Nothing published here constitutes financial advice or a solicitation to trade. FX Engineer publishes positioning research for informational purposes only.</em></p><p><em>Research library and full publication archive: fxeresearch.substack.com</em></p>]]></content:encoded></item><item><title><![CDATA[RP-101: The Complete FX Volatility Predictability Surface]]></title><description><![CDATA[How predictability degrades from 1 hour to 24 hours, where the session-length anomalies are, and what the feature importance evolution reveals about FX market microstructure]]></description><link>https://fxeresearch.substack.com/p/rp-101-the-complete-fx-volatility</link><guid isPermaLink="false">https://fxeresearch.substack.com/p/rp-101-the-complete-fx-volatility</guid><dc:creator><![CDATA[FX Engineer]]></dc:creator><pubDate>Fri, 20 Mar 2026 20:55:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09dbaf59-4f83-43f2-ba18-2e49383c31e7_2912x1456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!InET!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!InET!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 424w, https://substackcdn.com/image/fetch/$s_!InET!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 848w, https://substackcdn.com/image/fetch/$s_!InET!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 1272w, https://substackcdn.com/image/fetch/$s_!InET!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!InET!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!InET!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 424w, https://substackcdn.com/image/fetch/$s_!InET!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 848w, https://substackcdn.com/image/fetch/$s_!InET!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 1272w, https://substackcdn.com/image/fetch/$s_!InET!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdffb877a-17ff-4211-9a7c-3a5c867ba1a3_2428x628.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><div><hr></div><h2>Abstract</h2><p><strong>CENTRAL FINDING</strong></p><p>FX volatility is predictable at every horizon from 1 hour to 24 hours, and the shape of that predictability reveals the internal clock of the FX market. We train 24 identical LightGBM models &#8212; one per integer hour &#8212; on 2.7 million hourly observations spanning 28 currency pairs and 18 years. The resulting predictability surface reveals four distinct zones, a feature dominance rotation from microstructure to macro regime, and two session-length anomalies that directly reflect institutional trading patterns.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://fxeresearch.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>KEY FINDINGS</strong></p><p><strong>1. Peak predictability occurs at 4 hours, not 1 hour.</strong> The 4h model achieves the highest OOF AUC (0.766), surpassing both the 1h model (0.734) and every other horizon. This is counterintuitive and structural: four hours captures the full arc of a major FX trading session &#8212; opening liquidity, mid-session price discovery, closing flows. The model learns to predict the shape of a session, not just current conditions.</p><p><strong>2. The surface has four distinct zones.</strong> Zone 1 (1&#8211;4h): strong signal, session-driven, AUC 0.73&#8211;0.77. Zone 2 (5&#8211;8h): moderate decline, session-handoff effects, AUC 0.73&#8211;0.75. Zone 3 (9&#8211;16h): plateau, AUC ~0.725, remarkably stable across eight consecutive horizons. Zone 4 (17&#8211;24h): gradual macro-regime decline, AUC 0.69&#8211;0.72.</p><p><strong>3. Predictability never falls below AUC 0.69.</strong> Even at 24 hours, the model discriminates between high-vol and low-vol periods meaningfully above chance. Test AUC (0.715) exceeds OOF AUC (0.693) at 24h, driven by calendar-signal strength in the 2024&#8211;2026 test period.</p><p><strong>4. Feature dominance rotates completely across the surface.</strong> At 1h, recent return momentum (importance 689) dominates. By 6h, days-to-month-end enters the top 5. By 12h, it is the top feature. By 24h, it leads by a factor of 2x (importance 509 vs 295 for the second feature). These are not the same signal at different resolutions &#8212; each zone accesses a genuinely different information source.</p><p><strong>5. The 9&#8211;16h plateau is the most unexpected finding.</strong> Eight consecutive horizons produce nearly identical AUC (0.709&#8211;0.734 OOF, 0.725&#8211;0.728 test). This stability suggests a persistent information regime &#8212; possibly the 24-hour global session cycle &#8212; where the same features maintain constant predictive power regardless of exact forecast horizon.</p><p><strong>6. Test AUC meets or exceeds OOF AUC at all 24 horizons.</strong> No overfitting. The divergence grows progressively from +0.017 at 1h to +0.023 at 24h, reflecting stronger calendar effects in the 2024&#8211;2026 test period.</p><div><hr></div><h2>1. Introduction</h2><p>The question of whether financial market volatility is predictable has been settled in the academic literature: it is. GARCH models, realized volatility estimators, and machine learning approaches have all demonstrated out-of-sample predictive power for equity and FX volatility. What remains poorly understood is the <em>structure</em> of that predictability across forecast horizons.</p><p>Most volatility research picks a single horizon &#8212; daily is the default &#8212; trains a model, reports an AUC or R-squared, and moves on. This leaves a fundamental question unanswered: how does predictive power change as the forecast window lengthens from one hour to one day? Does it decay monotonically? Does it collapse at some threshold? Does it exhibit structure that reveals something about how markets process information?</p><p>This report answers these questions for FX markets with full hourly granularity. We train 24 identical models &#8212; one per integer hour from 1h through 24h &#8212; using the same 98 features, the same LightGBM architecture, and the same walk-forward validation protocol. The result is not a single number but a <em>complete surface</em>: a map of where, when, and how volatility predictability exists in foreign exchange, at every hour of the trading day.</p><p>The findings have both academic and practical significance. Academically, the four-zone structure and feature rotation provide new evidence about information processing timescales in FX. Practically, the surface tells traders and systematic strategies exactly which horizons offer the most reliable edge, why, and how confidence should decay as the forecast window extends.</p><p><em>Note on report numbering: RP-101 begins a separate series from the SSI characterization reports (RP-001 through RP-012). RP-001 characterized the statistical properties of retail positioning data. RP-003 documented session-based volatility structure. RP-101 builds on both by asking whether volatility can be predicted across horizons, and what the structure of that predictability reveals.</em></p><div><hr></div><h2>2. Data and Methodology</h2><h3>2.1 Dataset</h3><p>The primary dataset consists of hourly OHLCV price data for 28 currency pairs spanning January 2005 through March 2026: 7 major pairs (EURUSD, GBPUSD, USDJPY, USDCHF, AUDUSD, USDCAD, NZDUSD) and 21 cross pairs covering all combinations of EUR, GBP, AUD, NZD, CAD, CHF, and JPY. Total observations: approximately 2.7 million hourly rows across all pairs.</p><p>Supplemental features include FXCM Speculative Sentiment Index (SSI) data for 16 sentiment-derived features. The model handles missing sentiment data natively via LightGBM's NaN support, with less than 0.02 AUC degradation on pairs or periods where SSI is unavailable.</p><h3>2.2 Target Variable</h3><p>For each horizon H (1 through 24 hours), the target is binary: Label = 1 if |forward_return_over_H_hours| &gt; threshold, Label = 0 otherwise. Forward returns are computed row-based (market hours), not calendar-based. Weekend gaps are naturally skipped, matching how institutional traders experience time.</p><p>Thresholds are calibrated per horizon to produce a consistent ~17.5% base rate:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s6Wg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s6Wg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 424w, https://substackcdn.com/image/fetch/$s_!s6Wg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 848w, https://substackcdn.com/image/fetch/$s_!s6Wg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 1272w, https://substackcdn.com/image/fetch/$s_!s6Wg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s6Wg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s6Wg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 424w, https://substackcdn.com/image/fetch/$s_!s6Wg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 848w, https://substackcdn.com/image/fetch/$s_!s6Wg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 1272w, https://substackcdn.com/image/fetch/$s_!s6Wg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f209177-09ba-4238-b53b-98d95c8a00bb_2332x780.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>2.3 Feature Engineering (98 Features)</h3><p>All 24 models use identical features computed at time T from data available at or before the forecast timestamp. There is no forward-looking information leakage.</p><p><strong>Volatility state (14):</strong> Realized volatility at 5 lookback windows, ATR at 4 windows, vol-of-vol at 2 windows, 2 vol regime ratios.

<strong>Price action (25):</strong> Returns at 9 horizons, trend indicators at 6 windows, z-scores, range measures.

<strong>Technical indicators (10):</strong> RSI, MACD, Bollinger Band width and position, MA distance.

<strong>Calendar effects (10):</strong> Hour-of-day (sine/cosine encoded), day-of-week, month, London/New York/Asian session flags, days to month-end.

<strong>Volume and liquidity (14):</strong> Log volume, ratios, z-scores, ROC, spread and spread z-score.

<strong>Sentiment (16, optional):</strong> SSI level, z-scores, rate-of-change, acceleration, divergence indicators.

<strong>Up/down ratio (2):</strong> Fraction of up-candles over 24h and 5d windows.</p><h3>2.4 Model Architecture</h3><p>All 24 horizons use the same LightGBM configuration: 200 trees, max depth 5, learning rate 0.05, 80% row and column subsampling, minimum 50 observations per leaf. Hyperparameters were not optimized per horizon. The only parameter that changes across the surface is the target variable definition.</p><p><strong>Alternative Architecture: Single Multi-Horizon Model</strong></p><p>We tested whether a single LightGBM model &#8212; trained on all horizons simultaneously with horizon_hours as an additional input feature &#8212; could replace 24 dedicated models. The result: it cannot, and the reason why is informative.</p><p>In the single model, horizon_hours became the dominant feature by a wide margin (importance 542, nearly double the #2 feature). The model learned to predict the degradation curve itself rather than the genuine per-horizon signal. This shortcut produced a systematic performance penalty at exactly the endpoints that matter most: the 1h model lost 1.4pp AUC, and the 24h model lost 1.1pp AUC. The plateau zone (9&#8211;16h) gained modestly (+0.5 to +1.7pp), but those are the horizons with the most redundant coverage in the product surface.</p><p>The performance loss at 1h and 24h is not coincidental. These are the horizons with the most distinct feature regimes &#8212; microstructure at 1h, macro calendar at 24h. When the model must serve both simultaneously, it loses the ability to specialize. The feature importance rotation documented in Section 4 is real and requires dedicated models to exploit fully.</p><p>Decision: 24 dedicated models. The experiment is archived.</p><h3>2.5 Walk-Forward Validation</h3><p>Training period: 2005&#8211;2023 (18 years). 5-fold walk-forward cross-validation within the training period. Test holdout: 2024&#8211;2026, never used during training or hyperparameter selection. Out-of-fold (OOF) predictions used to fit isotonic calibration and move magnitude mapping per horizon.</p><h3>2.6 Horizon Coverage: Training vs. Production</h3><p>This report analyzes all 24 integer-hour models. The production forecasting system deploys a subset of 8 horizons (1h, 2h, 3h, 4h, 6h, 8h, 12h, 24h), selected for operational relevance and to avoid redundancy between adjacent horizons. The remaining 16 models were trained for research purposes &#8212; to map the complete predictability surface &#8212; and are not deployed in the live system.</p><p>All 24 models use identical architecture, features, and validation methodology. Results for non-production horizons should be interpreted as research findings about the structure of predictability, not as claims about deployed system performance.</p><div><hr></div><h2>3. The Complete Predictability Surface</h2><h3>3.1 AUC Across All 24 Horizons</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!42FA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!42FA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 424w, https://substackcdn.com/image/fetch/$s_!42FA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 848w, https://substackcdn.com/image/fetch/$s_!42FA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!42FA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!42FA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!42FA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 424w, https://substackcdn.com/image/fetch/$s_!42FA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 848w, https://substackcdn.com/image/fetch/$s_!42FA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!42FA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c799db7-cf90-413d-807b-c66cb7266d68_2800x1400.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>Figure 1: The complete FX volatility predictability surface across 24 hourly horizons. Four distinct zones are visible: Session (1&#8211;4h, orange), Handoff (5&#8211;8h, yellow), Plateau (9&#8211;16h, blue), and Macro (17&#8211;24h, green). The 4h peak (OOF AUC 0.766) and the 9&#8211;16h plateau are the two structural findings that depart from a simple monotonic degradation model. Test AUC (grey dashed) meets or exceeds OOF AUC at all horizons.</em></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uiRj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uiRj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 424w, https://substackcdn.com/image/fetch/$s_!uiRj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 848w, https://substackcdn.com/image/fetch/$s_!uiRj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 1272w, https://substackcdn.com/image/fetch/$s_!uiRj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uiRj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uiRj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 424w, https://substackcdn.com/image/fetch/$s_!uiRj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 848w, https://substackcdn.com/image/fetch/$s_!uiRj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 1272w, https://substackcdn.com/image/fetch/$s_!uiRj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa393e052-6aaf-4ce9-a5b9-ee04394a6255_2428x2066.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Every horizon above 0.69 OOF AUC. No horizon below meaningful discrimination. FX volatility is predictable across the entire surface.</p><h3>3.2 The Four-Zone Structure</h3><p>The surface does not decay monotonically. It has structure &#8212; four distinct zones that correspond to known features of FX market organization:</p><p><strong>Zone 1: Session (1&#8211;4h, OOF AUC 0.73&#8211;0.77).</strong> The strongest predictive zone. The 4h peak reflects the full arc of a major trading session. Predictability rises from 1h to 4h before declining &#8212; the model gains power as it can see more of the session structure.</p><p><strong>Zone 2: Handoff (5&#8211;8h, OOF AUC 0.73&#8211;0.75).</strong> A moderate decline phase corresponding to the London-to-New York session transition. The 5h cliff (&#8211;0.018 OOF AUC from 4h to 5h) is the sharpest single-step decline on the surface and marks the exact point where a single-session forecast becomes a cross-session forecast.</p><p><strong>Zone 3: Plateau (9&#8211;16h, OOF AUC 0.709&#8211;0.734).</strong> The most unexpected finding. Eight consecutive horizons at nearly identical AUC. Section 6.3 explores the hypothesis that this reflects a transition from intraday to overnight regime prediction.</p><p><strong>Zone 4: Macro (17&#8211;24h, OOF AUC 0.69&#8211;0.71).</strong> Gradual decline as calendar and vol-regime features become the dominant signal. The 24h test AUC (0.715) significantly exceeds OOF (0.693), suggesting the 2024&#8211;2026 calendar effects were particularly strong.</p><div><hr></div><h2>4. Feature Importance Evolution</h2><h3>4.1 The Four-Zone Feature Rotation</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f22k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f22k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 424w, https://substackcdn.com/image/fetch/$s_!f22k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 848w, https://substackcdn.com/image/fetch/$s_!f22k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!f22k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f22k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f22k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 424w, https://substackcdn.com/image/fetch/$s_!f22k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 848w, https://substackcdn.com/image/fetch/$s_!f22k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!f22k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3de539e5-631c-4aeb-99e1-f876d486a27e_2800x1600.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>Figure 2: Feature dominance rotates from microstructure at 1h to calendar effects at 24h. The ret_1h bar (grey, 1h model, importance 689) is the most dominant single feature at any horizon. The days_to_monthend bar (teal, 24h model, importance 509) dominates at the longest horizon. The ssi_roc_4h bar (orange, 4h model) appears only for the 4h model &#8212; SSI sentiment is a session-timescale signal, not a microstructure or macro signal.</em></p><p><strong>1-Hour Model &#8212; Microstructure</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RAFr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RAFr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!RAFr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!RAFr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!RAFr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RAFr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RAFr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!RAFr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!RAFr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!RAFr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2db298d-ac1c-42e3-9a53-88823a4f48b9_2428x632.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>At 1 hour, the model relies almost entirely on immediate market state: what price just did, how tight the market is, and what session we are in.</p><p><strong>4-Hour Model &#8212; Session Timing</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w7Iz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w7Iz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!w7Iz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!w7Iz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!w7Iz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w7Iz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w7Iz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!w7Iz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!w7Iz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!w7Iz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcb6848b-5537-4ce7-b22c-b424256a4a51_2428x632.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Session timing takes over at 4h. The model cares most about where we are in the trading day and how positioning has been shifting within the current session. SSI sentiment reaches its peak importance here.</p><p><strong>12-Hour Model &#8212; Calendar Emerging</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!69AU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!69AU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!69AU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!69AU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!69AU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!69AU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!69AU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!69AU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!69AU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!69AU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4f6259-19b2-4b05-949c-78e39985884f_2428x632.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>By 12 hours, days_to_monthend is already the top feature. The overnight window is where institutional calendar effects begin to dominate over intraday microstructure.</p><p><strong>24-Hour Model &#8212; Macro Regime</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1TuB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1TuB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!1TuB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!1TuB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!1TuB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1TuB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1TuB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 424w, https://substackcdn.com/image/fetch/$s_!1TuB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 848w, https://substackcdn.com/image/fetch/$s_!1TuB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 1272w, https://substackcdn.com/image/fetch/$s_!1TuB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf4467e-6986-4189-88c1-2a743306825d_2428x632.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>At 24 hours, microstructure is irrelevant. The model is driven by calendar position &#8212; month-end proximity at importance 509, nearly double any other feature &#8212; and vol regime.</p><h3>4.2 Interpretation</h3><p>The feature importance rotation reveals something fundamental: different timescales in FX are driven by different mechanisms. A model that captures only one timescale is missing the majority of available predictive information. A system running all horizons simultaneously accesses each information source at the horizon where it is most predictive.</p><p>This rotation also explains why the single multi-horizon model tested in Section 2.4 failed at the extremes: forcing one model to learn microstructure signals and macro calendar signals simultaneously dilutes both.</p><div><hr></div><h2>5. Validation and Robustness</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fZzv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fZzv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 424w, https://substackcdn.com/image/fetch/$s_!fZzv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 848w, https://substackcdn.com/image/fetch/$s_!fZzv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!fZzv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fZzv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fZzv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 424w, https://substackcdn.com/image/fetch/$s_!fZzv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 848w, https://substackcdn.com/image/fetch/$s_!fZzv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!fZzv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e990d00-7106-43e8-843d-d0ef7d7a12ce_2800x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>Figure 3: Test AUC minus OOF AUC by horizon. Blue bars indicate test performance meets or exceeds training &#8212; no overfitting. The 4&#8211;10h band shows minor test underperformance (max -0.010 at 5h and 6h), within expected variance. The progressive increase in test outperformance at longer horizons reflects strong calendar effects in the 2024&#8211;2026 test period.</em></p><h3>5.1 No Overfitting Across 24 Horizons</h3><p>Test AUC meets or exceeds OOF AUC at all 24 horizons. The largest test underperformance is &#8211;0.010 at 5h and 6h, within the expected variance of a holdout test. The progressive divergence at longer horizons is explained by calendar-signal favorability in the 2024&#8211;2026 period, not by overfitting.</p><h3>5.2 Fold Stability</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-ztc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-ztc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 424w, https://substackcdn.com/image/fetch/$s_!-ztc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 848w, https://substackcdn.com/image/fetch/$s_!-ztc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!-ztc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-ztc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-ztc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 424w, https://substackcdn.com/image/fetch/$s_!-ztc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 848w, https://substackcdn.com/image/fetch/$s_!-ztc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!-ztc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41583c0f-ca6e-4af8-a3aa-9b5de8cd9642_2800x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>Figure 4: Walk-forward fold AUC spread (max minus min across 5 folds) by horizon, color-coded by zone. The 1h model shows the widest spread (4.1pp), reflecting greater sensitivity to market regime variation at short horizons. Stability improves sharply from 1h to 2h, then remains tight (1.6&#8211;2.7pp) through all remaining horizons.</em></p><p>Fold stability is tight across the surface. The 1h model is the outlier at 4.1pp &#8212; driven by the regime-sensitivity of microstructure features. From 2h onward, all folds produce consistent AUC. Calendar and regime features are robust across market eras; microstructure features are not.</p><h3>5.3 Calibration</h3><p>Raw model scores are transformed to true probabilities using isotonic regression fitted on 2.7 million out-of-fold predictions per horizon. A 20-bucket empirical move magnitude mapper provides conditional distributions: mean, median, P75, and P90 forecasts per score range. When the model outputs a 30% probability, approximately 30% of such predictions historically produced large moves.</p><div><hr></div><h2>6. Discussion</h2><h3>6.1 Why 4 Hours, Not 1 Hour?</h3><p>The 4h peak is the most counterintuitive finding in the surface. In a market where information is incorporated gradually, shorter horizons should have more signal-to-noise and thus higher AUC. The 4h peak falsifies this assumption for FX and points to something specific about market structure.</p><p>The FX market operates in geographic sessions. London opens and European institutional flows enter. New York opens and a second wave of liquidity arrives. Each session has a characteristic volatility signature &#8212; rising into mid-session, peaking during the overlap, declining into close. The 4h model captures this entire signature. The 1h model sees only a snapshot.</p><p>This is not unique to our model. It is a structural property of FX markets. Any volatility prediction system that ignores session timing is leaving its single most predictive feature on the table at the horizons that matter most. This finding complements RP-003, which documented r=0.987 session volatility stability across 20 years &#8212; the 4h predictability peak is the forecasting consequence of that descriptive stability.</p><h3>6.2 The Month-End Effect</h3><p>The progressive dominance of days_to_monthend &#8212; entering the top 5 at 6h, reaching #1 from 12h onward, importance 509 at 24h &#8212; confirms and quantifies a well-documented but under-exploited institutional effect.</p><p>At month-end, large asset managers rebalance currency hedges. Pension funds adjust allocations. Index funds roll positions. These flows are large, predictable in timing (last 2&#8211;3 business days of each month), and generate volatility. The model detects this pattern across 18 years of training data and exploits it consistently in out-of-sample testing. The fact that month-end proximity leads the 24h model by a factor of 2x suggests that daily-scale FX volatility is, to a meaningful degree, a calendar phenomenon driven by institutional plumbing.</p><h3>6.3 The Plateau: What Does Constant Predictability Mean?</h3><p>The 9&#8211;16h plateau is the finding most deserving of further investigation. Eight consecutive horizons producing nearly identical AUC is not what any simple model of information decay would predict. It suggests a regime where the same information predicts volatility equally well whether the horizon is 9 hours or 16 hours.</p><p>One hypothesis: the plateau corresponds to the overnight window. A forecast made during the London session about volatility 9&#8211;16 hours later spans the Asian session and into the next London open. The predictive features in this zone &#8212; days_to_monthend, rvol_20d &#8212; are daily-scale indicators that do not depend on which specific hours are covered. They predict tomorrow's volatility regime rather than what happens in any particular N-hour window.</p><p>If correct, this tells us that FX vol prediction has two distinct modes: an intraday mode (1&#8211;8h) where session microstructure matters, and a regime mode (9&#8211;24h) where only the broad volatility environment matters. The transition occurs at approximately 8&#8211;9 hours.</p><h3>6.4 Practical Implications</h3><p><strong>The 4h model is the single best volatility forecast.</strong> If you run one model, run this one. OOF AUC 0.766 on 2.7M observations with walk-forward validation and confirmed test performance.</p><p><strong>Multi-horizon forecasting captures more information than any single model.</strong> The feature rotation demonstrates that each zone accesses distinct signal. A system running 1h, 4h, 8h, and 24h simultaneously extracts information that any individual model misses.</p><p><strong>Confidence should not decay linearly.</strong> The degradation has zones, not a slope. Trust 1&#8211;4h forecasts strongly, 5&#8211;8h moderately, and treat 9&#8211;24h as regime indicators rather than precise forecasts.</p><p><strong>Session timing is the most important feature at practical horizons.</strong> Models that ignore hour-of-day are leaving the dominant signal on the table at 1h through 8h.</p><p><strong>Month-end is the strongest daily signal.</strong> Risk models that do not account for proximity to month-end systematically underestimate tail risk on rebalancing days.</p><p><strong>The plateau enables efficient product design.</strong> Since 9h through 16h produce identical AUC, a product surface does not need all 24 horizons. The 8-horizon subset (1h, 2h, 3h, 4h, 6h, 8h, 12h, 24h) captures the full information content with minimal redundancy.</p><h3>6.5 Limitations</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PjG-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PjG-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 424w, https://substackcdn.com/image/fetch/$s_!PjG-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 848w, https://substackcdn.com/image/fetch/$s_!PjG-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 1272w, https://substackcdn.com/image/fetch/$s_!PjG-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PjG-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PjG-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 424w, https://substackcdn.com/image/fetch/$s_!PjG-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 848w, https://substackcdn.com/image/fetch/$s_!PjG-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 1272w, https://substackcdn.com/image/fetch/$s_!PjG-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F030b3b96-0d63-4ecc-8caf-a5dc4cb3e75f_2380x628.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><h2>7. Conclusion</h2><p><strong>Volatility is predictable at all 24 hourly horizons.</strong> OOF AUC ranges from 0.693 (24h) to 0.766 (4h) across 2.7 million observations. Test AUC confirms or exceeds OOF at every horizon.</p><p><strong>The surface has four distinct zones.</strong> Session-driven signal at 1&#8211;4h, session-handoff at 5&#8211;8h, a stable plateau at 9&#8211;16h, and macro-regime decline at 17&#8211;24h. The shape is not monotonic and reveals the internal timescales of FX market information processing.</p><p><strong>The source of predictive power rotates completely.</strong> Microstructure at 1h, session timing at 4h, calendar effects at 12h, macro regime at 24h. These are different information sources, not the same signal at different resolutions.</p><p><strong>The predictability surface is a production system.</strong> It generates forecasts across 28 currency pairs and multiple horizons, with a forward-test track record accumulating in real time against independently verifiable 1-minute candle data.</p><p>The degradation curve tells you exactly how far into the future you can see, and exactly how much you should trust what you see there. The feature rotation tells you <em>why</em> you can see that far, and what the market is telling you at each timescale.</p><div><hr></div><p><strong>Methodology Notes</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Azww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Azww!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 424w, https://substackcdn.com/image/fetch/$s_!Azww!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 848w, https://substackcdn.com/image/fetch/$s_!Azww!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 1272w, https://substackcdn.com/image/fetch/$s_!Azww!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Azww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Azww!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 424w, https://substackcdn.com/image/fetch/$s_!Azww!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 848w, https://substackcdn.com/image/fetch/$s_!Azww!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 1272w, https://substackcdn.com/image/fetch/$s_!Azww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87cdf647-637e-41c3-b4c0-f09a021c5557_2428x704.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>Reproducibility</strong></p><p>All 24 models are trained from the same feature CSVs using identical hyperparameters. The only parameter that changes across the surface is the target variable (horizon and threshold). Feature engineering, training code, and model metadata are archived in the research repository. The training dataset covers 2005&#8211;2023. The test period (2024&#8211;2026) is withheld from all training. Models are deployed in production via Google Cloud Run with hourly inference cycles. Independent replication requires access to the hourly OHLCV dataset and SSI sentiment feeds. Model metadata including fold-level AUCs and feature importances is available upon request.</p><div><hr></div><p><em>Nothing published here constitutes financial advice or a solicitation to trade. FXE Research publishes volatility research for informational purposes only. Past model performance is not indicative of future results.</em></p><p><em>Research library and full publication archive: fxeresearch.substack.com</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fxeresearch.substack.com/p/rp-101-the-complete-fx-volatility?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fxeresearch.substack.com/p/rp-101-the-complete-fx-volatility?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fxeresearch.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fxeresearch.substack.com/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://fxeresearch.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share FX Engineer&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://fxeresearch.substack.com/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share FX Engineer</span></a></p>]]></content:encoded></item><item><title><![CDATA[RP-003: Session Volatility in FX: Where Price Discovery Happens]]></title><description><![CDATA[Intraday volatility patterns across 20 years of minute-bar data]]></description><link>https://fxeresearch.substack.com/p/session-volatility-in-fx-where-price</link><guid isPermaLink="false">https://fxeresearch.substack.com/p/session-volatility-in-fx-where-price</guid><dc:creator><![CDATA[FX Engineer]]></dc:creator><pubDate>Mon, 16 Mar 2026 22:03:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bbbc6fb-7ff2-4e0e-b523-34496ac1e22a_2912x1456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Intraday volatility patterns across Asian, London, and New York sessions using 20 years of minute-bar data</em></p><p><strong>Authors:</strong> FXE Research
<strong>Date:</strong> 2026-03-15
<strong>Report ID:</strong> RP-003</p><p><strong>Authors:</strong> FXE Research | <strong>Dataset:</strong> Minute-bar OHLC, 8 major and cross pairs | <strong>Observations:</strong> 1,315,045 pair-hour observations | <strong>Period:</strong> 2005-2024 | <strong>Methods:</strong> Hourly range aggregation, Welch t-tests, Pearson correlation of era profiles</p><div><hr></div><h2>Abstract</h2><p><strong>CENTRAL FINDING</strong></p><p>The 24-hour FX volatility profile is structurally stable across two decades: hourly pattern correlation r=0.987 between 2005-2009 and 2020-2024 [EM-006]. Electronic trading was widely expected to homogenize intraday volatility. The data do not support that prediction. Session patterns are not regime artifacts -- they are structural features of how liquidity is organized globally.</p><p><strong>KEY FINDINGS</strong></p><p>This report documents six empirical regularities in FX intraday volatility using 20 years of minute-bar data across major and cross pairs.</p><ol><li><p>FX volatility peaks at 14:00 UTC, reaching 27.07 pips average range -- 2.3x the quietest hour at 21:00 UTC (12.00 pips) [EM-001].</p></li><li><p>London session volatility exceeds Asian session by 1.3x (21.45 vs. 16.43 pips average range, d=0.307, t=121.51) [EM-002].</p></li><li><p>The London-New York overlap is the single most volatile session window (25.92 pips, 1.21x London-only) [EM-003].</p></li><li><p>EURGBP is the most session-dependent pair (London/Asian ratio 1.79x); AUDJPY is the least (1.02x) [EM-004].</p></li><li><p>Friday carries the highest daily average range (19.26 pips); Monday is the quietest (16.84 pips, 1.14x ratio) [EM-005].</p></li></ol><p>Execution timing decisions made without reference to session structure carry avoidable cost.</p><div><hr></div><h2>1. Introduction</h2><p>FX is a 24-hour market in name. In practice, it is a sequence of overlapping regional liquidity pools that open and close on predictable schedules. That structure has consequences: volatility, spreads, and price discovery are not uniformly distributed across the trading day.</p><p>A substantial literature documents intraday seasonality in FX. Andersen and Bollerslev (1998) identified systematic intraday periodicity in DM/USD returns. Dacorogna et al. (2001) catalogued session-based volatility clustering across major pairs. More recent work by Ito and Yamada (2017) on the Tokyo fix and Evans and Lyons (2002) on order flow have reinforced the view that liquidity events -- not random arrival -- drive the intraday volatility profile. What the literature has not resolved cleanly is whether these patterns are stable across the structural and technological changes of the past two decades.</p><p>This report makes three contributions. First, it documents session volatility hierarchy across a 20-year window with uniform methodology. Second, it quantifies pair-level heterogeneity in session dependence. Third, and most importantly, it tests whether the hourly volatility profile has remained stable across market regimes. The stability finding -- r=0.987 between the 2005-2009 and 2020-2024 sub-periods [EM-006] -- transforms the other results from historical description into forward-applicable structure.</p><p>Section 2 describes data. Sections 3 and 4 present primary and secondary findings. Section 5 discusses interpretation, limitations, and prior literature. Section 6 concludes.</p><div><hr></div><h2>2. Data</h2><h3>2.1 Primary Dataset</h3><p>The primary dataset consists of minute-bar OHLC data for eight FX pairs spanning January 2005 through March 2026. Pairs include the four major USD pairs (EURUSD, GBPUSD, USDJPY, USDCHF) and four cross pairs selected to span geographic sessions (EURGBP, EURJPY, AUDUSD, AUDJPY). Minute bars were sourced from a single commercial provider to ensure consistency in timestamp convention and session boundary treatment.</p><p>Hourly ranges were computed as the high-minus-low of all minute bars within each UTC clock hour. This aggregation is robust to tick-level microstructure noise while preserving the intraday shape of the volatility profile. All analysis is conducted in pips normalized to conventional decimal conventions.</p><h3>2.2 Supplemental Data</h3><p>No supplemental datasets were used. Session boundary definitions are fixed by convention: Asian session 00:00-08:00 UTC, London session 08:00-16:00 UTC, New York session 13:00-21:00 UTC, London-New York overlap 13:00-16:00 UTC. Public holiday dates were not removed from the sample. Their inclusion biases session comparisons slightly downward for all sessions and does not affect relative rankings.</p><h3>2.3 Sample and Train/Test Split</h3><p><strong>DATA SPLIT</strong></p><p><strong>Split:</strong> Full sample | <strong>Period:</strong> 2005-01-01 to 2026-03-02 | <strong>Purpose:</strong> Primary analysis, all EM findings</p><p><strong>Split:</strong> Early era | <strong>Period:</strong> 2005-01-01 to 2009-12-31 | <strong>Purpose:</strong> Stability comparison baseline [EM-006]</p><p><strong>Split:</strong> Late era | <strong>Period:</strong> 2020-01-01 to 2024-12-31 | <strong>Purpose:</strong> Stability comparison test period [EM-006]</p><p><strong>Split:</strong> Holdout | <strong>Period:</strong> None designated | <strong>Purpose:</strong> Descriptive study; no predictive model fitted</p><p>This study is descriptive and does not fit a predictive model. No formal train/test split is required. The era comparison in Section 4 uses non-overlapping windows separated by 10 years to avoid in-sample contamination of the stability estimate.</p><p><em>Analysis run on 2026-03-15. Data through 2026-03-02.</em></p><div><hr></div><h2>3. Intraday Volatility Structure</h2><p>The headline finding is that FX volatility is highly concentrated in time. The 24-hour trading day contains large and predictable variation in average range, and that variation is organized almost entirely around the opening and overlap of the major regional trading sessions.</p><h3>3.1 The Hourly Volatility Profile</h3><p>The average hourly range across all pairs and all trading days peaks at 14:00 UTC with a mean range of 27.07 pips. The quietest hour is 21:00 UTC at 12.00 pips. The ratio between these extremes is 2.3x [EM-001], a difference that is statistically indistinguishable from zero in its p-value and is estimated across 1,315,045 pair-hour observations.</p><p>The 14:00 UTC peak corresponds to the heart of the London-New York overlap, when both the largest European institutional flows and the New York open are simultaneously active. The 21:00 UTC trough coincides with the hour after New York equity markets close and before meaningful Asian session liquidity has accumulated.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q5Cc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q5Cc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 424w, https://substackcdn.com/image/fetch/$s_!q5Cc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 848w, https://substackcdn.com/image/fetch/$s_!q5Cc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!q5Cc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q5Cc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q5Cc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 424w, https://substackcdn.com/image/fetch/$s_!q5Cc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 848w, https://substackcdn.com/image/fetch/$s_!q5Cc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!q5Cc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27b53aa4-394f-4154-befb-8d9f2e77d135_2000x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>So what.</em> A trader who executes at 21:00 UTC faces a market with roughly half the range activity of the same trade at 14:00 UTC. That does not make 21:00 UTC a worse execution time in all contexts -- tighter directional range may reduce slippage for some order types -- but it does mean the choice of execution hour has a measurable and repeatable effect on the price-discovery environment. The 2.3x ratio between peak and trough is large enough to be operationally significant for any participant sensitive to spread or range.</p><h3>3.2 Session-Level Comparison</h3><p>Aggregating hourly ranges into session windows confirms a clear hierarchy. London session average range is 21.45 pips versus 16.43 pips in the Asian session -- a 1.3x ratio [EM-002]. This difference is highly reliable (Welch t=121.51, p effectively zero, d=0.307) across 702,859 observations. The effect size of d=0.307 is modest by conventional benchmarks, meaning the distributions overlap substantially, but the direction is unambiguous and stable.</p><p>The London-New York overlap window (13:00-16:00 UTC) registers 25.92 pips average range, which is 1.21x the London-only session average [EM-003]. This overlap effect is itself statistically robust (Welch t=73.95, d=0.240, N=432,411). The overlap is not merely additive -- it represents genuine concentration of institutional order flow as both regional market-maker communities are simultaneously active.</p><p><em>So what.</em> Session-level volatility hierarchy has direct implications for execution cost modeling. Strategies that require wide participation -- for example, larger notional flows or less liquid crosses -- face meaningfully different market conditions depending on session timing. The London session and its New York overlap window account for a disproportionate share of total daily price movement. Research connecting session timing to signal quality is warranted; this report establishes the volatility baseline that such work requires (see RP-004 for session effects on SSI signal quality).</p><h3>3.3 Pair-Level Session Dependence</h3><p>Not all pairs are equally session-dependent. EURGBP displays the highest London-to-Asian session volatility ratio at 1.79x [EM-004]. This is expected given that EURGBP's two constituent currencies are both primarily European and see limited price discovery outside London hours. AUDJPY, by contrast, shows essentially equal volatility across London and Asian sessions (ratio 1.02x), reflecting the dual geographic relevance of its component currencies.</p><p>The spread between the most and least session-dependent pairs is 0.78 ratio units [EM-004]. This heterogeneity is large enough to require pair-specific session modeling rather than a single universal session adjustment.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9m52!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9m52!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 424w, https://substackcdn.com/image/fetch/$s_!9m52!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 848w, https://substackcdn.com/image/fetch/$s_!9m52!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!9m52!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9m52!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9m52!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 424w, https://substackcdn.com/image/fetch/$s_!9m52!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 848w, https://substackcdn.com/image/fetch/$s_!9m52!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!9m52!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5603fbe6-79a3-445c-8aa8-81ebab4d063b_1600x1200.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>So what.</em> A one-size-fits-all session filter applied uniformly across pairs will overfit session effects for AUDJPY and underfit them for EURGBP. Pair-level session calibration is required for any system that uses session timing as an input variable. The heatmap makes the cross-pair structure visible at a glance and should be treated as a reference artifact for calibration decisions.</p><p>The pair-level heterogeneity also creates a natural test for any theory of session effects. If session patterns arise from liquidity geography, we expect the largest session differentials in pairs whose component currencies have geographically concentrated liquidity. The data support this interpretation: EURGBP and EURUSD (both European-heavy) show the largest London ratios, while Asia-Pacific pairs (AUDJPY, AUDUSD) show the smallest.</p><h3>3.4 Day-of-Week Effects</h3><p>Friday carries the highest average daily range at 19.26 pips; Monday is the quietest at 16.84 pips, a ratio of 1.14x [EM-005]. The day-of-week effect is modest compared to the intraday session effect (1.14x vs 2.3x). Tuesday through Thursday cluster tightly in the middle, with no statistically meaningful differentiation between them.</p><p><em>So what.</em> The day-of-week effect exists but is secondary to session timing. A trader optimizing execution timing should prioritize hour-of-day over day-of-week. The Friday premium likely reflects end-of-week position squaring and pre-weekend risk reduction across institutional desks. The Monday discount reflects the gradual re-accumulation of risk after the weekend gap. Neither effect is large enough to warrant day-specific strategy modifications in most contexts, but both should be controlled for in any volatility model that uses calendar features.</p><div><hr></div><h2>4. Temporal Stability of the Volatility Profile</h2><p>The findings in Section 3 describe a 20-year average. Averages can obscure change. A session structure that was strong in 2005 but has since eroded would be historically interesting but operationally irrelevant.</p><h3>4.1 Era Comparison: 2005-2009 vs. 2020-2024</h3><p>The Pearson correlation between the 24-hour hourly volatility profile in 2005-2009 and the same profile in 2020-2024 is r=0.987 [EM-006]. The r-squared of 0.975 means that 97.5% of the variance in the shape of the late-era profile is explained by the shape of the early-era profile.</p><p>This result is computed across 24 hourly observations (one per clock hour), so the N is small in data-point terms. The substantive interpretation is that the rank ordering and relative magnitudes of hourly ranges have changed negligibly over two decades of market structure evolution -- through the transition to electronic trading, the global financial crisis, COVID volatility, and several monetary policy regime shifts.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Trcu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Trcu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Trcu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Trcu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Trcu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Trcu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Trcu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 424w, https://substackcdn.com/image/fetch/$s_!Trcu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 848w, https://substackcdn.com/image/fetch/$s_!Trcu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!Trcu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc963a2ea-bf31-4b82-9b3b-c9c20ed20391_2000x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>So what.</em> The stability finding is the highest-value result in this report. It elevates the session structure from a historical description to a forward-applicable constraint. A practitioner can use the session hierarchy documented in Section 3 with reasonable confidence that it will hold in the near future, not because markets are static, but because the institutional geography that generates session patterns -- where banks are located, when they open, when they overlap -- changes on a slower timescale than most market participants model. The session pattern is structural, not regime-contingent.</p><p>This finding also has implications for backtesting methodology. Studies that exclude session-timing controls on the grounds that "markets have changed" are dismissing a source of variation that has, empirically, remained highly stable. Omitting session structure from a multi-year backtest is not a neutral choice.</p><h3>4.2 Day-of-Week Stability</h3><p>The day-of-week hierarchy (Friday highest, Monday lowest [EM-005]) is less stable than the hourly profile. While the rank ordering of days is broadly consistent across eras, the magnitude of the Friday premium has fluctuated, likely driven by changing institutional practices around weekend risk management. The day-of-week effect should be treated as a weaker structural feature than the hourly session pattern, and any model incorporating it should allow for periodic recalibration.</p><div><hr></div><h2>5. Discussion</h2><p>The findings in this report converge on a single organizing idea: FX volatility is predictably structured in time, that structure is tied to the geographic organization of liquidity, and it has not materially changed in 20 years. The following subsections interpret this result, place it in the context of prior work, and document limitations.</p><h3>5.1 Interpretation</h3><p>The 2.3x peak-to-trough hourly ratio [EM-001] and the 1.3x London-to-Asian session differential [EM-002] are large enough to be operationally relevant but not so large as to suggest a market that is fundamentally broken outside peak hours. The market functions continuously; it is simply thinner and slower in some windows than others.</p><p>The overlap effect [EM-003] is theoretically coherent. When two large liquidity pools are simultaneously open, the effective pool is larger, bid-ask competition is more intense, and larger flows can be absorbed -- which paradoxically produces higher volatility as more information is processed per unit time. The 1.21x overlap premium over London-only is consistent with this mechanism.</p><p>The stability result [EM-006] is the hardest to explain away. Electronic trading was widely expected to homogenize intraday volatility by reducing the operational friction of crossing time zones. The data do not support that prediction. The 24-hour profile in 2020-2024 looks almost identical to 2005-2009. The implication is that session patterns are driven by institutional coordination norms -- when large participants are staffed, when risk limits reset, when key fixings occur -- rather than by the technical cost of trading across time zones.</p><h3>5.2 Comparison with Prior Literature</h3><p>The findings are broadly consistent with Andersen and Bollerslev (1998), who documented strong intraday periodicity in DM/USD, and with Dacorogna et al. (2001), who showed that the London-New York overlap was the dominant volatility window. The contribution here is extension to 20 years, inclusion of cross pairs, and the explicit stability test. Where prior work assumed stability or studied single-decade windows, this report demonstrates it directly with a correlation of r=0.987 across two non-overlapping five-year windows separated by 15 years [EM-006]. The day-of-week finding [EM-005] -- Friday most volatile at 19.26 pips, Monday quietest at 16.84 pips -- is consistent with end-of-week position-squaring effects documented in the broader market microstructure literature, though the 1.14x ratio is modest.</p><h3>5.3 Limitations</h3><p><strong>LIMITATIONS</strong></p><p><strong>Limitation:</strong> Single data provider | <strong>Notes:</strong> All minute-bar data sourced from one commercial vendor. Timestamp conventions, holiday treatment, and synthetic cross construction may differ from other sources. Results may not replicate exactly on alternative datasets.</p><p><strong>Limitation:</strong> Pip normalization | <strong>Notes:</strong> Ranges expressed in pips use conventional decimal conventions. Pairs with different tick sizes or quote conventions (e.g., JPY pairs) are normalized but any residual scaling artifacts could affect cross-pair comparisons in Table 3 [EM-004].</p><p><strong>Limitation:</strong> Public holidays not removed | <strong>Notes:</strong> Holiday sessions are included in all session aggregations. These days typically show suppressed volatility and bias all session averages slightly downward. The bias is expected to be uniform across sessions and not to affect relative rankings.</p><p><strong>Limitation:</strong> No spread data | <strong>Notes:</strong> This analysis measures range, not spread or realized transaction cost. A quiet session may have wide spreads that offset the narrower range. Execution cost conclusions require spread data not included here.</p><p><strong>Limitation:</strong> Era comparison uses 24 data points | <strong>Notes:</strong> The stability correlation [EM-006] is computed over 24 hourly observations. While r=0.987 is compelling, the small N means the confidence interval around this estimate is wide and the test is not sensitive to small deviations in specific hours.</p><p><strong>Limitation:</strong> No causal identification | <strong>Notes:</strong> Session volatility concentration is documented but not causally identified. The mechanism -- liquidity geography vs. institutional norms vs. fixing effects -- cannot be separated with this dataset alone.</p><div><hr></div><h2>6. Conclusion</h2><p>This report documents the intraday volatility structure of FX markets using 20 years of minute-bar data across eight pairs. Three findings stand out.</p><p>The 24-hour volatility profile peaks at 14:00 UTC with a 2.3x ratio over the quietest hour (27.07 pips vs. 12.00 pips, N=1,315,045) [EM-001], concentrated around the London-New York overlap window which averages 25.92 pips -- 1.21x London-only average [EM-003].</p><p>Session hierarchy is real and pair-specific. London averages 1.3x Asian session range (21.45 vs. 16.43 pips, d=0.307) [EM-002], but this ratio ranges from 1.79x for EURGBP to 1.02x for AUDJPY [EM-004], requiring pair-level calibration rather than uniform session adjustment.</p><p>The intraday volatility profile is structurally stable across two decades. The hourly pattern correlation between 2005-2009 and 2020-2024 is r=0.987 (r-squared=0.975) [EM-006], meaning session structure is a persistent feature of market organization, not a regime-specific artifact.</p><p>Together, these findings establish that session timing is a first-order variable in FX market analysis. They provide the empirical baseline for RP-004's investigation of whether session timing modulates the quality of the SSI contrarian signal documented in RP-001, and they support the design of execution timing frameworks that treat session structure as a stable, usable input rather than historical noise.</p><div><hr></div><h2>Methodology Notes</h2><p><strong>Method:</strong> Hourly range aggregation | <strong>Specification:</strong> High minus low of all minute bars within each UTC clock hour, averaged across all pairs and all days | <strong>Evidence Reference:</strong> EM-001</p><p><strong>Method:</strong> Session boundary definition | <strong>Specification:</strong> Asian: 00:00-08:00 UTC; London: 08:00-16:00 UTC; New York: 13:00-21:00 UTC; Overlap: 13:00-16:00 UTC. Fixed conventional boundaries, not adjusted for DST. | <strong>Evidence Reference:</strong> EM-002, EM-003</p><p><strong>Method:</strong> Welch t-test (session comparison) | <strong>Specification:</strong> Two-sample t-test with unequal variance assumption. Null hypothesis: equal mean hourly range between sessions. | <strong>Evidence Reference:</strong> EM-002, EM-003</p><p><strong>Method:</strong> Session volatility ratio by pair | <strong>Specification:</strong> London session mean range divided by Asian session mean range, computed per pair over full sample | <strong>Evidence Reference:</strong> EM-004</p><p><strong>Method:</strong> Day-of-week aggregation | <strong>Specification:</strong> Mean hourly range grouped by calendar day of week (UTC). Monday = weekday 0. | <strong>Evidence Reference:</strong> EM-005</p><p><strong>Method:</strong> Era profile correlation | <strong>Specification:</strong> Pearson correlation of 24-element vectors (one mean range per UTC hour) computed separately for 2005-2009 and 2020-2024, then correlated | <strong>Evidence Reference:</strong> EM-006</p><p><strong>Method:</strong> Pip normalization | <strong>Specification:</strong> All ranges in pips using standard FX pip convention (0.0001 for non-JPY, 0.01 for JPY). No volatility scaling applied across pairs. | <strong>Evidence Reference:</strong> All</p><div><hr></div><h2>Reproducibility</h2><p>All findings in this report are traceable to named analysis functions in the research codebase.</p><ul><li><p>EM-001: analysis.py:section_1_hourly_vol</p></li><li><p>EM-002, EM-003: analysis.py:section_2_session_comparison</p></li><li><p>EM-004: analysis.py:section_3_by_pair</p></li><li><p>EM-005: analysis.py:section_4_day_of_week</p></li><li><p>EM-006: analysis.py:section_5_stability</p></li></ul><p>Input data: minute-bar OHLC for EURUSD, GBPUSD, USDJPY, USDCHF, EURGBP, EURJPY, AUDUSD, AUDJPY. Date range: 2005-01-01 through 2026-03-02. Data vintage: pulled 2026-03-15.</p><p>Figure sources: figures/fig1_hourly_vol_profile.png, figures/fig2_session_heatmap.png, figures/fig3_session_stability.png. All figures generated by corresponding analysis.py sections from the same input dataset.</p><p>No random seeds, model fits, or sampling procedures were used. Results are deterministic given the input data.</p>]]></content:encoded></item><item><title><![CDATA[RP-002: The Anatomy of Retail FX Positioning: 12 Years of Hourly Crowd Behavior]]></title><description><![CDATA[Granger causality, transfer entropy, and PCA across 1.9 million hourly observations]]></description><link>https://fxeresearch.substack.com/p/the-anatomy-of-retail-fx-positioning</link><guid isPermaLink="false">https://fxeresearch.substack.com/p/the-anatomy-of-retail-fx-positioning</guid><dc:creator><![CDATA[FX Engineer]]></dc:creator><pubDate>Mon, 16 Mar 2026 05:12:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2eddf71-9cc9-4f92-a0d0-b47a92ccabd9_2912x1456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>A quantitative characterization of the FXCM Speculative Sentiment Index across 28 currency pairs, March 2014 to February 2026</em></p><p><strong>Authors:</strong> FXE Research | <strong>Dataset:</strong> FXCM Speculative Sentiment Index (SSI), 28 FX pairs, hourly | <strong>Observations:</strong> 1,936,174 | <strong>Period:</strong> March 2014 to February 2026 | <strong>Methods:</strong> Descriptive statistics, autocorrelation, z-score extremes, Granger causality, transfer entropy, Kolmogorov-Smirnov two-sample test, PCA</p><div><hr></div><h2>Abstract</h2><p><strong>KEY FINDINGS SUMMARY</strong></p><p>This report establishes five foundational facts about retail FX positioning as captured by the FXCM Speculative Sentiment Index (SSI) across 28 currency pairs and 1,936,174 hourly observations from March 2014 to February 2026 [EM-001].</p><p><strong>Finding 1 &#8212; Extraordinary Persistence.</strong> SSI exhibits a mean 1-hour autocorrelation of 0.989 across all pairs, decaying to 0.920 at 24 hours [EM-002]. Crowd positioning is a near-random-walk process in the short run.</p><p><strong>Finding 2 &#8212; Fat-Tailed Extremes.</strong> SSI z-scores exceed |1.5| approximately 25.4% of the time at 2-hour resolution, with extreme runs averaging 3.6 bars [EM-003].</p><p><strong>Finding 3 &#8212; The Granger Null (Centerpiece).</strong> In 0 of 7 major pairs does SSI Granger-cause price at p &lt; 0.05 [EM-004]. Retail positioning does not lead price in a linear, statistically detectable sense.</p><p><strong>Finding 4 &#8212; Structural Drift.</strong> EURUSD SSI distributions shifted significantly between the 2014-2017 and 2022-2026 eras (KS = 0.112, p &lt; 10^-135, Cohen's d = -0.294) [EM-005].</p><p><strong>Finding 5 &#8212; Cross-Pair Structure.</strong> PCA yields 7 components exceeding the Kaiser criterion; the top 3 explain 56.5% of variance [EM-007].</p><div><hr></div><h2>1. Introduction</h2><p>Retail trader positioning data has attracted growing interest as a potential contrarian or confirmatory signal in foreign exchange markets. Brokers including FXCM publish aggregate net long/short ratios for their client base, creating a rare window into the real-time beliefs of a large, identifiable population of non-institutional participants. Despite the intuitive appeal of such data, its statistical properties have not been characterized systematically at hourly resolution across a multi-decade panel.</p><p>The existing literature on retail FX positioning is sparse. Oanda and FXCM sentiment data have been referenced in practitioner research, and a body of work on investor sentiment in equity markets provides theoretical grounding, but rigorous, pair-level analysis of autocorrelation structure, distributional stability, and causal ordering relative to price is absent from the published record.</p><p>This report addresses that gap. Using 1,936,174 hourly SSI observations spanning 28 pairs and 12 years, it provides the first comprehensive characterization of retail FX positioning as a time series. The central finding is a paradox: SSI is highly persistent and episodically extreme, yet it does not Granger-cause price in any of the seven major pairs tested. Subsequent reports in this series (RP-003, RP-004, RP-012) build directly on the baseline established here.</p><div><hr></div><h2>2. Data</h2><h3>2.1 Primary Dataset</h3><p>The primary dataset is the FXCM Speculative Sentiment Index (SSI), a measure of the net positioning ratio among FXCM retail clients, expressed as the ratio of long to short open positions. Data are sampled at hourly frequency and cover 28 currency pairs [EM-001]. The SSI is a flow-weighted, real-time measure of crowd directional bias and is distinct from commitment-of-traders data in both population (retail only) and cadence (hourly versus weekly).</p><h3>2.2 Supplemental Data</h3><p>Price data for the seven major currency pairs were obtained to support Granger causality and transfer entropy analysis. No macro contextual data are included in this report.</p><h3>2.3 Sample and Train/Test Split</h3><p><strong>DATA SPLIT</strong></p><p><strong>Split:</strong> Training | <strong>Period:</strong> March 2014 to December 2023 | <strong>Purpose:</strong> All descriptive, causal, and structural analyses in this report</p><p><strong>Split:</strong> Test (reserved) | <strong>Period:</strong> January 2024 to February 2026 | <strong>Purpose:</strong> Reserved for out-of-sample evaluation in downstream reports; contains the documented SSI edge collapse toward 50%</p><p>The test period is not used in any analysis presented here. No look-ahead bias is introduced.</p><p><em>Analysis run on 2026-03-14. Data through 2026-02-28.</em></p><div><hr></div><h2>3. Persistence and Extremes: The Time-Series Structure of SSI</h2><h3>3.1 Dataset Scale and Coverage</h3><p>The SSI panel contains 1,936,174 hourly observations across 28 currency pairs [EM-001]. Coverage is uneven across pairs due to varying product availability over the sample window, but the major pairs carry the largest observation counts. The breadth of the panel enables both pair-level and cross-pair inference that would not be possible with a narrower dataset.</p><p><em>So what:</em> The scale of the dataset is sufficient to detect small statistical effects with confidence. Any null result reported in this paper is not attributable to inadequate power.</p><h3>3.2 Autocorrelation Structure</h3><p>SSI exhibits extraordinary persistence. The mean 1-hour Pearson autocorrelation across all 28 pairs is 0.989, and the 24-hour autocorrelation remains at 0.920 [EM-002]. For context, an autocorrelation of 0.989 at lag 1 implies that the current SSI value explains approximately 97.8% of the variance of the next hour's value. The series behaves, in the short run, almost as a unit-root process.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VGBu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VGBu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 424w, https://substackcdn.com/image/fetch/$s_!VGBu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 848w, https://substackcdn.com/image/fetch/$s_!VGBu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 1272w, https://substackcdn.com/image/fetch/$s_!VGBu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VGBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VGBu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 424w, https://substackcdn.com/image/fetch/$s_!VGBu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 848w, https://substackcdn.com/image/fetch/$s_!VGBu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 1272w, https://substackcdn.com/image/fetch/$s_!VGBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60b326a5-47e4-4837-b6e4-9ccef35ba036_1971x970.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>So what:</em> This persistence has an immediate practical implication. Any model that uses SSI as a predictor must account for the fact that SSI rarely moves. A strategy that exploits SSI changes rather than SSI levels must tolerate long stretches of no signal. The high autocorrelation also means that standard significance tests applied to raw SSI levels will dramatically overstate degrees of freedom unless corrected.</p><p>The persistence of SSI establishes the baseline. The next question is whether the series ever departs meaningfully from that baseline, and how such departures are distributed.</p><h3>3.3 Z-Score Extremes and Runs</h3><p>Despite its persistence, SSI does reach statistically unusual values. At 2-hour resolution, SSI z-scores exceed the |1.5| threshold approximately 25.4% of the time, and extreme runs average 3.6 bars in length [EM-003]. This is a non-trivial frequency: roughly one in four 2-hour windows qualifies as an extreme reading by this criterion.</p><p><em>So what:</em> The coexistence of near-unit-root autocorrelation and a 25.4% extreme-reading frequency characterizes SSI as a persistent series with a fat-tailed displacement distribution. Extremes, when they occur, do not self-correct within a single bar. This property is relevant for any event-study design or threshold-based strategy that depends on SSI reversals.</p><p>These properties raise the central question of the report: given that SSI is persistent and episodically extreme, does it carry information about future price?</p><div><hr></div><h2>4. Causal Ordering: Does SSI Lead Price?</h2><h3>4.1 Granger Causality Results</h3><p>The Granger causality tests yield a definitive null result. Across all seven major currency pairs tested with bivariate models and up to 24 lags, SSI does not Granger-cause price at the p &lt; 0.05 threshold. The count is 0 of 7 [EM-004]. In the reverse direction, the tests would be expected to show price leading SSI, consistent with reactive positioning, though the symmetric count for price leading SSI is also 0 of 7 in the available evidence map entry [EM-004].</p><p><em>So what:</em> This is the centerpiece finding of the report. The Granger null does not mean SSI is useless. It means that linear, low-lag information from SSI levels does not predict future price returns in a detectable way using standard bivariate Granger tests. Any claim that retail positioning provides a direct price-forecasting edge in a simple linear framework is not supported by this evidence.</p><p>The Granger null sets up a tension. If SSI does not lead price, how is information flowing between the two series? Transfer entropy provides a more flexible test.</p><h3>4.2 Transfer Entropy and Information Flow</h3><p>Transfer entropy analysis reveals an asymmetric information flow. For EURUSD, TE(Price to SSI) = 0.045 bits versus TE(SSI to Price) = 0.013 bits, a ratio of 3.4x. For GBPUSD the ratio is 3.1x (0.056 vs 0.018 bits). This directional asymmetry holds across all seven majors without exception.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h-XA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h-XA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 424w, https://substackcdn.com/image/fetch/$s_!h-XA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 848w, https://substackcdn.com/image/fetch/$s_!h-XA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 1272w, https://substackcdn.com/image/fetch/$s_!h-XA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h-XA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h-XA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 424w, https://substackcdn.com/image/fetch/$s_!h-XA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 848w, https://substackcdn.com/image/fetch/$s_!h-XA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 1272w, https://substackcdn.com/image/fetch/$s_!h-XA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7984c6a-50fe-4c44-819c-6ead7780c1bd_1573x971.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>So what:</em> The transfer entropy result reframes the Granger null. Retail traders respond to price; price does not systematically respond to retail traders. This directional asymmetry is consistent with a model of informed institutional flow setting prices while retail participants react. The practical implication is that SSI may be more useful as a measure of how much the crowd has already absorbed a price move than as a leading indicator of the next move.</p><p>The Granger null and the transfer entropy finding together constitute the core paradox of this dataset: SSI is persistent, episodically extreme, and informationally reactive to price, but it does not feed forward into price. Section 5 addresses the interpretation and potential resolutions of this paradox directly.</p><div><hr></div><h2>5. Structural Evolution and Cross-Pair Dependence</h2><h3>5.1 Temporal Evolution of the SSI Distribution</h3><p>The SSI distribution is not stationary over the 12-year sample. A Kolmogorov-Smirnov two-sample test comparing the EURUSD SSI distribution in the 2014-2017 era against the 2022-2026 era yields a test statistic of KS = 0.112 and a p-value of approximately 4.9 x 10^-136 [EM-005]. The effect size, measured as Cohen's d = -0.294, is modest by conventional standards despite the extraordinary statistical significance [EM-005].</p><p>The 1-hour autocorrelation for EURUSD SSI declined from 0.993 in the 2014 era to 0.989 in the 2022 era, a change of -0.004 [EM-006]. While small in absolute terms, the directional trend suggests a gradual, modest increase in SSI variability over time.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DRyH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DRyH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 424w, https://substackcdn.com/image/fetch/$s_!DRyH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 848w, https://substackcdn.com/image/fetch/$s_!DRyH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 1272w, https://substackcdn.com/image/fetch/$s_!DRyH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DRyH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DRyH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 424w, https://substackcdn.com/image/fetch/$s_!DRyH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 848w, https://substackcdn.com/image/fetch/$s_!DRyH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 1272w, https://substackcdn.com/image/fetch/$s_!DRyH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a2fef7-02a0-4aa7-83af-1f41d7b2bfd0_1973x970.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><em>So what:</em> The divergence between the p-value and the effect size here is instructive. The distributional shift is real and highly significant in a statistical sense, but the practical magnitude is modest. A d of -0.294 implies a roughly 12% non-overlap between the two distributions. Researchers and practitioners should not treat SSI as a fixed-parameter process but should be alert to slow-moving distributional drift. This finding motivates the structural break analysis planned for RP-012.</p><h3>5.2 Cross-Pair Factor Structure</h3><p>PCA applied to the full 28-pair SSI panel identifies 7 components exceeding the Kaiser criterion (eigenvalue &gt; 1). The top three components explain 26.0%, 15.9%, and 14.5% of variance respectively, for a cumulative 56.5%. Eight components are required to explain 90% of variance [EM-007].</p><p><em>So what:</em> The factor structure has two implications. First, a large share of common variance is captured by a small number of components, suggesting that macro risk-on/risk-off positioning, dollar directionality, and perhaps carry trade sentiment drive coordinated retail positioning across pairs. Second, the remaining variance is pair-specific, meaning that cross-pair diversification of SSI-based signals is meaningful. The seven-factor structure will anchor the regime-switching analysis in RP-003.</p><div><hr></div><h2>6. Discussion</h2><p>The five findings in this report converge on a consistent picture of retail FX positioning as a persistent, reactive, and slowly drifting process that does not linearly forecast price. Each element of that characterization carries implications for how SSI data should be used in downstream research.</p><h3>6.1 Interpretation</h3><p>The central paradox -- high persistence and fat-tailed extremes coexisting with a Granger null -- can be resolved by distinguishing between two roles for SSI data. As a contemporaneous measure of crowd exposure, SSI is informative: it reflects how much positional risk retail participants are carrying at any moment. As a leading indicator of price, it is not demonstrably useful in a linear framework. The transfer entropy asymmetry supports this interpretation: retail traders absorb price information and update positions accordingly, but their aggregate positioning does not create sufficient price pressure to be detected in Granger tests at hourly resolution. Whether non-linear or regime-conditional relationships exist is a question reserved for RP-004.</p><h3>6.2 Comparison with Prior Literature</h3><p>The Granger null is consistent with the broader sentiment literature in equities, where retail sentiment is generally found to be a lagging rather than leading indicator at short horizons. The magnitude of the autocorrelation (0.989 at lag 1) is higher than typical equity put-call ratio series, likely reflecting the continuous nature of FX positioning relative to discrete options flows. The distributional shift finding is consistent with documented changes in FXCM's client base composition following the 2015 SNB shock and subsequent regulatory changes in the retail FX industry.</p><h3>6.3 Limitations</h3><p><strong>Limitation:</strong> Single-broker source | <strong>Notes:</strong> SSI reflects FXCM client positioning only. Other brokers may differ in composition and behavior, limiting generalizability.</p><p><strong>Limitation:</strong> Survivorship in pair coverage | <strong>Notes:</strong> Pairs added or removed during the sample window create unbalanced panels. Less-liquid pairs carry higher measurement uncertainty.</p><p><strong>Limitation:</strong> Granger causality is linear | <strong>Notes:</strong> The 0/7 null applies only to linear, bivariate, low-lag relationships. Non-linear, multivariate, or regime-conditional relationships are not ruled out. Addressed in RP-004.</p><p><strong>Limitation:</strong> Test period is reserved | <strong>Notes:</strong> The January 2024 to February 2026 period, which contains the SSI edge collapse toward 50%, is not analyzed here. Training period results may not generalize.</p><p><strong>Limitation:</strong> No macro controls | <strong>Notes:</strong> The analysis is unconditional. SSI dynamics during high-volatility macro regimes may differ systematically. Addressed in RP-010.</p><p><strong>Limitation:</strong> Effect size vs significance | <strong>Notes:</strong> The KS distributional shift is statistically overwhelming (p &lt; 10^-135) but modest in effect (d = -0.294). Statistical significance should not be conflated with practical significance.</p><p><strong>Limitation:</strong> Single-pair temporal analysis | <strong>Notes:</strong> Distribution shift and autocorrelation evolution are reported for EURUSD only. Cross-pair structural break analysis is planned for RP-012.</p><div><hr></div><h2>7. Conclusion</h2><p>This report provides the first systematic, hourly-resolution characterization of retail FX positioning across 28 currency pairs over 12 years. Three numbered findings summarize the evidentiary core:</p><p><strong>SSI is extraordinarily persistent.</strong> The mean 1-hour autocorrelation is 0.989, decaying to 0.920 at 24 hours [EM-002]. Despite this persistence, SSI z-scores exceed |1.5| in 25.4% of 2-hour windows, with extreme runs averaging 3.6 bars [EM-003].</p><p><strong>SSI does not Granger-cause price.</strong> In 0 of 7 major pairs does SSI lead price at p &lt; 0.05 in bivariate tests with up to 24 lags [EM-004]. Transfer entropy confirms that the dominant information flow runs from price to SSI, not the reverse.</p><p><strong>SSI distributions drift slowly but significantly.</strong> The EURUSD distribution shifted between the 2014-2017 and 2022-2026 eras with KS = 0.112 at p &lt; 10^-135, though Cohen's d = -0.294 indicates the practical magnitude is modest [EM-005]. Seven PCA components exceed the Kaiser criterion across the 28-pair panel, with the top three explaining 56.5% of variance [EM-007].</p><p>These results establish the statistical baseline required for all downstream work in this series. All findings are derived from the training period (2014-2023); the reserved test period (2024-2026), which contains the documented SSI edge collapse toward a 50% directional base rate, will provide the out-of-sample challenge for downstream hypotheses. RP-003 will use the seven-factor PCA structure to build a regime-switching model of SSI states. RP-004 will test whether the Granger null conceals a non-linear contrarian relationship. RP-012 will formally identify structural break dates in the SSI process.</p><div><hr></div><h2>Methodology Notes</h2><p><strong>Method:</strong> Autocorrelation | <strong>Specification:</strong> Pearson autocorrelation, lags 1-24h, mean across 28 pairs | <strong>Evidence Ref:</strong> [EM-002]</p><p><strong>Method:</strong> Z-score extremes | <strong>Specification:</strong> Pair-level standardization, abs(z) &gt; 1.5 threshold at 2-hour resolution, 30-bar rolling window. Run length = consecutive bars meeting threshold | <strong>Evidence Ref:</strong> [EM-003]</p><p><strong>Method:</strong> Granger causality | <strong>Specification:</strong> Bivariate VAR, SSI + log-differenced price, max 24 lags, F-test for exclusion. Applied to 7 majors | <strong>Evidence Ref:</strong> [EM-004]</p><p><strong>Method:</strong> Transfer entropy | <strong>Specification:</strong> Histogram-based estimator, 10-bin discretization, lag 1. EURUSD: 3.4x ratio (0.045 vs 0.013 bits). GBPUSD: 3.1x. Asymmetry strongest in most liquid pairs | <strong>Evidence Ref:</strong> [EM-004]</p><p><strong>Method:</strong> Kolmogorov-Smirnov | <strong>Specification:</strong> Two-sample test, EURUSD SSI in 2014-2017 vs 2022-2026. Effect size as Cohen's d | <strong>Evidence Ref:</strong> [EM-005]</p><p><strong>Method:</strong> PCA | <strong>Specification:</strong> 28 SSI series aligned on common timestamps (N=30,083). Kaiser criterion for component retention | <strong>Evidence Ref:</strong> [EM-007]</p><p><strong>Method:</strong> Autocorrelation change | <strong>Specification:</strong> EURUSD split into pre-2018 and post-2022, lag-1 Pearson autocorrelation per subsample | <strong>Evidence Ref:</strong> [EM-006]</p><div><hr></div><h2>Reproducibility</h2><p>All analyses were produced from analysis.py. Section-level function references are noted in the evidence map for each finding. The training dataset covers March 2014 to December 2023. The test period (January 2024 to February 2026) was withheld from all analyses in this report. Analysis was run on 2026-03-14 against data through 2026-02-28. Figures are produced by the same script and correspond to findings as cited in the text. Independent replication requires access to the FXCM SSI hourly feed; the processed panel used here is available to FXE Research collaborators upon request.</p>]]></content:encoded></item><item><title><![CDATA[RP-001: Why the Data is Different: On Provenance, Methodology, and What We're Actually Building]]></title><description><![CDATA[A statistical framework for crowd positioning extremes &#8212; and why most sentiment tools miss the point.]]></description><link>https://fxeresearch.substack.com/p/retail-positioning-what-it-tells-you</link><guid isPermaLink="false">https://fxeresearch.substack.com/p/retail-positioning-what-it-tells-you</guid><dc:creator><![CDATA[FX Engineer]]></dc:creator><pubDate>Mon, 09 Mar 2026 22:01:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f40f9e8b-159e-449e-b887-279082a66fe7_2912x1456.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most major retail forex brokers publish their client positioning. The numbers are right there &#8212; 62% long EURUSD, 71% short GBPUSD. Free, real-time, updated constantly. This wasn&#8217;t always the case. Through the late 2000s and into the early 2010s, brokers began packaging this data as a premium feature &#8212; a &#8220;unique lens&#8221; on the market, another tool to keep traders engaged and trading. More tools, more trades. More trades, more revenue for the broker. The incentive structure behind why this data became public is worth understanding before trusting it.</p><p>What most traders don&#8217;t know &#8212; and what most vendors building on this data don&#8217;t know either &#8212; is that no two broker sentiment feeds are constructed the same way. The methodology questions are significant: Is it one-to-one buy versus sell regardless of client size? Is the A-book separated from the B-book? Is it volume-weighted or account-weighted? How are hedged positions handled? Are institutional and retail flows mixed or separated? Brokers don&#8217;t publish answers to these questions. What gets displayed publicly is a simplified output &#8212; a percentage, a ratio &#8212; with all the construction detail stripped out.</p><p>Building a trading framework on publicly available sentiment data without understanding what that data actually represents is building on assumptions. At best you get a general directional lean. At worst you&#8217;re reacting to a number that doesn&#8217;t mean what you think it means.</p><p>The operator of FX Engineer worked inside a major retail forex broker during the period when these feeds were first being developed and commercialized. Not as an observer &#8212; as someone who understood how the data was constructed, which feeds were meaningful, which were noise, and critically, what the numbers actually represented versus what they appeared to represent on a chart.</p><p>That context is the foundation of what FX Engineer is built on. The positioning feed powering this platform is not the publicly visible sentiment widget. It is a proprietary institutional feed &#8212; accessible only through a commercial technology provider relationship &#8212; with known construction methodology. Not assumed. Known. The data is what it says it is, because the provenance is understood end to end.</p><p>That distinction is the starting point for everything that follows.</p><div><hr></div><p><strong>The Problem With Raw Sentiment</strong></p><p>Retail positioning data has a genuine information edge. The academic literature on this is consistent: retail FX traders are systematically wrong at turning points, and their positioning tends to be contrarian-predictive when it reaches sufficient extremes. This isn&#8217;t controversial &#8212; it&#8217;s one of the more robust findings in FX market microstructure research.</p><p>The problem is that &#8220;sufficient extreme&#8221; is doing a lot of work in that sentence.</p><p>A raw percentage doesn&#8217;t tell you whether the current reading is historically unusual or just Tuesday. It doesn&#8217;t tell you whether the extreme has been building for two days or two months. It doesn&#8217;t tell you whether similar readings in the past preceded directional moves or just more sideways chop. It doesn&#8217;t adjust for which session the pattern fired in, or whether the crowd is trapped against momentum or merely stretched in the same direction as price.</p><p>All of that context is what separates a meaningful finding from a misleading one. Raw data strips it out entirely.</p><div><hr></div><p><strong>Why Now</strong></p><p>FX Engineer as a brand has existed since the early days of retail sentiment publishing &#8212; built originally by someone who understood the feed and its construction. What it never had was a serious research program built around that data.</p><p>The operator who acquired FX Engineer in late 2025 ran a CFTC-registered CTA from 2017 to 2021 using SSI-based strategies. Those strategies worked, then compressed, then stopped working well enough to justify running institutional capital against them. That compression was not a failure &#8212; it was information. It forced a different question: not &#8220;does this strategy work&#8221; but &#8220;what does the data actually show when you stop trying to trade it and start trying to understand it.&#8221;</p><p>Answering that question properly required building a research program, not a better signal. Not a more sophisticated pattern detector. A systematic empirical investigation of what retail FX positioning data actually is &#8212; how it behaves statistically, how it evolves over time, what relationship it has with price, and where that relationship breaks down.</p><p>That work is what this publication documents.</p><div><hr></div><p><strong>What the Research Found</strong></p><p>The first report in this series &#8212; RP-001, published March 2026 &#8212; establishes five foundational facts about retail FX positioning using 1,936,174 hourly observations across 28 currency pairs from March 2014 to February 2026.</p><p>The centerpiece finding: SSI does not Granger-cause price in any of the seven major pairs tested. Zero of seven. Retail positioning does not lead price in a linear, statistically detectable sense at hourly resolution.</p><p>That result is published prominently, not buried. It is the kind of finding that most vendors building on sentiment data prefer not to test, because testing it seriously risks undermining their product. This publication tests it seriously.</p><p>What RP-001 also finds is that SSI is extraordinarily persistent (mean 1-hour autocorrelation r=0.989), episodically extreme (z-scores exceed |1.5| in 25% of 2-hour windows), and informationally reactive to price rather than predictive of it. Transfer entropy runs from price to SSI at 3-4x the reverse direction. Retail traders respond to price. Price does not respond to retail traders &#8212; at least not in a linear framework at hourly resolution.</p><p>Whether non-linear or regime-conditional relationships exist is the subject of RP-003 and RP-004. The research follows the data. </p><p>The quantitative analysis supporting these findings is presented in full in RP-002.</p><div><hr></div><p><strong>What This Publication Is</strong></p><p>A systematic, peer-reviewable record of what the data shows.</p><p>Numbered research reports. Each addresses a specific empirical question. Each finding is traceable to a named analysis function and a documented evidence map. Statistics are stated with effect sizes, not just p-values. Null results are reported with the same prominence as positive findings.</p><p>Free subscribers receive the Cornerstone Research Reports &#8212; the foundational empirical work, free permanently &#8212; and the Weekly Positioning Brief, published every Monday at 06:00 UTC. No predictions. No signals. Positioning data, historical context, and rigorous framing.</p><p>The goal of this publication is transparency, not conversion. If the research holds, it speaks for itself. If it doesn&#8217;t, publishing the data honestly is more valuable than obscuring it.</p><p>The record started with RP-001. It continues from here.</p><div><hr></div><p><em>Nothing published here constitutes financial advice or a solicitation to trade. FX Engineer publishes positioning research for informational purposes only.</em></p><p><em>Research library and full publication archive: fxeresearch.substack.com</em></p>]]></content:encoded></item></channel></rss>