BuildAlpha Signal Glossary
BuildAlpha Signal Glossary
Risk Disclosure
FUTURES AND FOREX TRADING CONTAINS SUBSTANTIAL RISK AND IS NOT FOR EVERY INVESTOR. AN INVESTOR COULD
POTENTIALLY LOSE ALL OR MORE THAN THE INITIAL INVESTMENT. RISK CAPITAL IS MONEY THAT CAN BE LOST WITHOUT
JEOPARDIZING ONES FINANCIAL SECURITY OR LIFESTYLE. ONLY RISK CAPITAL SHOULD BE USED FOR TRADING AND ONLY
THOSE WITH SUFFICIENT RISK CAPITAL SHOULD CONSIDER TRADING. PAST PERFORMANCE IS NOT NECESSARILY INDICATIVE
OF FUTURE RESULTS.
HYPOTHETICAL PERFORMANCE RESULTS HAVE MANY INHERENT LIMITATIONS, SOME OF WHICH ARE DESCRIBED BELOW. NO
REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFITS OR LOSSES SIMILAR TO
THOSE SHOWN; IN FACT, THERE ARE FREQUENTLY SHARP DIFFERENCES BETWEEN HYPOTHETICAL PERFORMANCE RESULTS
AND THE ACTUAL RESULTS SUBSEQUENTLY ACHIEVED BY ANY PARTICULAR TRADING PROGRAM. ONE OF THE LIMITATIONS
OF HYPOTHETICAL PERFORMANCE RESULTS IS THAT THEY ARE GENERALLY PREPARED WITH THE BENEFIT OF HINDSIGHT. IN
ADDITION, HYPOTHETICAL TRADING DOES NOT INVOLVE FINANCIAL RISK, AND NO HYPOTHETICAL TRADING RECORD CAN
COMPLETELY ACCOUNT FOR THE IMPACT OF FINANCIAL RISK OF ACTUAL TRADING. FOR EXAMPLE, THE ABILITY TO
WITHSTAND LOSSES OR TO ADHERE TO A PARTICULAR TRADING PROGRAM IN SPITE OF TRADING LOSSES ARE MATERIAL
POINTS WHICH CAN ALSO ADVERSELY AFFECT ACTUAL TRADING RESULTS. THERE ARE NUMEROUS OTHER FACTORS RELATED
TO THE MARKETS IN GENERAL OR TO THE IMPLEMENTATION OF ANY SPECIFIC TRADING PROGRAM WHICH CANNOT BE
FULLY ACCOUNTED FOR IN THE PREPARATION OF HYPOTHETICAL PERFORMANCE RESULTS AND ALL WHICH CAN ADVERSELY
AFFECT TRADING RESULTS.
Signal Glossary and User Guide
For example, CTRL + F then type “Importing into TradeStation” or even simpler “Import” and you can
find all the instances of the word Import in the Guide. This will make things easy to use.
Signal Glossary and User Guide
https://www.dropbox.com/s/awhuj1jdl8kldcf/Release_AxiomFutures_TradeStation_setupv1.exe?dl=0
Inside TradeStation please send me your customer ID number so I can grant your account access to the
Build Alpha data, DLL and functions. To find your customer ID inside the TradeStation platform please go
to Help -> About. Then please send me the code.
Note:
Please also install the ELD support file. File -> Import Easy Language Document -> ELD -> Select this file.
https://www.dropbox.com/s/k41pi622xxya1ie/BuildAlpha.ELD?dl=0
Signal Glossary and User Guide
https://www.dropbox.com/s/73m9w31v5h6tre1/Release_AxiomFutures_MultiCharts_setupx.exe?dl=0
Inside MultiCharts, please find your Licensed to number. Select Help -> About MultiCharts
If yours does not say Licensed to but says ‘Evaluation Copy’ then please send me your User ID instead.
Note
Please also install the support ELD file. Open the Power Language Editor, File -> Import -> Select this ELD
https://www.dropbox.com/s/k41pi622xxya1ie/BuildAlpha.ELD?dl=0
Signal Glossary and User Guide
https://www.dropbox.com/s/1wzzyrwccfo1kir/Release_AxiomFutures_NinjaTrader8_setup.exe?dl=0
Inside Ninjatrader8, select Tools -> Import -> Ninjascript Add On… and then select the zip file in your
Documents/Axiom Futures/NinjaTrader/ folder. It will be AxiomFutures.zip.
Then please go to Help->About and send the Machine ID to me so I can activate your NT8 for full access
Note: You will also need to install the BuildAlphaNT8.zip. Tools->Import->Addons->Select the zip file
https://www.dropbox.com/s/qrnk7yrt8wqu8ei/BuildAlphaNT8.zip?dl=0
Signal Glossary and User Guide
https://www.dropbox.com/s/wxxgaotsz180klc/Release_AxiomFutures_MetaTrader4_setupv1.exe?dl=0
When prompted, please user browse to find your MT4 installation. They’re almost always in the
Program Files (x86) folder.
Signal Glossary and User Guide
Then inside MT4, please go to Tools -> Options -> Expert Advisors and enable DLLs
Note: You will also need to download the include file and put in your MT4 Include folder.
Signal Glossary and User Guide
Standard Exits:
Max Holding Time: This is the maximum number of bars a strategy will hold a position. If set to 3, for example,
then the strategy will exit after being in the trade for 3 bars. If you are using the built-in daily data, then 3 would be
3 days. If using 15-minute custom intraday data, then 3 would equate to 45 minutes. To turn this feature “off” just
set the value extremely high that will never evaluate as true. For example, 999999.
Profitable Closes: This is the number of profitable closes that would trigger the strategy to exit a position. For
example, set to 2 would require two closes to be greater than a long entry price before an exit would trigger. For
example, enter on Monday at 20.50. Tuesday closes at 20.65 and profitable closes is now 1. Wednesday closes at
20.61 which is still greater than Monday’s entry of 20.50 so profitable closes is now 2. The strategy would then
exit. To turn this feature “off” just set the value extremely high that will never evaluate as true. For example,
999999. Also, please note profitable closes set greater than the max holding time can never evaluate to true. You
cannot have 6 profitable closes with a max holding time of 4 bars, for example.
Profit Target: Can be turned on and off. It can also be changed between ATR based and Dollar based. If on and set
to ATR, the PT Mult is a multiple of the 20 period Average True Range with 20 being configurable in the settings
window. An ATR setting of 2 would mean we want to set a profit target at 2 ATR units above our entry (for longs).
Using ATR/volatility targets allows system to be dynamic and evolve with the market as opposed to using static
values like 10 points or 3%. You can adjust the length of the Average True Range in the settings menu. (Services->
Settings-> ATR length). If you click on the “ATR” it will change to “Fixed”. When set to fixed, please enter the dollar
amount you wish to exit with a profit at. For example, this will set a profit target of $500
Trailing Stop Loss: Both an ATR and Fixed option. Configurable the same as Profit Target and Stop Loss. Updated
based on the maximum value reached while in the trade (for longs).
Highest High: This acts as a price-based target for long strategies and a stop for short strategies. A long strategy
would exit at the highest high of the past N days. N can be configured by setting HH Look. A HH Look set to 5 would
mean a strategy would exit at the highest high of the past 5 rolling bars.
Update: You can now test multiple exit combinations in one simulation using Delta x3 feature. Each exit option has
two input values. The one on the left is the starting point and the input on the right is the increment or step
amount. For example, setting max time to 2 and 1 would test max times of 2, 3, 4. Setting PT to 0 and 1.5 would
test OFF, 1.5, 3.0. Setting PT to 1 and 1.5 would test 1.00, 2.50, 4.00. Leaving the second value to 0 will only check
Signal Glossary and User Guide
the starting value and will make for a faster simulation. In general, the more you select the more time it will take
to process.
Fitness Functions:
Fitness Functions are the performance metric Build Alpha will attempt to create strategies that excel in. For
example, you can create strategies that try to optimize total profit, least drawdown, best profit to drawdown ratio,
or even smoother equity curve. Below is a definition and calculation (if permitting) of each of the fitness functions.
PNL: Total profit. Build Alpha will create and save strategies that make the most money in the test period.
DD: Drawdown. Build Alpha will create and save strategies that have the lowest drawdown over the test period.
PNLDD: Profit to Drawdown ratio. Build Alpha will create and save strategies that have the highest profit to
drawdown ratio
Sharpe: Expected return given expected amount of volatility. A measure of risk-adjusted returns.
Sortino: Expected return given an expected amount of negative volatility. Similar to Sharpe but only focuses on
volatility of losing trades.
CPC: Win percentage multiplied by ratio WL multiplied by profit factor. Generally, values under 1.2 should be
discarded.
CorrCoef: Correlation Coefficient is a measure of how linear an equity curve is. If it jumps around or is non-linear in
shape then this value will be low, but if it progress with a slope close to 1 then the value shall be close to 1. The
higher this value the more linear the account growth or equity curve is.
T-Test: T Statistic. A measure of how statistically valid the average trade is. That is, is the average trade actually
greater than 0. A higher value means a higher chance the average trade is a true amount and not something
achieved by luck or data mining.
SQM:
trade count = if more than 100 trades use 10 else use sqrt(trade count)
(Average Trade / (Average Losing Trade + Stdev Losing Trade)) * trade count
E-Ratio: This searches for the highest edge-ratio in the first ten bars. Please refer to buildalpha.com/eratio for
detailed explanation of edge ratio.
Expectancy Score: (Average win * prob(W) + Average Loss * prob(L)) * (No. trades / No. Bars in Backtest)
Perfect Profit Percentage: This assumes perfect forward information. We find the absolute BEST equity curve then
find strategies that are the closest percentage to this perfect (unattainable) equity curve.
Perfect Profit Correlation: Similar to above but looking for correlation instead of percentage.
Robustness Index: Average trade from in-sample period divided by average trade from out-of-sample period. This
is not yet added to the Fitness Function dropdown but is available in the Out of Sample output results.
Symbol Selection
You can either choose to develop a strategy on one market of interest or across a basket of selected symbols.
Please note that any symbol selected in the ‘Symbol’ dropdown will be used to generate the best strategies. The
following example uses 5 markets in a basket to find/create the best strategies (SPY, DIA, QQQ, IWM, TLT).
Signal Glossary and User Guide
Delay Entries
Some of you require a one (or more day) lag from when the signal occurs and when you can execute the order. You
can automatically add this lag to the code by setting the delay to a value greater than 0 in Settings menu. An
example of this would be... entry is true on Monday’s close but because delay is set to 1 the entry will occur on
Tuesday’s close (please note this also means entry is set to ‘this bar close’). If Enter On was set to Next Open and
the condition for entry was True on Monday’s close, then the entry would happen on Wednesday’s open
(assuming delayed entry set to 1).
Signal Glossary and User Guide
SIGNAL DESCRIPTIONS
Day of the Week
dayOfWeek(date) = 1 – translates – if the day of the week is Monday (the first day of the week).
dayOfWeek(date)<>4 – translates – if the day of the week is NOT Thursday (the fourth day of the week).
Signal Count: 10
Week Number
weekNumber = 1 – translates – it is the first trading week of the month. If Friday is the first of the month then this
would only be true on that Friday. The following Monday would begin the second trading week of the month.
weekNumber <> 4 – translates – it is NOT the fourth trading week of the month.
Signal Count: 10
Day of Month
Dayofmonth(date) >= 20 – translates – the calendar day of the month is greater than or equal to 20. March 22 is
true and May 19 is false.
Signal Count: 7
Odd/Even Day
oddday = 1 – translates – today’s calendar day is an odd number. March 7 is true. August 8 is false.
Signal Count: 2
Signal Glossary and User Guide
Month(date) > 3 and Month(date) <= 6 – translates – second quarter of the year.
Signal Count: 33
Signal Count: 49
There are over 1,400+ OHLC comparison signals to choose from. They reference as many as 10 bars ago.
OHLC – Manipulations
open[0] < SqrtHL[0] – translates – the current bar’s open is less than the square root of the current bar’s high
multiplied by the current bar’s low.
HLMedian is the median price between the current bar’s high and current bar’s low.
BodyMedian is the median price between the current bar’s open and the current bar’s close.
HLC is the average price of the current bar’s high, low, and close.
CubeHLC is the cube root of the product of the current bar’s high, low and close.
OHLC is the average price of the current bar’s open, high, low, and close.
Signal Count: 85
open[0] > average(close,200) – translates – the current bar’s open is greater than the simple moving average of the
most recent 200 bars.
Most only check where the closing price is in relation to the moving average, but Build Alpha offers signals that
check where the open, high, low, and close are in relation to multiple moving averages.
Build Alpha also includes signals comparing the simple moving average to the simple moving average calculated a
few bars ago.
average(close,50)[0] > average(close,50)[2] – translates – the 50 period SMA is greater than the 50 period SMA
calculated 2 bars ago.
Consecutive OHLC
consecutive(close,2,0) = 1 – translates – two consecutive lower closes. The first input into the “consecutive”
function is the price you would like to check; in this case, we are using close. The second input to the “consecutive”
function is the amount of consecutive occurrences you would like to check; in this case, we are looking for two
consecutive closes. The third input to the “consecutive” function is 1 for higher and 0 for lower; in this case, we are
checking for 2 consecutive lower closes.
Signal Count: 48
low[0] <= lowest(low,10)[0] – translates – this bar is the lowest low of the last 10 bars. This bar has made a new 10
bar low.
Build Alpha offers comparisons for opens and closes, as well. Build Alpha also offers OHLC in both directions:
highest and lowest.
Signal Count: 48
Percent Change
Signal Glossary and User Guide
percentChange >= 2 – translates – this bar’s percent change is greater than 2%. Percent Change is calculated close
over close. That means, (current bar’s close – previous bar’s close)/previous bar’s close.
Signal Count: 10
Base: 1 Max: 3 Step 0.5 would test 1%, 1.5%, 2.0%, 2.5%, 3.0%
Performance To Date
MTD, QTD and YTD are month to date, quarter to date and year to date performance (in percent) of the underlying
asset.
MTD[0] < 5.0 – translates – the current bar’s month to date performance is less than 5%
Base: 1 Max: 3 Step 0.5 would test 1.0%, 1.5%, 2.0%, 2.5%, 3.0%
range >= highest(range,4) – translates – this bar’s range is the greatest range over the last 4 bars. This would
qualify as a WR4 or wide range 4 bar that is often talked about in technical analysis and candlestick literature.
Signal Count: 10
Japanese Candlesticks
All candle sticks can be selected based on their respective name. For example, hammer, inverted hammer, doji.
InvertedHammer – both the open and the close are below the midpoint of the bar.
Doji – the open and close difference are less than or equal to 10% of the entire bar’s range.
DownWick would be an open or close contained within the previous bar’s low and the minimum of the previous
close and previous open. The current open is contained within the lower wick of the previous candle.
Signal Count: 20
1. Inside range
2. Outside range
3. Up Range (high is above comparison high, low is above comparison low)
4. Down Range (high is below comparison high, low is below comparison low)
Each of these 4 range types can be paired with either a positive or negative close. This leaves us with 8 possible
day types.
InsideRange(4,1) – translates – when comparing the current bar’s range to the bar 4 bars ago, the current bar’s
range is inside the 4 bars ago’s range. The current bar also has a positive close when compared to the close 4 bars
ago. The first input is for the lookback comparison and the second input is for positive close or negative close
comparison.
UpRange(3,0) – translates – current bar’s high is above the high 3 bars ago and the current bar’s low is above the
low from 3 bars ago. The second input of 0 signifies that current bar closed below the close from 3 bars ago.
Signal Count: 40
Bar Path
These signals represent the closing pattern over the past three bars. There can be 8 possible outcomes of how the
last three bars closed in comparison to each bar’s previous bar.
barPath = 1 – translates – close[0] < close[1] and close[1] < close[2] and close[2] < close[3]
barPath = 2 – translates – close[0] < close[1] and close[1] < close[2] and close[2] > close[3]
barPath = 3 – translates – close[0] < close[1] and close[1] > close[2] and close[2] < close[3]
barPath = 4 – translates – close[0] < close[1] and close[1] > close[2] and close[2] > close[3]
barPath = 5 – translates – close[0] > close[1] and close[1] < close[2] and close[2] < close[3]
barPath = 6 – translates – close[0] > close[1] and close[1] < close[2] and close[2] > close[3]
barPath = 7 – translates – close[0] > close[1] and close[1] > close[2] and close[2] < close[3]
barPath = 8 – translates – close[0] > close[1] and close[1] > close[2] and close[2] > close[3]
Signal Count: 8
close[0] > R1 – translates – this bar’s close is greater than the first resistance level.
Signal Glossary and User Guide
Pivot Points, Support levels and Resistance levels have been calculated according to this standard:
http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:pivot_points
Signal Count: 25
Ibr >= .85 – translates – this bar’s close closed in the top 85% of this bar’s range.
ibr <= .25 – translates – this bar’s close closed in the bottom 25% of this bar’s range.
Signal Count: 12
*Please note* the parametric signals are expressed as a %. So parametric IBR signals will translate as follows
AverageTrueRange(10) > AverageTrueRange(50) – translates the 10 period average true range is greater than the
50 period average true range. Or in other words the short-term volatility is increasing compared to the longer term
average.
Signal Count: 91
Volatility Breakouts
high[0] > close[1] + 1.5 * atr[1] – translates – this bar’s high is greater than 1.5 average true range units than the
previous bar’s close. This would be a “breakout” of ATR volatility bands.
Signal Count: 16
AutoCorrelation
Signal Glossary and User Guide
autocor(close,5,20) <= -.1 – translates – the autocorrelation between this bar’s close and the close of 5 bar’s ago
calculated for the previous 20 bars is <= -0.1.
Signal Count: 2
Please note parametric Autocorrelation signals are expressed as percentages. So .1 is 10. Autocor(5,20) > 10 is the
same as the built-in signal Autocor(5,20) > .1
Bollinger Bands
close[0] >= BollingerBand(c,20,2) – translates – this bar’s close closed above the 2 standard deviation Bollinger
Band of the 20 period simple moving average.
BollingBand(c,20,2)[0] > BollingerBand(c,20,2)[3] – translates – this bar’s upper Bollinger Band closed higher than
the upper Bollinger Band calculated three bars ago.
Signal Count: 10
Signal Count: 10
Hurst Exponent
A measure of how mean reverting or trending a market has been over the last n bars.
Hurst(20)[0] > .65 – translates – the hurst exponent is greater than .65.
Hurst(20)[0] > Hurst(20)[2] – translates – the hurst exponent calculated this bar is greater than the hurst exponent
calculated two bars ago.
Signal Count: 22
Please note parametric Hurst signals are expressed as percentages. The built-in signal Hurst(20)[0] > .65 would be
the equivalent of the parametric Hurst(N)[0] > 65
Keltner Channel
A measure of volatility surrounding most recent price action. Similar to the more widely used Bollinger Bands.
Close[0] cross above KeltnerChannel(c,20,1.5) – translates – the current bar’s close crossed above its upper Keltner
Channel calculated on the closing prices of the past 20 bars using 1.5 multiple for Keltner calculation.
Signal Count: 10
Please note parametric signals are expressed as a percentage. Kaufman(10)[0] > 0.50 is the equivalent of the
parametric Kaufman(10)[0] > 50
Macdhist(c,12,26)[0] > macdhist(c,12,26)[4] – translates – the MACD histogram (MACD line – MACD signal line)
calculated this bar is greater than the MACD histogram calculated four bars ago. A signal of increasing momentum.
Signal Count: 14
Rsi(c,14) >= 90 – translates – this bar’s 14 period RSI is greater than 90.
RSI(c,14) crosses above 90 – translates – this bar’s 14 period RSI crossed above 90 (on this specific bar both of
these prior examples will be true; however, this signal will not be true on the next bar as it “crossed over” 90 on
this bar).
RSI(c,2)[0] <= RSI(c,2)[3] – translates – this bar’s 2 period RSI is less than or equal to the 2 period RSI calculated 3
bars ago.
Stochastics
Stochastics contains filters and signals. For example,
Stochastics(14) <= 20 – translates – the 14 period stochastics calculated on this bar is below 20.
Signal Glossary and User Guide
Stochastics(14) crosses above 80 – translates – the 14 period stochastics calculated on this bar crosses above 80.
Signal Count: 58
rateOfChange(close,3) – translates – the difference of this bar’s close minus the close of 3 bars ago divided by the
close of 3 bars ago.
Signal Count: 36
Please note parametric signals are expressed as a percentage. RateOfChange(Close,3)[0] > 6 means greater than
6%
Momentum
See above. However, momentum is raw value not converted to percentage. Simply (Close – Close of Lookback).
Signal Count: 36
TDOM
Trading day of the month. For example, if September 3rd is a Monday then it would be the first trading day of the
month. However, next year when September 3rd is a Tuesday then it would be the second trading day of the
month.
Signal Count: 23
TDLM
Trading days left in the month. For example, on September 30, 2019 there are no trading days left in the month
and this function would return 0.
TDLM[0] == 4 – translates – there are 4 trading days left in the current month.
Signal Count: 24
Value Charts
Signal Glossary and User Guide
These are an attempt to quantify price action profile. First, detrend the data by subtracting the rolling length
median. Then dived by the product of 1 / length and rolling length range.
This moves all values from a scale of -12 to +12 and closely represents a normal distribution. A negative extreme is
‘oversold’ and a positive extreme is ‘overbought’.
Reference: https://www.dropbox.com/s/zr9nb0iystpk05v/Value_Chart_Overview.pdf?dl=0
VIX
Vix[0] > 35 – translates – the vix’s on this bar is greater than 35.
Vix[0] > Vix[2] – translates – the vix’s close on this bar is greater than the vix’s close of 2 bars ago.
Build Alpha will automatically match dates in the background. If you import custom data, Build Alpha will
synchronize the Vix signals behind the scenes. If no dates match then no Vix signals will appear.
Signal Count: 44
Volume
Volume[0] >= average(volume,10) – translates – this bar’s volume is greater than the average volume calculated
over the previous 10 bars.
Volume[0] <= volume[4] – translates – the volume of this bar is less than or equal to the volume of four bars ago.
Signal Count: 13
Wins Last
WinsLast(20) <= 10 – translates – the number of up closes in the last 20 bars is equal to or less than 10.
This can be used to identify periods where the market may be “overdue”, but a reminder about gambler’s fallacy.
Signal Count: 49
Composites
Signal Glossary and User Guide
CompositeRSI(2,24) – translates – the average RSI over RSI2 + RSI3 + RSI4 + … RSI23 + RSI24 / ( 24 – 2 + 1)
Super Smoother
A zero lag (less lag) exponential moving average.
Signal Count: 19
Economic Numbers
You can test around or on the date of the economic release. For example, today is a GDP release date
then buy. You can also test the numeric value of the release. GDP > 2.5% then buy. Quite a bit of
flexibility here, but I have made notes about the ‘scale’ of the numbers in each release as many have
different units.
Most are in the scale they’re reported in. For example, Treasury auctions are quoted in percent. GDP is
also quoted in percent. So is Durable Goods, PPI, CPI, FOMC, Redbook, Industrial Production, Export
Price Index, Factory Orders
Jobless Claims are quoted in the thousand. 282K is displayed as 282 in our data. The historic print on
March 26, 2020 of 3283K or 3,283,000 is quoted as 3283
Housing Starts, Existing Home Sales, EIA Petroleum Inventories and JOLTS job openings are quoted in
millions. 1.599M or 1,599,000 is quoted as 1.599 in our data
Consumer Confidence, Consumer Sentiment, ISM, Empire State Mfg Survey, Chicago PMI are all in their
raw values as reported.
Market Breadth
Percentage of Stocks Up – this is the number of SP500 stocks expressed as a percent that closed higher
each day (0 to 100)
Percentage of Stocks Down – this is the number of SP500 stocks expressed as a percent that closed
lower each day (0 to 100)
NYSE Adv-Decl is the total number of advancing NYSE issues or declining issues expressed as a
percentage of total number of NYSE issues (0 to 100). ADD 74% means 74% of stocks are advancing
Signal Glossary and User Guide
No. 52Wk Highs – count of the stocks making a 52 week high each day (values 0 to 100+)
No. 52Wk Lows – count of the stocks making a 52 week low each day (values 0 to 100+)
Percent SP500 Abv XXMA – Percentage of stocks in the SP500 above their XX moving average (0 to 100)
Percent SP500 Bel XXMA – Percentage of stocks in the SP500 below their XX moving average (0 to 100)
Contango1-2 is the percent difference between the front month and the second month vix futures
contract. Contango1-2 of -10 means the second contract is more than 10% below the first contract. You
can see a Vix in contango of 10% starts to show significant more volatility in the SP500 in the next day’s
trading. These signals can be great filters for volatility regimes but do your own testing!
Treasury Yields
TSY_1MO means the yield on the 1-month duration US treasury bill.
TSY_10-2s means the 10YR yield minus the 2YR yield. It is a popular quantified approach to summarize
the yield curve. It too can signal different volatility regimes. This value is also expressed as a percent.
Signal Glossary and User Guide
This signal in Build Alpha would represent the red line in the above graph
Option Data
GEX is Gamma Exposure and is another volatility regime filter that can be applied. To read more about it
please check this white paper here: https://squeezemetrics.com/download/white_paper.pdf
DIX
DIX is Dark Pool Index and is another metric taken from the aggregated stock issues. The Dark Pool Index
aggregates the short sale volume on all 500 S&P stocks. This is a dollar weighted ratio of dark pool
buying to dark pool selling.
Changing Parameters
Signals with a ‘P’ next to them indicate they are parametric signals and can be adjusted to the user’s
considerations. You can also access all parametric signals by changing the Signals Filters Dropdown.
To change parameters, please click and expand a group. Click on the signal of choice. Please note the following
syntax.
N = length
V = value
Signal Glossary and User Guide
O = offset
RSI(N)[O] > V can also be read as RSI(2)[0] > 75 which in plain English is the current bar’s two period RSI is greater
than 75.
To create permutations of this rule here is how we can set it up in Build Alpha’s main GUI
Notice the base rule in the top right of the image. We have selected (via check mark) this base rule as an entry. We
have created Offset values of 0,1,2,3,4,5,6,7,8,9,10.
Even though Build Alpha only has 1 parametric entry selected in the Signals selection statistics please note that
when you hit simulate Build Alpha will be able to create ALL the possible combinations of your inputs of O,V and N.
Signal Glossary and User Guide
Custom Signals
To create custom signals, you can hit File->Custom Indicators or hit F4 from the main interface. This will bring up a
new window in which you can create from drop down lists or using Python. For Python signals, please visit
buildalpha.com/python or watch the related video at the video training page.
You can create Boolean (true false signals), comparative signals, cross over signals or ‘trigger’ signals.
A trigger signal is a combination of two signals that occur within N bars of each other. A simple example is we close
above the upper Bollinger Band and then within 10 days we close below the middle moving average of the
Bollinger Band. To create this signal and a visual example you could do…
Build Alpha always uses $Vix.x as data2 in TradeStation Easy Language code. Build Alpha always displays Easy
Language code so market2 symbols will show ‘data3’ and market3 symbols will show ‘data4’. For further
information please read the next section.
The Quantopian Python code uses slightly different indexing. For example, in Build Alpha a signal like Close[0] <
Close[1] signifies the current bar’s close is less than the previous bar’s close. Quantopian/Python takes the value
inside the square brackets and multiplies it by negative one and then subtracts one from it. The conversion would
be C[(0 * -1) -1] < C[(1*-1)-1] or simply translated to C[-1] < C[-2]. Build Alpha’s automatic code generator takes
care of this conversion for you, but it is important I point it out before you think the generate code feature is not
working properly!
Note: TradeStation currently does not like our weeknumber of CompositeRSI functions. I do not want to make an
adjustment to our code generator just for these two functions. If you have a strategy -that generates a signal that
uses either o these functions MORE THAN ONCE then please edit the code to this after copying to TradeStation.
Condition1 = weeknumber <> 3 and weeknumber <> 1 and close[0] > close[2];
-TO-
Value55 = weeknumber;
Condition1 = value55 <> 3 and value55 <> 1 and close[0] > close[2];
We are trying to avoid calling these two functions twice in the same code until we can find a better solution.
Signal Glossary and User Guide
2. Intermarket strategies in NinjaTrader require us to add one line of code for the markets used into the
code. I can not do this through Build Alpha because some providers have different symbols for the same
markets. For example, if we create a strategy inside Build Alpha that traded GLD and used SPY as Build
Alpha’s market 2 we would generate NT8 (or 7) code that had this line:
// AddDataSeries(“^Vix”,BarsPeriodType.Day,1);
Signal Glossary and User Guide
We will need to remove the two forward slashes at the beginning of the line. Then add a new line directly below it
for our second (and if necessary third) markets from Build Alpha. Even if your strategy does not have any Vix
signals still include this line at the top! Below is the finished code for adding SPY daily data.
AddDataSeries(“^VIX”,BarsPeriodType.Day,1);
AddDataSeries(“SPY”,BarsPeriodType.Day,1);
If you cannot find this line in your code please hit ctrl+f to bring up the ‘Find’ feature and type in ‘Vix’ then hit
enter and Ninjatrader will move your cursor to the correct line.
Long story short, make sure the symbols are correct for your data provider if using intermarket signals in a
strategy.
Signal Glossary and User Guide
This pertains to intermarket strategies that use market’s 2 and/or 3. There is a line of code in the generated MT4
code produced by Build Alpha that has the strategy’s performance and other information. It will look similar to
this:
"H4<O9 L>L3 Nop Nop ENDENTRY ENDEXIT 25635.972 3561.993 137 0.606 618.964 476.630 568.502 481.943
1.996 1.299 1.570 0 0 0 0 0 2.000 2.000 5 50 1 GBPUSD 1440 0000 2359 1700 9999999 -9999999 999999"
The section highlighted and bolded in red is Build Alpha’s market 2 and the timeframe it should be. 1440 is used
for daily. If you use custom data or it says GBPUSD 0, for example, then please change 0 to 60 if you used 60
minute charts or change the 0 to 30 if you used 30 minute charts, etc.
If you use both market 2 and market 3 then please change both. Here is an example below:
"O>O3 sprd1hlcHLC3 Nop Nop 24959.989 2367.986 130 0.577 667.066 455.817 646.855 384.918 1.996 1.463
1.685 1.77640097421236E-14 0 0 0 0 2.000 2.000 5 50 1 GBPUSD 0 EURAUD 0 0000 2359 1700 9999999 -
9999999 999999"
For example, let’s assume this strategy was built using GBPUSD 60 minute and EURAUD 120 minute data so please
change the 0’s in this line of the generated code to 60 and 120 respectively when you copy and paste it into MT4.
Signal Glossary and User Guide
Here is an example of the Build Alpha generated Pro Real Time code that uses a custom signal called myHurst.
Indicator1 = month <> 9
Indicator2 = Close[0] crosses under average[3](close)[0]
Indicator3 = myhurst[0] <= .35
Indicator4 = close[1] <= open[2]
indicator5 = indicator1 and indicator2 and indicator3 and indicator4
Now we must import our custom hurst function first. To do so open the code editor and select import ->
desired function.
Signal Glossary and User Guide
Once that is finished, we can copy and paste our Build Alpha code into a new strategy in PRT. Once
we’ve done so we need to add our “function CALL method” to make this custom (“my”) function work.
Click above indicator one so your cursor is above indicator one. Then hit the F(x) button above…
Then type in the function you need. It should be whatever the displayed signal is minus the “my”. In this
case, myhurst becomes hurst.
Signal Glossary and User Guide
Finally, PRT will automatically add this line of code to our Build Alpha code when we select the “Add”
button. It will look like this in the code afterwards – and at this point we’re good to hit the backtest
button in the bottom right.
Signal Glossary and User Guide
Signal Glossary and User Guide
To create a custom strategy import file please use the following format.
The first date and time are the entry timestamp. The second are the exit timestamp. Here is an image of
a correctly formatted file.
Strategyname is arbitrary and what will show in the BA results window. Please avoid spaces and special
characters.
Then make sure the Use Custom Strategy setting in the Services->Settings menu is set to Yes.
Signal Glossary and User Guide
Then File->Custom Strategies->Add-> Select your file. Then the strategy will be imported after you run a
simulation for the symbol and direction in the first line of your custom strategy file.
Note: You can have more than one strategy in one file as long as they are separated by unique header
rows (first line above).
Signal Glossary and User Guide
ERATIO
There are a few videos and blog posts regarding E-Ratio. The important thing to recognize is that both long and
shorts are favorable above 1.00. One of the videos says shorts are desirable when they are under 1.00 but please
realize this is wrong and has been updated. BOTH long and short E-Ratio should be desired above 1.00 now.
Remember when exporting multi timeframe strategies you need to make sure your charts in which ever platform
you’re using for execution are set up properly. For example, see the first note of this guide regarding Vix data.
Please note that if this is on and you exit at say 17:00, for example. If there is another bar at 17:45 and your entry
signal is true, then the software will enter again! If you want to create a system that only trades from 9:00 to 17:00
then you can right click on that time signal to require the software to use this rule and then also select force end of
day exit at 1700.
Signal Glossary and User Guide
Portfolio Mode
When adding strategies to portfolio mode you may notice “different” results. Strategies added to portfolio mode
are saved using daily marked to market results as opposed to all the individual trades. This is typically industry
standard to view a portfolio of strategies in this format and also allows the software to save on some
space/memory consumption.
The P&L and drawdowns will be the same, but for example an individual strategy with a winning percentage of
65% might have a different winning percent in portfolio mode. This is because instead of looking at the trades
individually we are looking at the number of profitable days!
For example,
Day 1 has 3 trades. +50, +75, -35. The individual strategy will show a winning percentage of 67% (2 wins / 3 total
trades)
Day 1 +90 and if we only traded on this day the winning percentage when viewed in portfolio mode would show
100% because 100% of the days were profitable. Again, this is done to save space, reduce memory consumption,
and combine strategies of multiple timeframes/frequencies.
Signal Glossary and User Guide
Optimization
The green box shows how you can change from entries, exits and standard exits. Select one and it will be
highlighted in blue. You can then edit the possibilities in the right table.
Notice the red circle. This is the initial value where the optimization algorithm will begin searching. It is NOT a step
value like the main Build Alpha interface.
You can also optimize across noise adjusted samples. Notice the blue arrow. In this example, we will add 0 samples
to our original price data to optimize across.
Signal Glossary and User Guide
Name: When possible please set name to the same symbol as the built-in data when possible. This is
how Build Alpha knows what tick increment and rounding to use.
Timeframe: Not really used but how you can make repeated symbols unique. This can be any type of
alphanumeric text.
Example: If importing ES 15 minute data then you’d enter the Name as ES and timeframe as 15 or fifteen
or xlyxlu15 (doesn’t matter).
The CM is contract multiplier and is simply the big point value of the futures contract. For crypto, FX,
stocks and ETFs you can leave this at 1. If using default position sizing, you can set multiplier to be your
desired size. Here is a reference for big point values for futures markets:
https://www.barchart.com/futures/contract-specifications
Signal Glossary and User Guide
Margin is the initial margin for futures market and is used in the position sizing calculations (explained
below). There is a margins.csv file in the data folder you can reference but it is wise to set this based on
what your broker sets. For example, ES margin is currently 6380 to trade 1 contract. Note: this margin is
different than forex margin. For FX, ETFs, Crypto, or other you can leave this at 1.
Type: Please choose the appropriate type between Futures, ETFs, Forex, Crypto (fractional sizing
allowed), and other.
Here is a built-in file showing the correct/current format for custom data. Please note the open interest
column. If your data does not have open interest data, please add a column of all 0s or some dummy
value (99999).
PLEASE WATCH THE VIDEO “Adding Custom Data” on the buildalpha.com/demo page for more
instruction.
Signal Glossary and User Guide
Data Differences:
Some platforms report data differently. This can be very dangerous when backtesting IF you are unaware. When
trying to replicate results across platform please ensure your data is matching. Build Alpha’s data will purposely
attempt to replicate TradeStation’s data as the most of Build Alpha user’s use TradeStation. For example, look at
this example from Aug 04, 2016 (yellow arrows) comparing TradeStation data to NinjaTrader8 data. You can see
TradeStation does not make a lower low on Aug 4. However, NinjaTrader does. So when concerned about
mismatching results please always, always check for data differences!!
Signal Glossary and User Guide
Filtering Trades vs. Including the ‘extra’ rule from the beginning:
Build Alpha allows us to look at our results and then right click on any strategy to ‘add an additional rule’. This can
be helpful when you notice a strategy does very poorly in the month of November. It might be smart to add a rule
to eliminate trading in November (month(date) <> 11). However, Build Alpha is not resimulating this strategy but
simply removing trades that meet this ‘added’ condition. There is a big difference between resimulating and
filtering. Here is an example below. This difference can cause strategy code with ‘additional added rules’ to look
different when you export the code into platforms (which would be ‘resimulated’ in the other platforms vs. Bas
filtering). However, going forward both will produce the same results on new data (regardless of filtered or
resimulated) but there can be differences in backtests because of this nuance.
For example, imagine a strategy that below that has entry signals on bar 1,3,4,5,7 and holds for 2 days.
Trades would be
Entry bar 1
Exit bar 3
Entry bar 3
Exit bar 5
Entry bar 5
Exit bar 7
Entry bar 7
Exit bar 9
Now imagine if we just "filter" it to not trade on the 3rd bar. Filtered trades (from our existing list – what BA does
with ‘add a rule’ feature) will now be
Signal Glossary and User Guide
Entry bar 1
Exit bar 3
Entry bar 5
Entry bar 7
Entry bar 7
Exit bar 9
Now imagine if we include the "exclude bar 3" rule from the start (and re-simulate the entire strategy) we'd have
trades
Entry bar 1
Exit bar 3
Entry bar 4
Exit bar 6
Entry bar 7
Exit bar 9
See how it can be different depending on when you add a rule (from the start or add as filter after simulation)
Signal Glossary and User Guide
Position Sizing
Currently, there are three position sizing methods in Build Alpha. They are all configurable through the setting
menu.
1. Default
2. Fixed Dollar
3. Volatility Based
Default method will buy 1 futures contract, 100 shares of ETFs or stocks, and 100000 FX (1 lot).
Fixed dollar simply buys a user specified dollar amount each trade. The benefit of this is to make apples to apples
comparisons of trades that happen from an asset that has gone a large change in price. For example, buying 100
shares of stock XYZ when it was $10 is not the same thing as buying 100 shares when it trades at $200.
Users can set the fixed dollar amount by setting the account value in the settings menu. Setting the account value
to $1000 would purchase 100 shares of the $10 stock and 5 shares of the $200 stock. Both positions would control
$1000 worth of stock.
Volatility Based sizing allows position sizes to vary inversely to market risk (volatility). That is, as volatility
increases, we dynamically reduce our exposure. The formula for the equation is below. The 1% is arbitrary and will
be expanded in future updates.
Please note that systems with a stop loss turned on (e.g., 2 ATR stop) will multiply ATR by the SL multiple in the
above equation to further reduce the risk. If system does not use a stop then a default of 1 ATR will be used.
In the example below, the same system is shown. The left-hand side uses the default setting whilst the right hand
side uses the volatility method. The volatility method has reduced the drop from the peak equity by almost 40%
from 31.98% to 19.48%.
Signal Glossary and User Guide
Note: Any position size calculated to be less than 1 will be traded as a 1. For example, calculate position size to be
.94 contracts then we will trade 1 instead of skipping the trade. This has been debated and settled as best practice
between a group of respected beta users. If you have objections or want this configurable please EMAIL me. Thank
you.
Position_size(market,mode,account,margin,atr,sl_mult)
Mode: “ATR”,”Fixed”,”Default”
SL_Mult: this is pre set by BA and will default in the code if you did not use SL in BA.
Signal Glossary and User Guide
Fixed method: XXX + account currency where XXX is the first pair in the traded pair.
Example: Account is USD and trading EURGBP. The 5th data stream needs to be EURUSD
Volatility method: account + YYY where YYY is the second pair in the traded pair
Example: Account is USD and trading EURGBP. The 5th data stream needs to be USDGBP. Since most do not have
that please insert GBPUSD and the code will handle the rest.
Here is a photo of 5 data series on one chart to make FX sizing work with Easy Language. Notice $VIX.X is second
data stream. It is always included in the BA pre-built signals. If you do not USE vix signals in your strategy or do
NOT have vix data from your provider, please put a dummy symbol in its place like ‘AAPL’ or the same as the
primary symbol (in this case EURGBP).
Then data 5 is based on the conversion for ‘Fixed’ method above. If this strategy used volatility sizing then data 5
would be GBPUSD.
Signal Glossary and User Guide
Fixed method: XXX + account currency where XXX is the first pair in the traded pair.
Example: Account is USD and trading EURGBP. The pair we need for conversion is EURUSD
Volatility Method: account currency + YYY where YYY is the second pair in the traded pair
Example: Account is USD and trading EURGBP. The pair we need for conversion is USDGBP. Which does not exist for
most platforms. So, we just use GBPUSD and it will convert in the code on its own.
Once we have the pair, we need for proper conversion we must add it to the code. Build Alpha should set it on its
own but if not please follow below. Let’s say we need to add EURUSD to our EURGBP strategy using Fixed method
of sizing. Here is how with photos…
Signal Glossary and User Guide
Step 1. Uncomment additional data streams. If your strategy does not use intermarket signals or multiple
timeframes please uncomment these anyways to all symbol_4 to be used for currency conversion.
Step 2. Put the appropriate conversion symbol as symbol4 in the strategy settings. If it is not already set by Build
Alpha.
Signal Glossary and User Guide
Rebalance Strategies
These are strategies that rank a basket of securities based on a user defined metric at a user defined period and
then apply the trading strategy to only the top (or bottom) ranked N symbols in the basket. You can configure
these metrics in the Services -> Settings Menu
The above example would trade the top 2 symbols based on a ranking of monthly profit factor. Let’s say we have 4
symbols: SPY, TLT, GLD, USO. Each month we calculate each’s profit factor. In the next month, we would only apply
our strategy to the two symbols with the highest profit factor. Next month we will re-rank and do the same.
You can change the strategy type in the upper left of the main Build Alpha interface.
Signal Glossary and User Guide
Then place this file in your C:/Program Files (x86)/TradeStation 9.5/Program/ folder
Then please watch the video over at buildalpha.com/video with the correct password
Please note these strategies cannot be backtested in either TradeStation or MultiCharts. They can only be live
traded.
MT4 cannot backtest these strategies and can only trade them live.
Ensemble Strategies
These are strategies that use other strategies as input signals. Think of this as creating a voting system. Strategy A,
B and C each get one vote. If two of them say long, then the Ensemble strategy will go long. To use strategies as
input to new strategies please use the dropdown menu above entry signals and select which strategies to include
in the simulation (remember you can name the strategies in portfolio mode by double clicking on the name)
Signal Glossary and User Guide
To see how to set up Ensemble strategies in each platform please watch the appropriate video at
BuildAlpha.com/video
*note: at this time Pro Real Time cannot support Ensemble strategies. MT4 and Ninjatrader have slight difficulties
with backtesting these strategies but do not require any additional files/documents for set up*
Exit Signals
Exit signals can be selected by switching over to the Exit Signals tab (white when selected). Once exit signals are
selected the count will appear to the right of the plus sign (note the green box).
Signal Glossary and User Guide
In the settings menu there are 4 options: None, Single, Best, All
None: This will not use any exit signals in simulation mode even if some are selected
Single: This will use the BA strategy engine and only apply one exit signal per strategy. It will still use other exits if
configured (PT, SL, HH, LL, Max time and profitable close). It only applies one ‘signal’ exit per strategy.
Best: This will use the BA strategy engine and apply the best combination of exits per strategy. This can use any
number of exit signals per strategy. Note this also has the LONGEST processing time as the search space is
significantly larger!
Signal Glossary and User Guide
All: This will use the BA strategy engine and apply all selected signal exits to each strategy. So every exit selected
must be true in order to force an exit. This is more for testing specific ideas and hypothesis testing as opposed to
rapid prototyping.
The normal simulation button (left) runs the original Build Alpha strategy engine which intelligently reduces the
search space in attempt to find the best strategies with a [more] strict convergence point – point in which no
better strategies can be created within reasonably avoiding excessive chance of overfitting.
The continuous simulation button (right) runs non-stop until the user chooses to pause or stop the simulation. BA
can be left endlessly, and Build Alpha will continue to generate strategies (only showing best by fitness). It will not
stop once convergence (point no better strategies can be found reasonably) is met as some believe it is worth to
keep pushing for better and better evolution. The user can monitor, view and run other Build Alpha features while
continuous simulation is running, paused or stopped.
To pause or stop a continuous simulation please notice the two options in the top left of the output window:
Please also note you can configure maximum entry rules and maximum exit rules to be used during continuous
simulation with a separate setting in setting menu:
The above allows BA continuous simulation to build strategies with UP TO 5 entry rules and UP to 2 exit signals
(plus other exits SL, PT, Max time, Profitable closes, HH, LL).
The “Maximum Number of Rules Per Strategy” setting above is for the original Build Alpha strategy engine which is
utilized by hitting the ‘Simulate’ button as opposed to the Continuous Simulation button.
Signal Glossary and User Guide
All Links
---------------------------------------
https://www.dropbox.com/s/awhuj1jdl8kldcf/Release_AxiomFutures_TradeStation_setupv1.exe?dl=0
https://www.dropbox.com/s/k41pi622xxya1ie/BuildAlpha.ELD?dl=0
https://www.dropbox.com/s/73m9w31v5h6tre1/Release_AxiomFutures_MultiCharts_setupx.exe?dl=0
https://www.dropbox.com/s/k41pi622xxya1ie/BuildAlpha.ELD?dl=0
https://www.dropbox.com/s/1wzzyrwccfo1kir/Release_AxiomFutures_NinjaTrader8_setup.exe?dl=0
https://www.dropbox.com/s/qrnk7yrt8wqu8ei/BuildAlphaNT8.zip?dl=0
https://www.dropbox.com/s/wxxgaotsz180klc/Release_AxiomFutures_MetaTrader4_setupv1.exe?dl=0
https://www.dropbox.com/s/o47hfnwhk0vi0me/CStrategy_v2-15.mqh?dl=0
Signal Glossary and User Guide
https://www.dropbox.com/s/5q7ho2bj5fwwc9z/PRT.zip?dl=0
https://www.dropbox.com/s/91nuiqrq9bn7vu2/GlobalVariable.dll?dl=0
https://www.dropbox.com/s/u0s699njlpydhxr/TS_ADE-ELC_Installer2.01.exe?dl=0
https://www.dropbox.com/s/2edmd76exlza97b/AllDataEverywhere.ELD?dl=0
DATA/TS_ADE-ELC_Installer2.01.exe
https://www.dropbox.com/s/ulxsjr6ysvil111/ELCollections.dll?dl=0
• Ensembles in Ninjatrader
• Rebalance Strategies in TradeStation
• Rebalance Strategies in Ninajtrader
• Rebalance Strategies in MetaTrader4
• Hedging Strategies
• News and Holiday Signals
• News and Holidays in TradeStation
• News and Holidays in Ninjatrader
• News and Holidays in Metatrader4
• News and Holidays in Pro Real Time
• Optimization and Sensitivity Analysis
• Noise Test Parameter Optimization