|






| |
Profit Driver
Profit Driver is an application that automates many of the operations in
Profit 7.0 and facilitates the creation, optimization, and analysis of
multidimensional arrays of Profit systems. This array based method enables
determinations of the effect of Profit program settings, security selection, and
input transformation across many systems.
The application is a fully functional 30 day free trial. The purchase of an
online license activation for $105 will remove the time limitation. Profit 7, build
256,
must be installed prior to installing Profit Driver, and is available from BioComp's forum download page. The application includes a documentation/help file which
explains the purpose and operation of the functions. Address questions or
observations to

- Download a free 30 day shareware version of Profit Driver. Activate an
online license at any time to make it permanent.
- This manual is included in the installation package above, but some might
prefer to look at the manual by itself.
- A simple 2D settings change example looking at number of inputs used per model
and number of nodes.
Sample Screenshots
Evaluate Input Transformations as Trading Signals Model Performance by Input
Make and evaluate composite signals constructed of model signals from the entire project. The compilation method may be by averaging the signals or taking a concensus vote. This function performs trading threshold sweeps and/or temporal (lag) sweeps to identify the best that a given input transformation can do to maximize or minimize a trading metric when evaluating input transformations as simple trading signals. This is similar to the "Chart It" function in Profit except the date range examined can be defined and the optimum threshold and lag identified. Automatically search for combinations of modeling dates and modeling data partitioning that minimize movement efficiency, which is the ratio of (ending price -beginning price)/total movement. These are settings that will help Profit to learn to make money by trading rather than going and staying long or short. Any given equity result or set of trade statistics is a single reading of a noisy, spikey response surface. Add a few models or take a few models away and you get a very different result. Iterative Model Sampling measures the performance for many combinations of the available models for data driven decision making. Use this function to make files that will define what sets each row in an axis of an array of Profit systems apart from the other rows. See the average and stdev of the performance for a variety of metrics for all of the models that use any given input transformation. A quick and dirty version of the higher resolution information available from Iterative Model Sampling set to Broken out by Input. One of the options for how to define the axis of an array of Profit systems to be optimized and analyzed. Remove, turn on, or turn off models in the entire project based on a variety of metrics and options. Make a file that is one of the options for how to define how each of the rows of an array of Profit system will differ from the others. Each security in the file will be substituted into the systems in the array for a different row for either the traded or "other" securities in the system. All transformations that use that security will have the substitution made.
Make and evaluate composite signals constructed of model signals from the entire project. The compilation method may be by averaging the signals or taking a concensus vote.
Version History
Updated 7/15/07 with build 264. Added an optional "Offset Subtraction"
option to the System Signal Compilation and Model Signal Compilation functions
that prevents shifts in the composite signal when new systems start voting.
This works nicely in conjunction with the range normalization option.
Updated 7/5/07 with build 262. This build is compiled to be compatible
with build 256 of Profit 7.
Updated 7/1/07 with build 261. Added parsing to the Export Transformed
Data and Evaluate Inputs as Trading Signals functions. Also improved the
user interface and screen layout on several of the functions.
Updated 6/20/07 with build 260. This build is compiled against build 252
of Profit 7.
Updated 6/10/07 with build 259. Added graphing of the model equity curve
evaluation to the Model Signal Compilation when performance based voting is
being used.
Updated 6/9/07 with build 257. At a user's suggestion, added the ability
to specify that models only be allowed to vote when their individual equity
curves are above/below a simple moving average of the same equity curve in the
Model Signal Compilation function. Other metrics that can be used in this
type of recent performance based model voting will be forthcoming.
Updated 6/1/07 with build 254. Added a Means Matrix output file to the
Iterative Model Sampling when "Broken Out by Input" is chosen. This
results in a 2D array of results for % of Perfect and Straightness being
produced for multiple samplings of the models that use each input
transformation. This output format makes it easier to recognize which
input transformations perform well with which Profit settings.
Updated 5/20/07 with build 253. Added "Up Days % Correct", "Down Days %
Correct", and "RMS % Correct" to the metrics of System Signal Compilation, Model
Signal Compilation, Model Performance Measurement, and Evaluate Inputs as
Signals functions. The RMS % Correct reaches a maximum when the Up Days %
Correct and Down Days % Correct are balanced and maximized. This can be
used as an optimization metric, and this prevents a general upward or downward
trend in the price data from introducing a bias in the derived optimal trading
threshold.
Updated 5/10/07 with build 251. A slight improvement to the "Export
Transformed Data" function that addresses a fault where the export could fail to
occur in certain situations.
Updated 5/3/07 with build 249. Added the ability to sample multiple values
of the trading threshold for each system in the Iterative Model Sampling
function.
Updated 4/29/07 with build 247. Added Profit Training Dates to the
evaluation metrics of Batch Model Operations and Model Performance Measurement
functions.
Updated 4/27/07 with build 246. Provided the ability to choose from
several options for the date ranges the Abs(Signal Mean/Signal Stdev) metric is
calculated over.
Updated 4/26/07 with build 244. Changed the calculation range of the
Abs(Signal Mean/Signal Stdev) metric in the batch model operations so that it
only includes signal data up to the holdback date for each system.
Updated 4/22/07 with build 242. Added the ability to restrict the maximum
number of bars in the modeling, optimization, and selection partitions for the
solutions found by the Find Balanced Dates function.
Updated 4/21/07 with build 240. Improved the method of determining
parameters of the array of systems so that systems within existing Profit Driver
projects can be used as source Profit systems for new projects.
Updated 4/18/07 with build 237. Updated Help File documentation to
describe new functions. Also improved the user interface for viewing
results in the the Evaluate Transformation function.
Updated 4/16/07 with build 232. Added batch Export Transformed Data and Evaluate
Transformation as Trading Signal functions. These functions work together to
enable the rapid search for transformations that function as trading signals in
their native state. The transformation evaluation function has the ability to
sweep both the temporal (lag) space and the trading threshold space.
Updated 4/12/07 with build 218. Made minor changes to enable several of
the post-optimization analysis functions to handle very large projects with more
than 32,786 models.
Updated 4/5/07 with build 217 Fixed the "Stop Optimization After This
System" button function to enable immediate restart of optimization if desired.
Updated 4/2/07 with build 215. Implemented checks for blank batch file
names when function forms load.
Updated 4/1/07 with build 214. Added a "Stop Optimization After This
System" button to the Main screen, and differentiated optimized threshold model
performance and non-optimized threshold model performance into two different
files, both of which are accessible from the Batch Model Operations screen.
This prevents one type of performance result from overwriting the other and
makes it easier to explore a variety of options without having to re-run the
performance measurement function. This is described in the help file.
-Updated 3/31/07 with build 212. Added the option to perform ASCII
security substitution by matching field sequence rather than matching field
names to facilitate substituting in pre-transformed ASCII input files with field
names that differ from the source system.
-Updated 3/30/07 with build 209. Added support for ASCII format security
files for security substitution. Added a Tanh average option for model and
system signal compilations.
-Updated 3/26/07 with build 205. Consensus voting code revision.
-Updated 3/25/07 with build 202. Implemented checking and retention of date formats
and added options and metrics to the model performance measurement function,
including bipolar straightness and % of perfect x straightness. Model
Signal Compilation function improved to support tens of thousands of model signals per
project. Also added method to
quickly set model voting on/off state based on performance metrics and a method
to quickly generate those metrics.
-Updated 3/23/07 with build 190. Expanded support of tab delimited
files in the "Find Balance Dates" function and added support for Julian
(serial) date and
tab delimited file export settings in Profit.
-Updated 3/21/07 with build 183. Added support for Profit systems
produced by importing an Ascii security file rather than a Metastock format
security. Security substitution is not possible for this format yet but
all other functionality is enabled.
-Updated 3/18/07 with build 180. Added the Add an Element function and
corrected a problem that was generating an error message when processing 1D
arrays of systems. Also added capability to modify settings of
pre-existing projects with the Alter Settings function.
-Updated 3/16/07 with build 170. Added optimum model trading threshold
determination and linkage of this into batch model operations and model signal
compilation.
Profit Add-Ins
|
|
|
 |
