TSCI.pngTSIntraSentimentscape (TradeStation)


This analysis technique generates a series of intraday sentiment-augmented tradescapes (sentimentscapes) with different bar spacings. A reduction algorithm is used to generate the different data sets. This type of intraday series is useful for identifying the bar density that offers the most useful time horizons for trading. This procedure generates two-stage sentimentscapes where the traded entity is signaled directly for the primary entries and exits.

Sentimentscapes are tradescapes that have been filtered by a separate sentiment filter. In such a filter, a target sentiment entity is processed at a specific time horizon, the sentiment length, to produce windows in time where only long or only short trades are permitted.

In a sentimentscape, the traded entity is used for the primary signal and the sentiment entity is used to generate the long-short sentiment signal. Both the sentiment and primary signals are lagged at the same lag fraction for each point in the tradescape surface. The sentiment signal is symmetric with respect to the information content used to generate the upside and downside transitions.

The primary trading signal can optionally be asymmetric. This is useful for entities that have very different behaviors relative to entries and exits. In a symmetric tradescape, the same time horizon is used to generate both the upside and downside transitions. In an asymmetric tradescape, separate time horizon signals are used for generating the upside and downside transitions.

This procedure is designed for 1min, 5min, or 10min bar intraday input data. The reduction series are generic, however, and will be applied to any density of bars in the input data series.

int TradedEntity (1)

This input specifies a specific data stream to be analyzed. The value 1 uses data1, 2 uses data2, and so on. For this procedure a single data stream must be specified. The TradedEntity is signaled directly for the primary entries and exits.

int SentimentEntity (2)

This input specifies a data stream that is processed to create the positive sentiment windows where only long positions are permitted, and the negative sentiment windows where only short positions are allowed. For sentimentscapes, a specific SentimentEntity must be specified.

The SentimentEntity can be any entity that reflects the sentiment associated with the traded entity. In sentiment-augmented signaling, the entity to be traded can be different from the entity used for the sentiment signaling. When this is true, the SentimentEntity is usually an overall market index or a surrogate for such, or a sector index or ETF. When the SentimentEntity is the same as the TradedEntity, the sentiment signal draws its sentiment states from the wide-sense or more global behavior of the entity and the primary signal from a more local behavior of the entity.

int SentimentLen (80)

This is the EM Length of sentiment signal for the reduced data series. Typical values range from 20-80. The higher the value, the longer in time the long-only and short-only windows will be. This value cannot be set to less than 10.

The SentimentLen sets the time horizon for the wide-sense sentiment signal. Note that no sentiment filtration occurs if the EM length in the sentimentscape is equal to or greater than the SentimentLen. If the sentiment filtration is particularly effective, there can be an abrupt or sharp transition in the surface near the SentimentLen.

The lag added to the sentiment signal for each point in the surface will be identical in lag fraction to the lag for that point in the tradescape surface. For example, if the point in the surface has an EM length of 20 and a lag fraction of 1, and the EM length for the sentiment filter, as specified in SentimentLen, is 80, the idealized primary signal is offset by a lag of 20 and the idealized sentiment signal is offset by a lag of 80.

double Asymmetry (1.0)

The asymmetry is the ratio of the information content used for the upside transitions (turns to the upside) relative to the downside transitions (turns to the downside). A quick to enter but slow to exit long signaling system has an asymmetry less than 1. A slow to enter but fast to exit signaling system has an asymmetry greater than 1. Typical signal asymmetries are between 0.25 and 4. The turtle HH=55 LL=20 breakout system is an example of an asymmetric signaler, one that for long trades is slow to enter and fast to exit, a signal asymmetry of 55/20=2.75.

Asymmetry must be between 0.1 and 10.

In the tradescape plot, only a single EM length is used for the X axis position. The interpretation of an EM length of 20 would be as follows for an asymmetry of 0.5. The EM signal used to generate the upside transitions (the entries for a long system) will be 20*sqrt(0.5)=14.142. The EM signal used for the downside transitions (the exits for a long system) will be 20/sqrt(0.5)=28.284. The asymmetry is thus 14.142/28.284=0.5. While the point on the tradescape is plotted at an EM length of 20, the actual lengths used to generate the turns for the composite EM signal are 14.142 and 28.284. Note that the EM length assigned to an asymmetric signal is not the average of the two lengths.

Note also that an asymmetry of 1.0 generates the standard (symmetric) tradescape.

int Reduce (3)

