<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: Build Better Strategies! Part 3: The Development Process	</title>
	<atom:link href="https://financial-hacker.com/build-better-strategies-part-3-the-development-process/feed/" rel="self" type="application/rss+xml" />
	<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/</link>
	<description>A new view on algorithmic trading</description>
	<lastBuildDate>Thu, 05 Feb 2026 16:58:04 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>
		By: Jeremie		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-110690</link>

		<dc:creator><![CDATA[Jeremie]]></dc:creator>
		<pubDate>Mon, 11 Nov 2024 09:11:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-110690</guid>

					<description><![CDATA[Hi jcl,

Thank you very much for your feedback. After thorough investigations, I&#039;ve noticed that I&#039;m simply doing too much data snooping so even if each strategy is limited to 2-3 parameters, the whole set of strategies tested extend to thousands.
Moreover and that&#039;s the big point: I&#039;ve been using the train sets of my wfo in order to filter strategies. The problem is that those train sets ultimately includes the test sets because of the rolling process so that&#039;s just overfitting to test data, hence the better results.

So basically, this completely breaks the whole process, which virtually is wrong since step 3: choosing from wfo results must be done AFTER having a reliable step 3 with enough observations.]]></description>
			<content:encoded><![CDATA[<p>Hi jcl,</p>
<p>Thank you very much for your feedback. After thorough investigations, I&#8217;ve noticed that I&#8217;m simply doing too much data snooping so even if each strategy is limited to 2-3 parameters, the whole set of strategies tested extend to thousands.<br />
Moreover and that&#8217;s the big point: I&#8217;ve been using the train sets of my wfo in order to filter strategies. The problem is that those train sets ultimately includes the test sets because of the rolling process so that&#8217;s just overfitting to test data, hence the better results.</p>
<p>So basically, this completely breaks the whole process, which virtually is wrong since step 3: choosing from wfo results must be done AFTER having a reliable step 3 with enough observations.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jcl		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-108208</link>

		<dc:creator><![CDATA[jcl]]></dc:creator>
		<pubDate>Thu, 10 Oct 2024 14:47:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-108208</guid>

					<description><![CDATA[It&#039;s usually the other way around: test sets produce worse results that train sets. At least, I have not yet heard of an opposite result. Maybe you have discovered the one and only exception to the rule. Anyway, Zorro can eliminate any interference between WFA segments. You can find all details in the Zorro manual under &#039;Walk Forward Optimization&#039;.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s usually the other way around: test sets produce worse results that train sets. At least, I have not yet heard of an opposite result. Maybe you have discovered the one and only exception to the rule. Anyway, Zorro can eliminate any interference between WFA segments. You can find all details in the Zorro manual under &#8216;Walk Forward Optimization&#8217;.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jeremie		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-108149</link>

		<dc:creator><![CDATA[Jeremie]]></dc:creator>
		<pubDate>Wed, 09 Oct 2024 17:05:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-108149</guid>

					<description><![CDATA[Hi jcl,

Thanks for such clear answer, I understand better the logic now. Actually, my issues come from the fact that when I&#039;m developping the system, so basically data mining the &quot;core&quot; parameters, many situations lead to good test sets results with the optimized parameters from the WFA,  but completely bad results in the train sets. Is there a minimum correlation between the test/train sets results to be respected? 

Also I&#039;m still wondering if each WFA test segment should be evaluated separately in order to build an average result, or if all segments should be linked and evaluated altogether? Because if all the segments are linked, there are interferences between segments with open trades, and if segments are separated, it doesn&#039;t represent real life use.

Considering reality check, I indeed know it&#039;s the next step but for now, I already suspect some bias in my methodology for WFA.

Thanks]]></description>
			<content:encoded><![CDATA[<p>Hi jcl,</p>
<p>Thanks for such clear answer, I understand better the logic now. Actually, my issues come from the fact that when I&#8217;m developping the system, so basically data mining the &#8220;core&#8221; parameters, many situations lead to good test sets results with the optimized parameters from the WFA,  but completely bad results in the train sets. Is there a minimum correlation between the test/train sets results to be respected? </p>
<p>Also I&#8217;m still wondering if each WFA test segment should be evaluated separately in order to build an average result, or if all segments should be linked and evaluated altogether? Because if all the segments are linked, there are interferences between segments with open trades, and if segments are separated, it doesn&#8217;t represent real life use.</p>
<p>Considering reality check, I indeed know it&#8217;s the next step but for now, I already suspect some bias in my methodology for WFA.</p>
<p>Thanks</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jcl		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-108139</link>

		<dc:creator><![CDATA[jcl]]></dc:creator>
		<pubDate>Wed, 09 Oct 2024 13:44:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-108139</guid>

					<description><![CDATA[The data period is nowhere defined in the displayed code. It does not matter, since in real development you would anyway use WFA and always test out-of-sample. 

BUT this only applies to the optimized parameters. While developing the system, you will natually select the algorithms in a way that they produce a positive result. So your system is never really out of sample, only the parameters are. That&#039;s why you should always run a reality check when the development is finished. This is the topic of another article on this blog.]]></description>
			<content:encoded><![CDATA[<p>The data period is nowhere defined in the displayed code. It does not matter, since in real development you would anyway use WFA and always test out-of-sample. </p>
<p>BUT this only applies to the optimized parameters. While developing the system, you will natually select the algorithms in a way that they produce a positive result. So your system is never really out of sample, only the parameters are. That&#8217;s why you should always run a reality check when the development is finished. This is the topic of another article on this blog.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jeremie		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-108082</link>

		<dc:creator><![CDATA[Jeremie]]></dc:creator>
		<pubDate>Tue, 08 Oct 2024 14:13:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-108082</guid>

					<description><![CDATA[Hello,

Thanks for such comprehensive article! However there&#039;s still something not clear for me: Which data is used for steps 3 &#062; 5 vs step 6 ?? As far as I understood, the data refers to ... the same period for everything? For example, steps 3 &#062; 5 from 2010 to 2020 and then step 6 from 2010-2020. Doesn&#039;t it create a bias because the data until step 5 is now splitted but the core of the system has already been evaluated on it = in sample + out sample? Basically, the out-of-sample data has already been used in the process of validating the strategy during steps 3&#062; 5

Thanks!]]></description>
			<content:encoded><![CDATA[<p>Hello,</p>
<p>Thanks for such comprehensive article! However there&#8217;s still something not clear for me: Which data is used for steps 3 &gt; 5 vs step 6 ?? As far as I understood, the data refers to &#8230; the same period for everything? For example, steps 3 &gt; 5 from 2010 to 2020 and then step 6 from 2010-2020. Doesn&#8217;t it create a bias because the data until step 5 is now splitted but the core of the system has already been evaluated on it = in sample + out sample? Basically, the out-of-sample data has already been used in the process of validating the strategy during steps 3&gt; 5</p>
<p>Thanks!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Tom		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-105818</link>

		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 26 Aug 2024 04:35:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-105818</guid>

					<description><![CDATA[Thanks jcl.]]></description>
			<content:encoded><![CDATA[<p>Thanks jcl.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jcl		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-105773</link>

		<dc:creator><![CDATA[jcl]]></dc:creator>
		<pubDate>Sun, 25 Aug 2024 07:28:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-105773</guid>

					<description><![CDATA[Yes, the Phase variable changes all the time and rotates with the cycle frequency. And yes, we had a couple systems that used the spectrum function for determining when a dominanty cycle was building up.]]></description>
			<content:encoded><![CDATA[<p>Yes, the Phase variable changes all the time and rotates with the cycle frequency. And yes, we had a couple systems that used the spectrum function for determining when a dominanty cycle was building up.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Tom		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-105743</link>

		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Sat, 24 Aug 2024 19:15:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-105743</guid>

					<description><![CDATA[Thanks.  I got it.   Typically, the phase or phase shift of a standard sinusoid function is a fixed value.  Here, Zorro uses it in a slightly different sense, i.e., it changes with time.  This seems to indicate that the Phase variable uses by Zorro incorporates the frequency component in its calculations.  

I curious if you have tried to use the Spectrum() function to find the dominant period by examining peak amplitudes of the spectral components?    Thanks.]]></description>
			<content:encoded><![CDATA[<p>Thanks.  I got it.   Typically, the phase or phase shift of a standard sinusoid function is a fixed value.  Here, Zorro uses it in a slightly different sense, i.e., it changes with time.  This seems to indicate that the Phase variable uses by Zorro incorporates the frequency component in its calculations.  </p>
<p>I curious if you have tried to use the Spectrum() function to find the dominant period by examining peak amplitudes of the spectral components?    Thanks.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jcl		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-105334</link>

		<dc:creator><![CDATA[jcl]]></dc:creator>
		<pubDate>Wed, 21 Aug 2024 08:23:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-105334</guid>

					<description><![CDATA[The Phase variable, as the name says, is the current phase angle. It tells whether the dominant cycle is currently going up or down. A sin() has no &#039;frequency term&#039;. It has an angle term. https://en.wikipedia.org/wiki/Sine_and_cosine]]></description>
			<content:encoded><![CDATA[<p>The Phase variable, as the name says, is the current phase angle. It tells whether the dominant cycle is currently going up or down. A sin() has no &#8216;frequency term&#8217;. It has an angle term. <a href="https://en.wikipedia.org/wiki/Sine_and_cosine" rel="nofollow ugc">https://en.wikipedia.org/wiki/Sine_and_cosine</a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Tom		</title>
		<link>https://financial-hacker.com/build-better-strategies-part-3-the-development-process/#comment-105327</link>

		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Wed, 21 Aug 2024 00:26:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.financial-hacker.com/?p=1191#comment-105327</guid>

					<description><![CDATA[Sorry, I still don&#039;t see where the angular frequency term for the sin() goes.  Could you please explain it in more in detail?  My understanding is that the code:

vars Signal = series(sin(Phase)); 

has the correct syntax based on Zorro&#039;s Help page.  But then this imply that the &#039;Phase&#039; argument above also contains information of the angular frequency.  Thank you.]]></description>
			<content:encoded><![CDATA[<p>Sorry, I still don&#8217;t see where the angular frequency term for the sin() goes.  Could you please explain it in more in detail?  My understanding is that the code:</p>
<p>vars Signal = series(sin(Phase)); </p>
<p>has the correct syntax based on Zorro&#8217;s Help page.  But then this imply that the &#8216;Phase&#8217; argument above also contains information of the angular frequency.  Thank you.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
