<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Adaptive Trading Systems Blog</title>
	<atom:link href="http://www.adaptivetradingsystems.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.adaptivetradingsystems.com/blog</link>
	<description>Trading Systems</description>
	<lastBuildDate>Wed, 01 Feb 2012 05:25:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Modeling with Profit 8 and the SIP Indicators Part 2</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2426</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2426#comments</comments>
		<pubDate>Wed, 01 Feb 2012 05:04:24 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>
		<category><![CDATA[neural network]]></category>
		<category><![CDATA[profit 8]]></category>
		<category><![CDATA[sip indicators]]></category>
		<category><![CDATA[sp futures]]></category>
		<category><![CDATA[trading system]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2426</guid>
		<description><![CDATA[This article describes the construction of a neural network system for trading the SP futures contract. The neural network modeling software used to construct the system is BioComp Profit 8. Profit 8 is based on BioComp Systems&#8217; commercial Intellect 3.0 architecture. To be accurate, Intellect builds mesh models rather than neural network models. Mesh models [...]]]></description>
			<content:encoded><![CDATA[<p>This article describes the construction of a neural network system for trading the SP futures contract. The neural network modeling software used to construct the system is BioComp Profit 8. Profit 8 is based on BioComp Systems&#8217; commercial Intellect 3.0 architecture. To be accurate, Intellect builds mesh models rather than neural network models. Mesh models are proprietary models that outperform both neural networks and state vector machines. The Profit 8 system described in Part 1 of Modeling with Profit 8 and the SIP Indicators stopped working due to a bug fix related to the R Squared Performance Metric that was used by the system.</p>
<p>The inputs to our models are the SIP indicators. The SIP indicators are published by Adaptive Trading Systems on a daily basis and are used for modeling the 3 to 15 trading day price trends of the SP futures contract. The SIP indicators include Buy Pressure, Sell Pressure, Net Pressure, High Buy Pressure, High Sell Pressure, Advancing Pressure and Declining Pressure. You can download the indicators by installing the ATS Mercury application that is available toward the bottom of the <a title="Trading Signals" href="http://www.adaptivetradingsystems.com/trading-signals.html">Trading Signals</a> page. The indicator values are delayed by 1 trading day for non-subscribers.</p>
<p><strong>Method:</strong></p>
<p><strong>Step 1. Adding the SIP Indicators to the Securities List</strong></p>
<p>This step assumes that you have downloaded the SIP indicators to your computer. For further information on downloading the SIP indicators go to the <a title="Trading Signals" href="http://www.adaptivetradingsystems.com/trading_signals.html">Trading Signals</a> page at AdaptiveTradingSystems.com.</p>
<p>Start Profit 8 and click on the Add Text File toolbar button to open the file selection dialog. Browse to the location of the SIP indicator text files and open the first file. The File Definition Dialog will then appear.</p>
<div id="attachment_2432" class="wp-caption alignnone" style="width: 506px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2432" rel="attachment wp-att-2432"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-1.-Adding-the-SIP-Indicators.gif" alt="Step-1. Adding the SIP Indicators" title="Step-1. Adding the SIP Indicators" width="496" height="355" class="size-full wp-image-2432" /></a><p class="wp-caption-text">Step-1. Adding the SIP Indicators</p></div>
<p>Click on the SIP indicator column name (in the example it is SIPAP) and click on the Close radio button in the Settings section. Click on Ok to finish adding the SIP indicator to the Securities list in Profit 8. Repeat this step for each of the SIP indicators.</p>
<p><strong>Step 2. Adding the Data Series for Modeling</strong></p>
<p>On the Data tab in Profit 8, double click on the security name of the data series that you are modeling. This example models the continuously linked non-adjusted SP futures contract data from <a title="Pinnacle Data Corp." href="http://www.pinnacledata.com/" target="_blank">Pinnacle Data Corp.</a> Scroll down the list of securities until you see the the SIP indicators. Double click on each SIP indicator until they have all been added to the list of &#8216;Data to Use&#8217;.</p>
<p><div id="attachment_2437" class="wp-caption alignnone" style="width: 513px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2437" rel="attachment wp-att-2437"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-2.-Adding-the-Data-Series-for-Modeling.gif" alt="Step 2. Adding the Data Series for Modeling" title="Step 2. Adding the Data Series for Modeling" width="503" height="464" class="size-full wp-image-2437" /></a><p class="wp-caption-text">Step 2. Adding the Data Series for Modeling</p></div><br />
<br />
<strong>Step 3. Setting the Data Import Dates</strong></p>
<p>The most recent 2.5 years of data will held back for validating the models. This is referred to as the out-of-sample (OOS) period. To ensure that the last 2.5 years of data is not used, the end date for importing data is set to 07/15/2009.</p>
<div id="attachment_2440" class="wp-caption alignnone" style="width: 348px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2440" rel="attachment wp-att-2440"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-3.-Setting-the-Data-Import-Dates.gif" alt="Step 3. Setting the Data Import Dates" title="Step 3. Setting the Data Import Dates" width="338" height="104" class="size-full wp-image-2440" /></a><p class="wp-caption-text">Step 3. Setting the Data Import Dates</p></div>
<p>The modeling end date of 07/15/2009 was chosen so that the modeling period overlaps the start of the &#8216;GFC period&#8217; whilst providing for a reasonable amount of OOS data.</p>
<p><strong>Step 4. Importing the Data</strong></p>
<p>Click on the ‘Import Data’ toolbar button to import data from 07/01/1997 to 07/15/2009.</p>
<p><div id="attachment_2441" class="wp-caption alignnone" style="width: 478px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2441" rel="attachment wp-att-2441"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-4.-Importing-the-Data.gif" alt="Step 4. Importing the Data" title="Step 4. Importing the Data" width="468" height="313" class="size-full wp-image-2441" /></a><p class="wp-caption-text">Step 4. Importing the Data</p></div><br />
<br />
<strong>Step 5. Equity Engine Parameters</strong></p>
<p>No transaction costs are applied in this example. Change the Slippage and Commission values  to zero on the Equity Calculations tab.</p>
<p><div id="attachment_2446" class="wp-caption alignnone" style="width: 302px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2446" rel="attachment wp-att-2446"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-5.-Equity-Engine-Parameters.gif" alt="Step 5. Equity Engine Parameters" title="Step 5. Equity Engine Parameters" width="292" height="123" class="size-full wp-image-2446" /></a><p class="wp-caption-text">Step 5. Equity Engine Parameters</p></div><br />
<br />
<strong>Step 6. Setting the Trading Delay</strong></p>
<p>Change the ‘Project the signal by’ to 1 to apply a trading delay of 1 bar. Signals generated on any given day are executed on the close of the next trading day when using a trading delay of 1 bar.</p>
<p><div id="attachment_2447" class="wp-caption alignnone" style="width: 313px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2447" rel="attachment wp-att-2447"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-6.-Setting-the-Trading-Delay.gif" alt="Step 6. Setting the Trading Delay" title="Step 6. Setting the Trading Delay" width="303" height="195" class="size-full wp-image-2447" /></a><p class="wp-caption-text">Step 6. Setting the Trading Delay</p></div><br />
<br />
<strong>Step 7. Building the Predicted Series</strong></p>
<p>The available inputs and predicted series used to build mesh models are defined on the Indicators tab in Profit 8. In this case, there is no need to modify the dates that optimizations are applied to because no optimizations will be run. Go to the Indicators tab and delete series SP.NON_VOLUME from the list of indicators. Apply the Ln() transform to series SP.NON_CLOSE, the transformed series will then appear at the bottom of the list of indicators.</p>
<div id="attachment_2448" class="wp-caption alignnone" style="width: 510px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2448" rel="attachment wp-att-2448"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-7.-Building-the-Predicted-Series.gif" alt="Step 7. Building the Predicted Series" title="Step 7. Building the Predicted Series" width="500" height="336" class="size-full wp-image-2448" /></a><p class="wp-caption-text">Step 7. Building the Predicted Series</p></div>
<p>Select the Ln(SP.NON_Close) series at the bottom of the list and apply the 1 period Chg transform. Making sure the same series is still selected, apply the 2 period Shift transform. This completes the construction of the target / predicted series. The target series represents an ideal trading signal. Profit 8 will attempt to predict this series using the SIP indicators as the model inputs.</p>
<p><strong>Step 8. Nominating the Predicted Series</strong></p>
<p>Select the Model Building tab and then select the newly constructed target series in the Indicators list. Click on the drop down menu above the Indicators list and select ‘Predicted’.</p>
<p><div id="attachment_2453" class="wp-caption alignnone" style="width: 560px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2453" rel="attachment wp-att-2453"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-8.-Selecting-the-Predicted-Series.gif" alt="Step 8. Selecting the Predicted Series" title="Step 8. Selecting the Predicted Series" width="550" height="337" class="size-full wp-image-2453" /></a><p class="wp-caption-text">Step 8. Selecting the Predicted Series</p></div><br />
<br />
<strong>Step 9. Data Handling Settings</strong></p>
<p>Change the modeling start date to 7/15/1997 and the modeling end date to 7/15/2009. Set the Modeling, Optimization and Selection percentages to 60, 20 and 20. Change the modeling parameters so that Random data points are used.</p>
<p><div id="attachment_2454" class="wp-caption alignnone" style="width: 408px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2454" rel="attachment wp-att-2454"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-9.-Data-Handling-Settings.gif" alt="Step 9. Data Handling Settings" title="Step 9. Data Handling Settings" width="398" height="209" class="size-full wp-image-2454" /></a><p class="wp-caption-text">Step 9. Data Handling Settings</p></div><br />
<br />
<strong>Step 10. Model Settings</strong></p>
<p>The default Model Settings are used as pictured below.</p>
<p><div id="attachment_2457" class="wp-caption alignnone" style="width: 417px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2457" rel="attachment wp-att-2457"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-10.-Model-Settings.gif" alt="Step 10. Model Settings" title="Step 10. Model Settings" width="407" height="336" class="size-full wp-image-2457" /></a><p class="wp-caption-text">Step 10. Model Settings</p></div><br />
<br />
<strong>Step 11. Performance Settings</strong></p>
<p>The default Performance Settings are used as pictured below. Note that the Optimization Metric is set to Relative Accuracy. Use of the Relative Accuracy tends to result in systems with lower profit margins over the modeling period. However, use of the Relative Accuracy metric has a strong tendency to produce systems that are more robust post the modeling period. I spent a considerable amount of time comparing Profit 8 to other similar neural network and state vector machine software solutions and Profit 8 using the Relative Accuracy optimization metric was the clear winner.</p>
<p><div id="attachment_2460" class="wp-caption alignnone" style="width: 417px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2460" rel="attachment wp-att-2460"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-11.-Performance-Settings.gif" alt="Step 11. Performance Settings" title="Step 11. Performance Settings" width="407" height="299" class="size-full wp-image-2460" /></a><p class="wp-caption-text">Step 11. Performance Settings</p></div><br />
<br />
<strong>Step 12. Start Modeling</strong></p>
<p>Click on the Start Modeling button to begin the modeling process.</p>
<div id="attachment_2462" class="wp-caption alignnone" style="width: 555px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2462" rel="attachment wp-att-2462"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-12.-Start-Modeling.gif" alt="Step 12. Start Modeling" title="Step 12. Start Modeling" width="545" height="335" class="size-full wp-image-2462" /></a><p class="wp-caption-text">Step 12. Start Modeling</p></div>
<p>Check the Profit 8 status bar at the bottom left of the application window to see when model construction has completed.</p>
<p><strong>Step 13. Change Import End Date</strong></p>
<p>To view the performance of the system over the out-of-sample period the data importation dates need to be modified. Change the end date to the last date that you have SP data for.</p>
<div id="attachment_2463" class="wp-caption alignnone" style="width: 329px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2463" rel="attachment wp-att-2463"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-13.-Change-Import-End-Date.gif" alt="Step 13. Change Import End Date" title="Step 13. Change Import End Date" width="319" height="108" class="size-full wp-image-2463" /></a><p class="wp-caption-text">Step 13. Change Import End Date</p></div>
<p>After updating the end date, click on the Import Data toolbar button to import the data. The system will process the new data automatically.</p>
<p><strong>Step 14. View the Results</strong></p>
<p>Click on the Results tab to see the in-sample and out-of-sample performance. Finally, save the system if you haven’t done so already.</p>
<div id="attachment_2469" class="wp-caption alignnone" style="width: 595px"><a href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2469" rel="attachment wp-att-2469"><img src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2012/01/Step-14.-View-the-Results1.gif" alt="Step 14. View the Results" title="Step 14. View the Results" width="585" height="458" class="size-full wp-image-2469" /></a><p class="wp-caption-text">Step 14. View the Results</p></div>
<p>As a market timing model developer I like to see the shape of the equity curve and the percent of perfect trading statistic. The majority of people reading this article are probably wondering how many points the system hypothetically made over the OOS period. A total of 71 positions were taken over the OOS period. The first trade post the modeling end date was opened on 7/17/2009 and the last trade in the OOS period was closed on 1/17/2012. The net points made was 667.8. This equates to $33,390 if trading the ES contract and $166,950 if trading the SP contract. Note that these figures are not net of trading costs. To calculate the total hypothetical trading cost multiply your estimate of the cost per completed trade by 71 or the cost per side by 142.</p>
<p>What I like about this system is:<br />
- The SIP indicators have been published daily with no in hind-sight adjustments for years.<br />
- Absolutely no optimization of inputs is done.<br />
- Absolutely no model &#8216;pruning&#8217; post construction is required or done.<br />
- The OOS period spans one of the most difficult trading periods to date.</p>
<p>What I don&#8217;t like about the system is:<br />
- The percent of perfect over the in-sample and out-of-sample periods is a little on the low side.</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2426</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Metrics Part VI &#8211; Sharpe Ratio</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2375</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2375#comments</comments>
		<pubDate>Fri, 11 Feb 2011 02:07:00 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>
		<category><![CDATA[performance metrics]]></category>
		<category><![CDATA[sharpe ratio]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2375</guid>
		<description><![CDATA[Part VI of the series of articles on trading system performance metrics describes the calculation of the Sharpe Ratio. The Sharpe Ratio is calculated by subtracting the risk free rate from the compound annual growth rate and dividing the result by one standard deviation of the bar by bar returns. The risk free rate is [...]]]></description>
			<content:encoded><![CDATA[<p>Part VI of the series of articles on trading system performance metrics describes the calculation of the Sharpe Ratio. </p>
<p><span style="text-decoration: underline;">The Sharpe Ratio</span> is calculated by subtracting the risk free rate from the compound annual growth rate and dividing the result by one standard deviation of the bar by bar returns. The risk free rate is a user defined equity engine setting. The one period standard deviation of log returns is initially calculated, annualized and converted to a nominal return to form the denominator. There is no need to take the risk free rate into account when calculating the denominator because it is constant in this implementation.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;NominalStdDevReturns = e^(StdDevLogReturns  x  BarsPerYear ^ 0.5) &#8211; 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;If (StdDevReturns != 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SharpeRatio = (CAGR &#8211; RiskFreeRate) / NominalStdDevReturns<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SharpeRatio = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>Example:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Given,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RiskFreeRate = 0.05<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StdDevLogReturns = 0.01092566<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CAGR = 0.27026727<br />
&nbsp;&nbsp;&nbsp;&nbsp;Compute the Sharpe Ratio,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NominalStdDevReturns = e^( 0.01092566 x 252^0.5) – 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NominalStdDevReturns = 0.18938870<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SharpeRatio = (0.27026727 – 0.05) / 0.18938870<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SharpeRatio = 1.16304332</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2375</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Metrics Part V &#8211; Compound Annual Growth Rate</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2307</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2307#comments</comments>
		<pubDate>Fri, 07 Jan 2011 00:12:55 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>
		<category><![CDATA[cagr]]></category>
		<category><![CDATA[compound annual growth rate]]></category>
		<category><![CDATA[performance metrics]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2307</guid>
		<description><![CDATA[Part V of the series of articles on trading system performance metrics describes the Compound Annual Growth Rate (CAGR) metric. Compound Annual Growth Rate is calculated by accumulating the signal log returns over the lookback period, transforming the result to a nominal return and then calculating the corresponding annualized rate of return. Formula / Pseudo [...]]]></description>
			<content:encoded><![CDATA[<p>Part V of the series of articles on trading system performance metrics describes the Compound Annual Growth Rate (CAGR) metric. </p>
<p><span style="text-decoration: underline;">Compound Annual Growth Rate</span> is calculated by accumulating the signal log returns over the lookback period, transforming the result to a nominal return and then calculating the corresponding annualized rate of return.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;For (n = EndBar – LookbackPeriod + 1 To EndBar)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (Signal(I&#038; &#8211; 1)) > 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (Signal(I&#038; &#8211; 1) < 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign&#038; = -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign&#038; = 0</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SumSignalLogReturns = SumSignalLogReturns + SignalSign * Log(Price(n) / Price(n - 1))<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;NbrYears = LookbackPeriod / BarsPerYear<br />
&nbsp;&nbsp;&nbsp;&nbsp;NominalReturn = e^SumSignalLogReturns - 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAGR = (NominalReturn + 1) ^ (1 / NbrYears) - 1</p>
<p>Example:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;NominalReturn = 2.75 (275%)<br />
&nbsp;&nbsp;&nbsp;&nbsp;NbrYears = 5.88<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAGR = (2.75 + 1) ^ (1 / 5.88) – 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAGR = 0.25205776</p>
<p>A CAGR value of 0.25205776 is equivalent to a CAGR of 25.21% (rounded to 2 decimal places).</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2307</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Metrics Part IV &#8211; Proportion of Perfect Trading</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2268</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2268#comments</comments>
		<pubDate>Thu, 23 Dec 2010 09:48:31 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>
		<category><![CDATA[perfect trading]]></category>
		<category><![CDATA[performance metric]]></category>
		<category><![CDATA[trading system]]></category>
		<category><![CDATA[trading systems]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2268</guid>
		<description><![CDATA[Part IV of the series of articles on trading system performance metrics presents the Proportion of Perfect Trading while in Position (PPIP) and the Proportion of Perfect Log Returns while in Position (PPLIP) metrics. Proportion of perfect trading is a measure of the efficiency of a trading system signal. Perfect trading occurs when the signal [...]]]></description>
			<content:encoded><![CDATA[<p>Part IV of the series of articles on trading system performance metrics presents the Proportion of Perfect Trading while in Position (PPIP) and the Proportion of Perfect Log Returns while in Position (PPLIP) metrics. Proportion of perfect trading is a measure of the efficiency of a trading system signal. Perfect trading occurs when the signal always predicts the direction from one trading day to the next correctly. PPLIP is preferred because large differences in price levels over the performance lookback period will not cause unwanted bias toward the performance when price levels are relatively high.</p>
<p><span style="text-decoration: underline;">Proportion of Perfect Trading while in Position</span> is calculated by subtracting the points lost over the performance lookback period from the points gained and then dividing the result by the sum of the points lost and gained. When the signal value is zero no points are lost or gained from the current bar to the next bar.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;For (n = EndBar – LookbackPeriod + 1 To EndBar)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (Signal(n &#8211; 1) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (Signal(n &#8211; 1) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 0</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalReturn = SignalSign x (Price(n) &#8211; Price(n-1))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (SignalReturn > 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SumPointsGained = SumPointsGained + SignalReturn<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (SignalReturn < 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SumPointsLost = SumPointsLost + Abs(SignalReturn)<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;If (SumPointsGained + SumPointsLost &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPIP = (SumPointsGained - SumPointsLost) / (SumPointsGained + SumPointsLost)<br />
&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPIP = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>Example:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;SumPointsGained = 1043.1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;SumPointsLost = 738.4</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;PPIP = (1043.1 – 738.4) / (1043.1 + 738.4)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;PPIP = 0.17103564</p>
<p>A PPIP value of 0.17103564 is equivalent to 17.10% of perfect trading (rounded to 2 decimal places).</p>
<p><span style="text-decoration: underline;">Proportion of Perfect Log Returns while in Position</span> is calculated by subtracting the sum of the natural log returns lost over the performance lookback period from the sum of the log returns gained and then dividing the result by the sum of the log returns lost and gained. When the signal value is zero no points are lost or gained from the current bar to the next bar.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;For (n = EndBar – LookbackPeriod + 1 To EndBar)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (Signal(n &#8211; 1) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (Signal(n &#8211; 1) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 0</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalLogReturn = SignalSign x Log(Price(n) / Price(n-1))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (SignalLogReturn > 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SumLogReturnsGained = SumLogReturnsGained + SignalReturn<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (SignalReturn < 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SumLogReturnsLost = SumLogReturnsLost + Abs(SignalReturn)<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;If (SumLogReturnsGained + SumLogReturnsLost &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPLIP = (SumLogReturnsGained - SumLogReturnsLost) / (SumLogReturnsGained + SumLogReturnsLost)<br />
&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPLIP = 0</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2268</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Metrics Part III &#8211; Net Direction Correct Ratio</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2211</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2211#comments</comments>
		<pubDate>Sat, 18 Dec 2010 15:14:28 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>
		<category><![CDATA[net direction correct]]></category>
		<category><![CDATA[percent direction correct]]></category>
		<category><![CDATA[performance metric]]></category>
		<category><![CDATA[trading system]]></category>
		<category><![CDATA[trading systems]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2211</guid>
		<description><![CDATA[Part III of the series of articles on trading system performance metrics presents the net direction correct and weighted net direction correct ratios. These are simple metrics that most developers of short-term trading systems will be familiar with. Although, there is a feature that, for trading systems with average trade periods greater than a few [...]]]></description>
			<content:encoded><![CDATA[<p>Part III of the series of articles on trading system performance metrics presents the net direction correct and weighted net direction correct ratios. These are simple metrics that most developers of short-term trading systems will be familiar with. Although, there is a feature that, for trading systems with average trade periods greater than a few trading days, improves the effectiveness of the these performance metrics.</p>
<p><span style="text-decoration: underline;">Net Direction Correct</span> ratio computes the equivalent of the percent direction correct scaled so that the minimum value is -1 and the maximum is +1. If the signal value at bar(n-1) is greater than zero then the change in price or smoothed price series from bar(n-1) to bar(n) would have to be greater than zero for the signal to be considered correct and vica versa. If the signal value at bar(n-1) is zero then that signal is not included in the tally of correct/incorrect signal values.</p>
<p>The signal can be applied to a smoothed price series by setting the Trend Period equity engine parameter to a value greater than 1. A custom designed digital FIR filter is used to do the smoothing. The filter has the same lag as a simple moving average with smoother output. The lag is taken into account when applying the signal series.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; For (n = EndBar – LookbackPeriod + 1 To EndBar)<br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FilterDelta = CMASeries(n) &#8211; CMASeries(n &#8211; 1)</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If (Signal(n &#8211; CMALag &#8211; 1) &gt; 0)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SignalSign = 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ElseIf (Signal(n &#8211; CMALag &#8211; 1) &lt; 0)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SignalSign = -1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SignalSign = 0</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SignalReturn = SignalSign * FilterDelta</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; If (SignalReturn &gt; 0)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DirCorrectCount = DirCorrectCount + 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ElseIf (SignalReturn &lt; 0)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DirIncorrectCount = DirIncorrectCount + 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; }</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; If (DirCorrectCount + DirIncorrectCount &gt; 0)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NDC = (DirCorrectCount &#8211; DirIncorrectCount) / (DirCorrectCount + DirIncorrectCount)<br />
&nbsp; &nbsp; &nbsp; &nbsp; Else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NDC = 0</p>
<p>Example:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; DirCorrectCount = 56<br />
&nbsp; &nbsp; &nbsp; &nbsp; DirIncorrectCount = 42<br />
&nbsp; &nbsp; &nbsp; &nbsp; NDC = (56 – 42) / (56 + 42)<br />
&nbsp; &nbsp; &nbsp; &nbsp; NDC = 0.14285714</p>
<p>A NDC value of 0.14285714 is equivalent to a percent direction correct of 57.14% (rounded to 2 decimal places).</p>
<p><span style="text-decoration: underline;">Weighted Net Direction Correct</span> ratio is similar to the net direction correct ratio. Each correct / incorrect signal is assigned a weighting that corresponds to the bar number within the performance lookback period. At bar(n-lookback+1) the weighting will be 1 and at bar(n) the weighting will be equal to the lookback period.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; If (SumDirCorrectWeights + SumDirIncorrectWeights &gt; 0)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WNDC = (SumDirCorrectWeights &#8211; SumDirIncorrectWeights) / (SumDirCorrectWeights + SumDirIncorrectWeights)<br />
&nbsp; &nbsp; &nbsp; &nbsp; Else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WNDC = 0</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2211</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Metrics Part II &#8211; Basic Variables and Functions</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2209</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2209#comments</comments>
		<pubDate>Thu, 16 Dec 2010 23:43:12 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>
		<category><![CDATA[performance metrics]]></category>
		<category><![CDATA[reporting metrics]]></category>
		<category><![CDATA[trading system]]></category>
		<category><![CDATA[trading systems]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2209</guid>
		<description><![CDATA[Part II introduces some basic variables and functions that will be referred to in the rest of the series. When calculating performance metrics versus reporting metrics, I do not take trading costs into account. The primary objective is to build trading systems that predict market trends on various time scales. It is more practical to [...]]]></description>
			<content:encoded><![CDATA[<p>Part II introduces some basic variables and functions that will be referred to in the rest of the series. When calculating performance metrics versus reporting metrics, I do not take trading costs into account. The primary objective is to build trading systems that predict market trends on various time scales. It is more practical to introduce trading costs when assessing the performance of, what I call, the master trading system. Master trading systems or meta-trading systems are built upon sets of market timing models implemented as individual trading systems.</p>
<p><strong>NbrBars</strong> is the number of trading bars over the performance lookback period. The Lookback Period is a user defined equity engine parameter.</p>
<p><strong>BarsPerYear</strong> is the number of trading bars per year. # Bars per Year Period is a user defined equity engine parameter.</p>
<p><strong>NbrYears</strong> is the fractional number of years spanned by the performance lookback period.</p>
<p>Formula:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;NbrYears = NbrBars / BarsPerYear</p>
<p><strong>NominalReturn</strong> is the arithmetic or simple return. For example, a nominal return of 20% on $50,000 is $10,000. To transform a natural log return to a nominal return the mathematical constant e (2.718281828…) is raised to the power of the log return and 1 is subtracted from the result.</p>
<p>Formula:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;NominalReturn = e^LogReturn – 1</p>
<p><strong>SignalSign</strong> is determined by the value of the signal at a given trading bar. If the signal value is positive then SignalSign is set to +1, if the signal value is negative then SignalSign is set to -1 and if the signal value is equal to zero then SignalSign is set to zero. Dakota automatically shifts the signal series in relation to the price series so that the signal value at bar(n-1) applies to the change in price from  bar(n-1) to bar(n). Therefore, there is no need to account for the Trading Delay.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;For (n = EndBar – LookbackPeriod + 1 To EndBar)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (Signal(n &#8211; 1) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (Signal(n &#8211; 1) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p><strong>SignalLogReturn</strong> is determined by applying the signal to the price series. The log return gained/lost from bar to bar is calculated by multiplying the SignalSign at bar(n-1) by the log return from bar(n-1) to bar(n).</p>
<p>Formula:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;SignalLogReturn = SignalSign(n-1) x log(Price(n) / Price(n-1))</p>
<p><strong>SumSignalLogReturns</strong> is the cumulated bar to bar natural logarithmic returns generated by applying the signal to the price series.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;For (n = EndBar – LookbackPeriod + 1 To EndBar)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (Signal(n &#8211; 1) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (Signal(n &#8211; 1) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 0</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalLogReturn = SignalSign(n-1) x log(Price(n) / Price(n-1))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SumSignalLogReturns = SumSignalLogReturns + SignalLogReturn<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p><strong>SignalReturn</strong> is determined by applying the signal to the price series. The number of points gained/lost from bar to bar is calculated by multiplying the SignalSign at bar(n-1) by the change in price from bar(n-1) to bar(n).</p>
<p>Formula:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;SignalReturn = SignalSign(n-1) x (Price(n) &#8211; Price(n-1))</p>
<p><strong>SumSignalReturns</strong> is the cumulated bar to bar returns in points generated by applying the signal to the price series.</p>
<p>Formula / Pseudo Code:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;For (n = EndBar – LookbackPeriod + 1 To EndBar)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (Signal(n &#8211; 1) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ElseIf (Signal(n &#8211; 1) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = -1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalSign = 0</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SignalReturn = SignalSign(n-1) x (Price(n) &#8211; Price(n-1))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SumSignalReturns = SumSignalReturns + SignalReturn<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>That&#8217;s it for the basic variables and operations. Note that it is likely that this series of articles will be expanded or edited to correct errors or provide more information.  i.e. this is a dynamic article.</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2209</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Metrics Part I &#8211; Introduction</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2201</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2201#comments</comments>
		<pubDate>Thu, 16 Dec 2010 08:43:10 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>
		<category><![CDATA[cagr]]></category>
		<category><![CDATA[compound annual growth rate]]></category>
		<category><![CDATA[performance metric]]></category>
		<category><![CDATA[sharpe ratio]]></category>
		<category><![CDATA[trading statistics]]></category>
		<category><![CDATA[trading system]]></category>
		<category><![CDATA[trading systems]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2201</guid>
		<description><![CDATA[This is the first in a series of articles that present various trading system performance metrics. Performance metrics measure how well a given trading signal performed over a walk-forward performance lookback period. Performance is measured over a walk-forward &#8216;sliding window&#8217; to enable the calculation of adapted indicator parameter values that will be used moving forward. [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first in a series of articles that present various trading system performance metrics. Performance metrics measure how well a given trading signal performed over a walk-forward performance lookback period. Performance is measured over a walk-forward &#8216;sliding window&#8217; to enable the calculation of adapted indicator parameter values that will be used moving forward. Generally, this is done multiple times per trading bar using different combinations of indicator parameter values. This set of articles are written within the context of the BioComp Dakota application. However, the descriptions of the metrics are potentially useful no matter which application you use to carry out walk-forward adaptation of trading system / indicator parameter values.</p>
<p>One of the primary functions of an equity engine is to provide the swarm adaptation engine with the performance of each trade bot over the performance lookback period. Dakota calls function CalculateAdaptationPerformance() once for each trade bot when processing a trading bar. The array of historical trading signals for a particular bot and the price history for the traded market are passed into the function.</p>
<p>Trade bot performance can be measured in a variety of ways. A programmer can develop an equity engine to measure performance using any algorithm that he chooses. We provide 12 types of equity engines that each measure trade bot performance in their own unique way. An example is the ATS Sharpe Ratio equity engine. As the name suggests, the performance metric is the Sharpe Ratio. In this case, function CalculateAdaptationPerformance() is computing and returning the annualized Sharpe Ratio for a given trade bot over the performance lookback period.</p>
<p>It is worth noting that the calculation of the trade bot performance by function CalculateAdaptationPerformance() is distinct from the calculation of any corresponding measure of performance that appears in the body of the Dakota Trades report. The statistics appearing in the body of the Trades report are calculated using all available system signal and price data histories and they optionally include trading costs. The system signal is derived from the set of trade bot signals. For example, one method is to average all trade bot signals to determine the system signal.</p>
<p>The minimum, maximum and average trade bot performance over the lookback period is included in the header section of the Trades report. This information is particularly useful if you are not familiar with the performance data produced by a particular equity engine. The image below is of the Trade report header.</p>
<div id="attachment_2202" class="wp-caption alignnone" style="width: 477px"><a rel="attachment wp-att-2202" href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2202"><img class="size-full wp-image-2202" title="Trades Report Header" src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2010/12/trades_report_header.gif" alt="Trades Report Header" width="467" height="115" /></a><p class="wp-caption-text">Trades Report Header</p></div>
<p>In the above report, we can see that the average trade bot performance over the performance lookback period of 500 trading bars was 0.188. An average bot performance of 0.188 is equivalent to a CAGR of 18.8%. Future articles in this series will describe the performance metrics used by AdaptiveTradingSystems.com.</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2201</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Futures Trading Systems Reporting</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2192</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2192#comments</comments>
		<pubDate>Wed, 01 Dec 2010 23:55:21 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Research and Development]]></category>
		<category><![CDATA[trading system]]></category>
		<category><![CDATA[trading systems]]></category>
		<category><![CDATA[trading systems reporting]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2192</guid>
		<description><![CDATA[The trade returns are calculated against the trading capital when running the Futures Trading simulation. The trading capital is not cumulative, it remains fixed at all times. As a result, we can utilize trade percent returns when calculating the trade related statistics. By contrast, when running the &#8216;Signal Performance&#8217; simulation, trading capital doesn&#8217;t come into [...]]]></description>
			<content:encoded><![CDATA[<p>The trade returns are calculated against the trading capital when running the Futures Trading simulation. The trading capital is not cumulative, it remains fixed at all times. As a result, we can utilize trade percent returns when calculating the trade related statistics. By contrast, when running the &#8216;Signal Performance&#8217; simulation, trading capital doesn&#8217;t come into it and the trade returns and performance curves are stored as log returns that are then used when calculating trade statistics under the hood.</p>
<p>The up and coming release of the &#8216;new trading systems reports&#8217; will not incorporate any money management techniques. Future releases might include some basic money management techniques if there is sufficient demand. Personally, I will mostly be interested in &#8216;pure&#8217; signal performance. At some point there will be an option to adjust exposure based on the signal value. This approach would rely on the signal value corresponding to a measure of confidence. The introduction of this option will be the result of the (good) influence of <a title="MarketSci Blog" href="http://marketsci.wordpress.com/" target="_blank">Michael Stokes</a>.</p>
<p>A screen image of an example futures trading system report follows.</p>
<div id="attachment_2195" class="wp-caption alignnone" style="width: 600px"><a rel="attachment wp-att-2195" href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2195"><img class="size-medium wp-image-2195" title="New Futures Trading Systems Report Example" src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2010/12/new_futures_trading_systems_report-590x370.gif" alt="New Futures Trading Systems Report Example" width="590" height="370" /></a><p class="wp-caption-text">New Futures Trading Systems Report Example</p></div>
<p>The trading stats are now arranged into two columns for all simulation types. The reason the list of trades does not appear in this image is that they are written to the report when processing the last bar. When running a Futures Trading simulation, the equity curve that is plotted in Dakota is the cumulative net profit (not shown for this example).</p>
<p>Where appropriate, I have added descriptions of the options for the equity engine settings.</p>
<div id="attachment_2198" class="wp-caption alignnone" style="width: 414px"><a rel="attachment wp-att-2198" href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2198"><img class="size-full wp-image-2198" title="Trading System Equity Engine Parameters" src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2010/12/trading_system_equity_engine_parameters.gif" alt="Trading System Equity Engine Parameters" width="404" height="393" /></a><p class="wp-caption-text">Trading System Equity Engine Parameters</p></div>
<p>You may have noticed the # Bars per Year parameter. If running Dakota R/T (real time) then modifying this value enables the accurate calculation of the annualized metrics for the trading report.</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2192</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Trading Systems Reporting</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2170</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2170#comments</comments>
		<pubDate>Tue, 30 Nov 2010 11:42:59 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Research and Development]]></category>
		<category><![CDATA[trading system report]]></category>
		<category><![CDATA[trading systems]]></category>
		<category><![CDATA[trading systems reporting]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2170</guid>
		<description><![CDATA[One of the projects that I have been working on over the last couple of weeks is a re-write of the trading system reports for Dakota. In a series of future articles I will describe in detail how each statistic is calculated. For now, some screen shots appear below. This is a work in progress [...]]]></description>
			<content:encoded><![CDATA[<p>One of the projects that I have been working on over the last couple of weeks is a re-write of the trading system reports for Dakota. In a series of future articles I will describe in detail how each statistic is calculated. For now, some screen shots appear below. This is a work in progress and should be available for download within the next week.</p>
<p>The Signal Performance trading simulation type doesn&#8217;t report $ returns  etc. on trading capital and trading is frictionless. This is the type of trading simulation  that I normally run. Stock and Futures Trading simulation types are  available as well.</p>
<div id="attachment_2171" class="wp-caption alignnone" style="width: 600px"><a rel="attachment wp-att-2171" href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2171"><img class="size-medium wp-image-2171" title="New Trading Systems Report Example" src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2010/11/trading_system_report-590x397.gif" alt="New Trading Systems Report Example" width="590" height="397" /></a><p class="wp-caption-text">New Trading Systems Report Example</p></div>
<p>When running the Signal Performance trading simulation the  equity curve is the cumulative log returns. Notice how this is more useful when comparing  periods of relatively high / low prices.</p>
<div id="attachment_2176" class="wp-caption alignnone" style="width: 600px"><a rel="attachment wp-att-2176" href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2176"><img class="size-medium wp-image-2176" title="Trading System Equity Curve" src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2010/11/trading_system_equity_curve-590x397.gif" alt="Trading System Equity Curve" width="590" height="397" /></a><p class="wp-caption-text">Trading System Equity Curve</p></div>
<p>The following image lists most of the settings that are available. Where appropriate, I  would love to be able to create drop-down lists for the Equity Engine settings rather than using numbers to represent different options. No doubt a future version of Dakota will enable this.</p>
<div id="attachment_2181" class="wp-caption alignnone" style="width: 386px"><a rel="attachment wp-att-2181" href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2181"><img class="size-full wp-image-2181" title="Dakota Equity Engine Settings" src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2010/11/dakota_equity_engine.gif" alt="Dakota Equity Engine Settings" width="376" height="299" /></a><p class="wp-caption-text">Dakota Equity Engine Settings</p></div>
<p>All feedback is appreciated!</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2170</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Obtaining the Full Signal History when Calculating Bot Performance</title>
		<link>http://www.adaptivetradingsystems.com/blog/?p=2163</link>
		<comments>http://www.adaptivetradingsystems.com/blog/?p=2163#comments</comments>
		<pubDate>Tue, 30 Nov 2010 06:36:38 +0000</pubDate>
		<dc:creator>jamess</dc:creator>
				<category><![CDATA[Educational Articles]]></category>

		<guid isPermaLink="false">http://www.adaptivetradingsystems.com/blog/?p=2163</guid>
		<description><![CDATA[This article describes how to obtain the entire signal history generated by a given Dakota trade bot when calculating the performance metric for the trade bot over the performance lookback period. Function CalculateAdaptationPerformance() is a function common to all Dakota Equity Engines and is responsible for calculating the value of the performance metric that is [...]]]></description>
			<content:encoded><![CDATA[<p>This article describes how to obtain the entire signal history generated by a given Dakota trade bot when calculating the performance metric for the trade bot over the performance lookback period. Function CalculateAdaptationPerformance() is a function common to all Dakota Equity Engines and is responsible for calculating the value of the performance metric that is used by the swarm adaptation engine when modifying each trade bot&#8217;s adapted parameter values. Naturally, this information is only useful to you if you are developing your own Dakota Equity Engines.</p>
<p>By default, only the signal history over the performance lookback period is passed into function CalculateAdaptationPerformance(). Some performance metrics require a more extensive history. Thus, the need to make the following modification. Assuming that you are using the Visual Basic 6 development platform, select the CPerformance class and go to the Public Property Get PerformanceLookback() function. Then modify the following statement,</p>
<p>PerformanceLookback = Me.Parameters(4).Value          &#8216; Parameter 4 is the performance lookback period.</p>
<p>so that the function return value is set to a number that will be more than sufficient such as,</p>
<p>PerformanceLookback = 20000000.</p>
<p>The screen image below shows you the modified code within the VB6 project.</p>
<div id="attachment_2164" class="wp-caption alignnone" style="width: 600px"><a rel="attachment wp-att-2164" href="http://www.adaptivetradingsystems.com/blog/?attachment_id=2164"><img class="size-medium wp-image-2164" title="Modified Public Property Get PerformanceLookback" src="http://www.adaptivetradingsystems.com/blog/wp-content/uploads/2010/11/trading_system_performance_lookback-590x393.gif" alt="Modified Public Property Get PerformanceLookback" width="590" height="393" /></a><p class="wp-caption-text">Modified Public Property Get PerformanceLookback</p></div>
<p>Conveniently, when Dakota determines how many elements (trading bars) the Signal array should have, it will take into account the number of trading bars in the data history and will not exceed this. Provided that our data history does not exceed twenty million bars, we will always have the full signal history available in function CalculateAdaptationPerformance(). Important note, if you are going to implement this modification then be well aware that you might have to change the way you process the Signal array because the number of elements now correspond to that of the data array.</p>
<p>Regards,</p>
<p>James<br />
Developer of <a href="http://www.adaptivetradingsystems.com">Trading Systems</a> that Adapt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adaptivetradingsystems.com/blog/?feed=rss2&#038;p=2163</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