You will receive all the indicator add-ins
shown below as well as all indicator add-ins and scriptbots created by Prescient
Analytics in the future. This is a one-time purchase, and the Sponsor buy-in license price may go
up gradually as more add-ins are created. Sponsor license holders
will be able to provide input on future indicator build projects and can
receive email updates when new indicators are available for download.
Current Add-In Sponsor License price is $100.
|
|
|
|
 |
This Profit indicator is a wrapper for the Jurik DMX function, which is
included in the Jurik JMA dll. It requires that the dll version of
Jurik's JMA be installed. More information on DMX can be found
here.
This add-in generates three output series constructed from user
specified High, Low, and Close input series. These input series do
not necessarily have to be the tradable series. The three output
series are the DMI+, the DMI- and the bipolar DMX.
|
|
|
|
 |
This Profit indicator is a wrapper for the Jurik WAV function. It
requires that the dll version of Jurik's WAV be installed. More
information on WAV can be found
here.
This add-in generates a user-specified number of output columns that
sample a specified input series at a sequence of defined time periods
occurring a defined sequence of time periods ago. This wrapper
utilizes the full capability of WAV, and can generate up to the maximum
of 18 output series.
|
|
|
|
 |
This Profit indicator is a wrapper for the Jurik DDR function. It
requires that the dll version of Jurik's DDR be installed. More
information on DDR can be found
here.
This add-in generates a number of output series that is equal to
the number of user selected input series. These output series will
be completely decorrelated from each other, but will contain all the
information in the input series. User inputs are the beginning and
ending dates to be used in the decorrelation calculation, and then these
decorrelation coefficients are propagated through the data before and
after this range, including subsequent data updates. This wrapper utilizes
the full capability of DDR, and there are no known limitations on the
number of input and output series.
|
|
|
|
 |