The reduction series for a Reduce setting of 1 is designed for 1 min bar input data. The preset reductions produce a 16 tradescape array with 1, 2, 3, 4, 5, 6, 10, 13, 15, 26, 30, 39, 60, 65, 78, and 1440 min bars.

The reduction series for a Reduce setting of 2 is designed for 1 min bar input data. The preset reductions produce a 9 tradescape array with 5, 6, 10, 13, 15, 30, 60, 65, and 1440 min bars.

The reduction series for a Reduce setting of 3 is designed for 1 min bar input data. The preset reductions produce a 4 tradescape array with 5, 10, 30, and 1440 min bars. This is the default setting.

The reduction series for a Reduce setting of 4 is designed for 5 min bar input data. The preset reductions of [1, 2, 3, 6, 12, 288] produce a 6 tradescape array of 5, 10, 15, 30, 60, and 1440 min bars.

The reduction series for a Reduce setting of 5 is designed for 10 min bar input data. The preset reductions of [1, 3, 6, 144] produce a 4 tradescape array of 10, 30, 60, and 1440 min bars.

Since the closing bar of a session is always included as a reduction point, the 1440 setting will generate EOD (end-of-day) data for all markets, including the 24 hour markets.

Please note that an intraday tradescape does not adjust for missing bars in the raw input data stream. There is no replicate bar generated to fill in the time sequence. When such a condition is present, the reduction will work with the count of bars specified and again, no replicate points will be generated to fill in missing bars. If 1 minute raw data is used and there are bar data present only at every other minute in time, then a reduction of 10 will result in processing 10 bars that happened to occur across 20 minutes of time.

String FileName ("")

The data within the TradeStation chart is written to a disk file that is used in a separate procedure to generate the plots and analyses. If FileName is empty, , a temporary binary data file is used to store the data and this file is automatically deleted when the window is closed. If a full path filename is specified, a persistent ASCII CSV file is written. A full valid Windows path and filename must be specified. The directory path will be created if it does not currently exist. Since a comma separated value (CSV) file is written, a CSV file extension is recommended. For example, a FileName such as "c:\data\a1.csv" is valid, even if the folder c:\data doesn't yet exist.

int WalkFwd (98280)

This is the count of raw bars, from last non-reserved bar backward in time, to use for the analysis. In order to accommodate all of the time horizons in a tradescape, there must be at least 250 bars after the specific reduction. Since all of the preset reductions default to US EOD data for the last reduction, there needs to be at least one year's worth of data present to fully accommodate all of the tradescapes in the matrix. If WalkFwd is less than a year's data, the impacted tradescapes will not be generated.

Please note that this analysis is fully done in memory and that very high WalkFwd values can consume a lot of RAM during the processing. For example, a 10yr analysis of a US security using 1min bar data and a Reduce setting of 1 will have one tradescape that processes each of the 982,800 bars. That is nearly 1 million bars of data; in order to process, about 600Mb of RAM is needed. If you do not need this high bar density analysis, a Reduce setting of 2 will give most of the same information, will be far faster, and the most memory-intensive of the tradescapes will require only about 1/5 the RAM.

For 1min bar data with a 6.5 hour trading day, 1 year is 98280 bars, the default for the WalkFwd value.

int Reserved (0)

This is the count of most recent bars to reserve for any walk-forward you may wish to independently carry out. These data are disregarded in the analysis. A value of 0 processes all data through the most recent bar.

int DoShort (0)

A tradescape is normally a long-side only analysis. This value can be set to 1 to perform short side tradescapes and signal analysis.

int Degap (0)

This option removes all overnight/weekend gaps in data for instances where positions are always closed prior to a trading session's closing bar.

If Degap is 1, a check is made to see if the same day fraction of data is greater than 80%. If this criterion is met, as with hourly or finer bar densities, the gap across days is mathematically removed. The price activity from the prior day's closing bar through the end of the first bar of the next day will be zeroed. This means the two bars will share the same closing values. The adjustment is based on the differential in closing prices and is applied to the open, high, and low values as well.

The adjustment is made backward in time so that the most recent bar's close will be the current price. The removal of gaps moving backward in time can result in negative prices. In such an instance, the lowest low in the de-gapped data will be set to 0.01 and all prices will be shifted accordingly.

int InactiveAtLastBar (1)

When this variable is non-zero, the last bar in the chart will automatically trigger the computation and deactivate the analysis. A progress bar is normally drawn, but if this proves a distraction, it will be omitted if this value is set to 2. If set to 0, the analysis will not take place until the Status is toggled Off in the Format Analysis Techniques option.