This Profit indicator adapts the speed of a stochastic oscillator of a user
selected series between a value associated with the minimum of an
infinite lookback stochastic of the Jurik CFB of the series and a value
associated with a maximum of an infinite lookback stochastic of the Jurik
CFB. Typically, a longer stochastic is desired when the market is
trending and the CFB is high, and a shorter stochastic is desired when
the market is choppy and CFB is low, although these can be reversed if
desired. User inputs are the values for the minimum and maximum
depth of the adapted stochastic as well as the fractal span and
smoothing factors for the Jurik CFB. Requires that the dll version
of Jurik's CFB be installed.
|
|
|
|
 |
This Profit indicator adapts the speed of a the Jurik RSX of a user selected
series between a value associated with the minimum of an infinite
lookback stochastic of the Jurik CFB of the series and a value associated
with a maximum of an infinite lookback stochastic of the Jurik CFB.
Typically, a longer period RSX is desired when the market is trending
and the CFB is high, and a shorter period RSX is desired when the market
is choppy and CFB is low, although these can be reversed if desired.
User inputs are the values for the minimum and maximum speeds of the
adapted RSX as well as the fractal span and smoothing factors for the
Jurik CFB. Requires that both the dll version of Jurik's CFB and
the dll version of Jurik's RSX be installed.
|
|
|
.
|
 |
This Profit indicator adapts the speed of a Jurik VEL of a user selected series
between a value associated with the minimum of an infinite lookback
stochastic of the Jurik CFB of the series and a value associated with a
maximum of an infinite lookback stochastic of the Jurik CFB.
Typically, a longer period VEL is desired when the market is trending
and the CFB is high, and a shorter period VEL is desired when the market
is choppy and CFB is low, although these can be reversed if desired.
User inputs are the values for the minimum and maximum speeds of the
adapted VEL as well as the fractal span and smoothing factors for the
Jurik CFB. Requires that both the dll version of Jurik's CFB and
the dll version of Jurik's VEL be installed.
|
|
|
|
 |
This Profit indicator adapts the period and phase of a Jurik JMA of a user
selected series between the values associated with the minimum of an
infinite lookback stochastic of the Jurik CFB of the series and the
values associated with a maximum of an infinite lookback stochastic of
the Jurik CFB. Typically, a longer period JMA is desired when the
market is trending and the CFB is high, and a shorter period JMA is
desired when the market is choppy and CFB is low, although these can be
reversed if desired. User inputs are the values for the minimum
and maximum speeds and phases of the adapted JMA as well as the fractal
span and smoothing factors for the Jurik CFB. Requires that both
the dll version of Jurik's CFB and the dll version of Jurik's JMA be
installed.
|
|
|
|
 |
This Profit indicator implements the homodyne discriminator, as described in
Ehlers' 'Rocket Science for Traders' (2001) to measure and return the period
length of the dominant cycle. It can determine the period of
oscillation within a single cycle after formation. This differs
from Fourier transforms and other methods that sample over many periods
of oscillation of data to pick out the dominant frequency in that the
Homodyne discriminator does not require that the period or phase of the
market cycle be stable over an extended time. This has both
advantages and disadvantages. The Homodyne discriminator will most
likely be useful to adapt other indicators to the current market
frequency. This indicator has a single output, the number of
periods of the dominant cycle.
|
|
|
|
 |
This Profit indicator, as described in Ehlers' 'Rocket Science for Traders'
(2001) makes use of the Homodyne Discriminator to form an oscillator with the
same frequency as the dominant cycle, by plotting the sine of the
measured phase angle, designated Sine. It also makes an oscillator
that is the Sine advanced in phase by 45 degrees, designated Leadsine,
which crosses Sine 1/16 of a cycle before the anticipated turning point.
Lastly, it generates the Leadsine-Sine function, which has a zero
crossing 1/16 of a cycle before the anticipated turning point.
This add-in returns all three indicators.
|
|
|
|
 |
This Profit indicator, as described in Ehlers' 'Cybernetic Analysis for
Stocks and Futures' (2004) is similar in function to the Homodyne
Discriminator in that it returns the dominant cycle period, though
through a different algorithm, and is more responsive than the Homodyne
Discriminator. This indicator has a single output, the number of
periods of the dominant cycle.
|
|
|
|
 |
This Profit indicator, as described in Ehlers' 'Cybernetic Analysis for
Stocks and Futures' (2004) makes use of the Cycle Period Indicator to
form an oscillator with the same frequency as the dominant cycle, by
plotting the sine of the measured phase angle, designated Sine. It
also makes an oscillator that is the Sine advanced in phase by 45
degrees, designated Leadsine,
which crosses Sine 1/16 of a cycle before the anticipated turning point.
Lastly, it generates the Leadsine-Sine function, which has a zero
crossing 1/16 of a cycle before the anticipated turning point.
This add-in returns all three indicators.
|
|
|
|
 |
This Profit Sinewave indicator is a bit more complex to use than the
other sinewave indicators but it is also more versatile. Rather
than having the dominant cycle period determination method hard coded in, it utilizes the
period of oscillation as measured and provided by another input series,
such as that given by the Homodyne, or the Cycle Period, or others that
are in the works. The other inputs needed are the High and Low of
the security of interest. This is the first in a category of
indicators whose adaptation is driven by other indicators. This
has the advantage of not requiring a catalog of all the combinations of
front ends and adapting functions. This indicator
forms an oscillator with the same frequency as the dominant cycle, by
plotting the sine of the measured phase angle, designated Sine. It
also makes an oscillator that is the Sine advanced in phase by 45
degrees, designated Leadsine,
which crosses Sine 1/16 of a cycle before the anticipated turning point.
Lastly, it generates the Leadsine-Sine function, which has a zero
crossing 1/16 of a cycle before the anticipated turning point.
This add-in returns all three indicators.
|
|
|
|
 |
MAMA is the MESA Adaptive Moving Average and FAMA is the Following
Adaptive Moving Average, as described in 'Rocket Science for Traders'
and Stocks and Commodities, Dec 2000, p. 19. The concept of MAMA
is to relate the phase rate of change of the dominant cycle as
determined by the Hilbert Transform and Homodyne discriminator to the
alpha of an EMA. This makes the EMA speed progress in a sawtooth
fashion and makes the resulting EMA ratchet to follow price, alternating
between being a fast EMA and a slow EMA once per cycle. The FAMA
has an alpha that is half as large so it trails MAMA, and they only
cross at major market changes in direction, and is presented as a way to
avoid whipsaws.
This add-in returns both of these indicators as well as MAMA-FAMA, which
crosses zero when MAMA and FAMA cross.
|
|
|
|
 |
This Profit indicator is for use in output transformations only.
It is a stochastic with the window looking forward in time instead of
back. It may not be used for input transformations because it would
constitute a future leak. It can accept either a single input
series to make a %Normal calculation or the High, Low, and Close to make
a true Stochastic. Smoothing could be applied either before or
after this transformation. This indicator has two output modes.
One is to output the raw reversed stochastic, which oscillates between 0
and 1. The other mode is to output the stochastic inverted and set
to oscillate between -1 and 1, so that it becomes a rational target
function.
|
|
|
|
 |
This Profit indicator, as described in Ehlers' 'Rocket Science for Traders'
(2001) as the Enhanced Signal to Noise Indicator, makes use of the
Homodyne Discriminator to return the signal to noise ratio in decibles.
Ehlers' recommendation is to avoid cycle mode trading when the signal to
noise ratio is below 6 db.
|
|
|
|
 |
This Profit indicator, as described in Ehlers' 'Rocket Science for Traders'
(2001) returns the Hilbert Oscillator. It makes use of the
Homodyne Discriminator to return the quadrature component, a 1/4 cycle
moving average of the quadrature component, and the difference of the
two, which crosses zero when these cross.
|
|
|
|
 |
This Profit indicator, as described in Ehlers' 'Rocket Science for Traders'
(2001) returns the Market Mode Indicator. It makes use of the
Homodyne Discriminator to measure the dominant cycle period and
indicates whether the market is in a cycle mode or a trend mode.
It starts by assuming a trend mode unless the leadsine and sine curves
have crossed within a user specified fraction of the cycle period, or
when the phase rate of change is within +/- 50% of the phase rate of
change of the dominant cycle. This is over-ridden if the
instantaneous trendline, as measured over a user specified fraction of
the dominant cycle, is more than a user specified threshold from the
smoothed price. This indicator returns a single series, the market
mode, which is 1 when in trend mode and 0 when in cycle mode. This
indicator should be useful in conjunction with other indicators.
|
|
|
|
 |
This Profit indicator ties together the homodyne discriminator, the
sinewave indicator, the instantaneous trendline, and the market mode to
address a fundamental problem with the sinewave indicator. The
sinewave indicator does well while the market is in cycle mode, but when
the market enters a strong trend it gets stuck on the wrong side of the
trade because the phase change goes to zero and the indicator is waiting
for the leadsine and sine to cross again. The Sine-Trend
indicator tries to address this by using the Market Mode to trade the Sinewave indicator while the market is in cycle mode and
then switch and trade with the
trend when the market is in trend mode. I haven't seen that this
helps the overall profitability of the Sinewave indicator generally, but
it should reduce the drawdowns that the Sinewave indicator can
experience due with being on the wrong side of a trend.
|
|
|
|
 |
These Profit indicators are all free, and have an installation password
that is the word free in
lowercase letters. They enable the formation of all kinds of
candle indicators, divergence detection, comparisons and tests.
They are very simple and very versatile. They each
compare 2 series and output a binary output of 1 for True and 0 for
False. They can be downloaded from the Archive page.
|
|
|
|
 |
The Efficiency Ratio, also known as the Fractal Efficiency, is the
absolute change in price over a time period divided by the sum of
absolute 1 day price changes over the period. In Trading Systems and
Methods, Kaufman showed that trend following a 16 day EMA was profitable
when the 65 day efficiency ratio was high, but was not when it was low,
for a broad sampling of markets. This suggests that this indicator may
provide information about when trend following is in order and when
trading counter-trend would be appropriate.
|
|
|
|
 |
The volume based Accumulation/Distribution Line was proposed by Marc
Chaikin as a method to avoid the all or nothing character of On Balance
Volume. It assigns a proportional amount of the daily volume to
the indicator according to the relationship between the closing price
and the average price of the day. Inputs are the High, Low, Close,
and Volume series. Not to be confused with the price based
Williams' Accumulation/Distribution indicator.
|
|
|
|
 |
The Chaikin A/D Oscillator is based on the Accumulation/Distribution
line. It is created by subtracting one exponential moving average
of the A/D line from another exponential moving average of the A/D line.
It helps identify divergence between volume and price movement.
Inputs are the High, Low, Close, and Volume and adjustable parameters
are the periods of the 2 EMAs.
|
|
|
|
 |
The Chaikin Money Flow indicator is also based on the A/D Line. It
is created by summing the values of the A/D line for a given number of
periods divided by the summation of the volume over the same period.
It is above zero in strong markets and below zero in weak markets.
Inputs are the High, Low, Close, and Volume, and the adjustable
parameter is the number of periods to sum over.
|
|
|
|
 |
The CCX is Jurik's version of the CCI, the commodities channel index.
It is essentially a MACD, normalized by its own average deviation.
The CCX makes use of JMA for smoothing functions internal to the CCX
calculation. It requires that the dll version of Jurik's JMA be
installed, but does not require any other Jurik tool or software.
It produces smoother curves and is just as timely as the CCI. The
required inputs are the High, Low, and Close of the security, but this
does not have to be the tradeable security in Profit.
|
|
|
|
 |
DEMA and TEMA are the Double Exponential Moving Average and the Triple
Exponetial Moving average. They were introduced in the January
1994 issue of TASC. The name is somewhat misleading, since they
are not simply XMAs of an XMA, but are composites of single and double
and triple XMAs that have less lag than any of the components
individually.
|
|
|
|
 |
This indicator generates a bipolar version of the Jurik Composite
Fractal Behavior (CFB) indicator that is greater than zero when the
series of interest is trending up and less than zero when the series is
trending down. The Jurik JMA smooths the inital data, RSX is used
to estimate trend direction, and CFB measures trending, so the Jurik JMA,
RSX, and CFB DLLs must all be installed. User inputs are the JMA
depth and the CFB smoothing and fractal span.
|
|
|
|
 |
This indicator generates the equity curve that would result if the
series of interest were used as a trading signal, given the trading
delay and threshold specified by the user. It is similar to the
non-normalized version of the chart-it function in the indicator window
of Profit. The utility of having the equity curve of an indicator
as an input in Profit is still being explored, but the general idea is
to invert the signal when the equity curve is trending down.
Multiplying the input by a binary transformed bipolar CFB of the equity
curve of the input is one way to do this, but there are others as well.
|
|
|
|
 |
TrendDir generates an output that indicates the direction and
significance of the current trend. It does this by calculating the
z-score of the trend over a series of lookback windows that range from a
user specified minimum to a user specified maximum and outputs the mean
z score over this range of lookback windows. The output is bipolar
in nature, meaning that it is a negative value when the trend is
declining, and the magnitude is a measure of the significance of the
trend.
|
|