General Questions

What are Elliott waves?

We have an entire page including two videos on that!

What is EWAVES?

EWAVES is the highest quality Elliott wave engine in the world. Many of its analyses look like they were done by a human expert. But as an algorithm, it can analyze an essentially unlimited number of markets.

EWAVES’s secret sauce is that it has been trained on a massive database of carefully vetted, real world historical Elliott wave patterns. It then leverages the statistics derived from these patterns for real-time analysis.

EWAVES ranks markets by elliotticity to determine which have the clearest unfolding patterns. Elliotticity is a statistically significant stylized fact in financial markets, which will be featured in a forthcoming academic paper “Using the Elliott Wave Model to Distinguish Real from Randomly Permuted Financial Returns”.

EWAVES Live is also the world’s first Elliott Wave search engine. Its Wave Finder allows the user to scan across markets for the most reliable Elliott wave trading setups. Users can select from a list of built-in templates, or customize their own setups with flexible queries.

We recommend users have some knowledge of the wave principle, though deep knowledge is not required because EWAVES does all of the analysis work for you.

What markets does EWAVES Live cover?

The individual-investor version of EWAVES Live covers all S&P 500 individual stocks. Additional markets may be added over time.

The institutional version of EWAVES Live currently covers all the markets that our data provider (Trade Navigator) offers (listed below). If you need additional coverage, please email us at info@ewaves.com.

When do the EWAVES Live charts update?

Our current data provider (Trade Navigator) makes data available for EWAVES at around 9:30 PM. We start the EWAVES analysis process immediately thereafter, which takes about 5 minutes for the individual-investor EWAVES Live portal, and about 45 minutes for the Institutional EWAVES Live portal.

All charts and associated data files are updated simultaneously in an atomic manner. If you are using the site at the time the update completes, an alert will appear instructing you to refresh your browser window, in order to view new charts.

If you wish to know how up-to-date a chart is, each chart displays the date of its last data point in (1) its copyright date and (2) the last date on its horizontal date axis.

How do I interpret the labels on EWAVES Live charts?

The labels mostly use the labeling convention described in Frost & Prechter’s book Elliott Wave Principle. Impulses and diagonals use 1-2-3-4-5, zigzags and flats use A-B-C, and complex corrections use W-X-Y.

The only slightly unusual labeling are triangles, which are lowercase a-b-c-d-e. This distinction is important for two reasons:

(1) The internals of triangle waves “a” and “b” resemble the internals of flat waves “A” and “B”, so we require different labels for disambiguation. No other pattern has this issue.

(2) Sometimes, in the Wave Finder (an Elliott wave search engine; see “Wave Finder” section below for details), you may want to specify “the last wave of a correction,” which would be “C” for a zigzag or flat, but “e” for a triangle.

Why does EWAVES’ analysis sometimes differ from a particular human analyst’s opinion?

EWAVES’ wave counts will not necessarily align with any particular analyst’s market opinion. Users may review its analysis in isolation or seek to incorporate it with other sources or tools.

Why do some waves not subdivide in an ideal manner?

The reflection of social mood in freely traded markets is imperfect. Therefore, it is generally not possible to label Elliott waves without incorporating some subwaves that do not subdivide cleanly, or that appear to subdivide in ways which do not match their context.

Additionally, all market data formats contain artifacts, making the internal wave structure impossible to discern over short-term intervals. For example, a beautiful five-wave structure on an hourly chart may appear as a three-wave structure when looking at the corresponding daily bars.

To allow EWAVES to count real world data, it is allowed to “squint” over data segments in much the same way that human practitioners do. The resulting waves simply have no internal structure, i.e., they are of an “unknown” type. Their meaning comes from the larger context in which they occur.

Will EWAVES Live’s market data match what I’m seeing on another platform?

EWAVES Live identifies the data provider to the right of each chart’s title. Generally, the data should match that served by the provider precisely. It may or may not match the data served by a different provider.

There are a couple caveats:

(1) For Stocks/ETFs: EWAVES requires split adjustments on equities/ETFs but disables dividend adjustments. It does so for two reasons. First, total returns do not reflect Elliott waves as well as the direct price action. Second, many data providers model dividends using arithmetic adjustments (rather than multiplicative adjustments), which causes back adjusted prices to go negative. Negative prices cannot be converted to log scale for Elliott wave analysis.

(2) For Futures: Leaving futures data as-is does not work, because there are large gaps between successive contracts as a result of differences in the premium/discount of each contract. Attempting to simulate a continuous contract by using arithmetic offsets (the usual method that data providers use) leads to negative back adjusted prices, which cannot be converted to log scale for wave analysis. To better simulate real prices, EWAVES employs a custom back-adjustment scheme, which solves the aforementioned problems. But it also means that the data will not necessarily match the provider’s own back-adjusted prices. The data for the most recent contact will always match.

How much detail does EWAVES taken into account for analysis?

EWAVES considers a massive amount of analysis detail, but it is not unlimited. It focuses the detail on where it’s most needed. The rule of thumb for this is simple: waves that are closer to the present are analyzed with more detail than waves that are in the distant past.

This design decision was done or two reasons.

First, it shifts more processing time to where it’s most needed.

Second, it is sometimes important to not consider every detail of past waves. Sometimes the market moves in ways where the internal structure of the past is no longer valid, and so placing less emphasis on those little details allows the program to be flexible in a way required for wave analysis. For example, a wave that does not exhibit a clear zigzag structure may be interpreted best as an impulse in real time, but in retrospect may be treated as a zigzag if that is the only valid way to integrate it into a reasonable larger wave count.

Detail is also something that must be carefully considered, because sometimes large details and small details are in conflict: a single wave count may not fully satisfy both large and small detail simultaneously. This is addressed carefully in the EWAVES engine by balancing the elliotticity “weighting” of the internal structure vs the bigger picture. It is quite a complex topic because sometimes you actually want the internal substructure to be “glossed over” in favor of the bigger picture, while other times, you want the opposite behavior. Tuning EWAVES to balance between these two different approaches has been difficult and we have reached a point that is a reasonable compromise between the two.

That said, the highest elliotticity waves and markets will be those where the full picture is clear across both larger and smaller details.

Does EWAVES issue buy and sell signals?

No, EWAVES not designed as an automated black-box trading system. 

EWAVES is intentionally developed as a powerful screening tool that enables discretionary market professionals to quickly identify and rank Elliott wave patterns across thousands of markets.  As such, EWAVES incorporates the most reliable Elliott wave trading setups as templates. It also incorporates the ability for the end user to design their own setups.

Given the numerous choices a professional has to leverage EWAVES, results of course will vary from one user to the next.

How does EWAVES change its mind?

EWAVES knows about historical Elliott wave behavior. It doesn’t know specific dates or times, of course. Rather, the aggregate, scale-invariant behavior of historical Elliott wave patterns are encoded into the program as probabilistic tendencies.

Purposefully, however, it has no memory of its own moment-to-moment forecasts. Every new data point causes the program to recalculate the wave count from scratch. This allows EWAVES to “change its mind” on-the-fly.

For markets where the top wave count is much superior to any alternative interpretations, this leads to a stable progression for an Elliott wave.

But, sometimes markets are ambiguous, and therefore there are only small differences between the top count and the top alternative count. When this occurs, the system has a hard time figuring out which is the better count (because they’re both nearly equally good options). This can sometimes result in “flip flopping” behavior between competing interpretations.

The current solution to this is simply to use your own judgement. This is an area of active research to figured out how to best address, but at the moment the core issue is intractable. It may be a matter of simply reporting to the user that some markets, at some time frames, have too much ambiguity for a stable forecast.

Who developed the EWAVES engine?

The engine is developed by Elliott Prechter.

Bio for Elliott A. Prechter, President of Qualitative Analytics

Elliott has been fascinated with technology from a young age, winning at the national level in the Siemen’s Westinghouse Science & Technology competition in high school for building a hierarchical z-buffer renderer. After high school he attended MIT in 2002, and then joined Microsoft after graduating in 2006. His interests pivoted from 3D graphics to financial markets after shorting the banks during the 2008 crash. This led him to leave Microsoft in 2011 to become part-owner of Private Fund Management, a startup algorithmic hedge fund in Las Vegas. There he served as CTO, implementing their proprietary high-frequency trading strategies. In 2013, he joined Elliott Wave International, where he wrote newsletter articles, including a guest issue of The Elliott Wave Theorist in August 2010 where he recommended Bitcoin to subscribers when it was 6 cents. His primary role however was to develop EWAVES, symbolic AI software for Elliott wave analysis. EWAVES was eventually spun off into a separate company, Qualitative Analytics, where Elliott now serves as President. Qualitative Analytics’ tech powers EWAVES Live, an institutional service that provides automated Elliott wave analysis and trade-setup scanning tools on over 10,000 markets.


What is Elliotticity?

Elliotticity is the degree to which a data segment adheres to the Elliott Wave Principle. It varies from 0% to 100%. Each individual Elliott wave spans a data segment with an elliotticity rating corresponding to the quality of its internal structure.

Additionally, to ensure each wave’s elliotticity has a strong meaning, each wave’s elliotticity also includes a modest amount of extra context, i.e. it mixes in some of the elliotticity of other surrounding waves. This makes perfect sense when you consider a wave that has just begun: obviously, the elliotticity of the preceding wave is what you should focus on, because the new wave has virtually no discernible structure yet.

A perhaps unexpected aspect of how EWAVES implements elliotticity is that it is scale invariant. The recent daily picture is given as much consideration as the recent weekly picture, which is given as much consideration as the recent monthly picture, and so on. In this way, elliotticity is as equally sensitive to short-term market activity as it is to long-term market activity. In other words, a wave with high elliotticity counts well at all degrees of scale, from the past to the present.

In past newsletters, we have referred to the elliotticity of the largest wave in a market as the market’s total elliotticity. As a result of time frame invariance, total elliotticity is perhaps the most generally useful single numerical value for ranking markets against one another in terms of Elliott wave conformance. If a market has high total elliotticity, then you should be able zoom all the way in, or all the way out, and the market should adhere well to the Elliott wave model at all timescales.

Total elliotticity is the default ranking method used (if sorting markets by elliotticity) when the Wave Finder is inactive. When using the Wave Finder, the elliotticity value will correspond to the wave that you find, which is much more granular and specific. That gives you the option to focus on shorter-term elliotticity rather than total, which can be more useful when the highest-degree waves are unimportant (which is generally the case, since for example you usually do not care about the multi-century picture).

Is Elliotticity a stylized fact of financial markets?

Elliott Prechter and Sacha Sardo-Infirri, Ph.D have finished research for their upcoming paper, “Using The Elliott Wave Model To Distinguish Real From Randomly Permuted Financial Returns.” In it, they show that EWAVES can tell the difference between real market prices and randomized versions across major markets and indexes like DJIA, Nasdaq, Gold, and even Bitcoin.

The results establish elliottcity as a new statistically significant stylized fact for financial data series. This is a breakthrough in financial market theory. This evidence that financial data follow fractal patterns contradicts the long-held random walk hypothesis.

The following histogram demonstrates the differences in elliotticity between real 1-year chunks and randomized versions thereof (via permutations of fixed-period returns) across all available daily data for the Dow Jones Industrials, Dow Jones Transports, S&P 500, Nasdaq 100, Russell 2000, Spot Gold, the Dollar Index and Bitcoin. All results are out-of-sample by using custom builds of EWAVES that excluded the market-under-test from its database of iconic counts. Of course, much more detailed and granular results will be present in the paper.

Paper Conclusions

Elliott Wave Analysis Validated: The study demonstrated that real financial returns show patterns that conform significantly more to the Elliott wave model compared to randomly shuffled data. This suggests that the Elliott wave model accurately captures statistical aspects of market behavior.

Statistical Significance: The use of EWAVES revealed statistically significant differences (p < 1 × 10^−5) between actual and randomized financial data, supporting pattern consistency across different market conditions. This confirms that market behavior exhibits identifiable patterns, not randomness.

Stylized Fact of Elliotticity: The results establish elliotticity—conformity to the Elliott wave model—as a characteristic of financial market price series, supporting the model’s validity in capturing market behavior.

Consistency Across Data Segments: The model’s effectiveness was consistent across different historical data segments, with no evidence of “model decay”.

Challenges to Conventional Models:

Against Random Walk Models: This study highlights the model’s ability to capture significant non-random patterns in financial returns, disproving assumptions made by random walk and its derivative models.

Against the Efficient Market Hypothesis:The ability to distinguish real market returns from random data provides compelling evidence against the Efficient Market Hypothesis, indicating that market prices are not fully efficient as EMH would predict.

FROZEN VERSION: The elliotticity values in the paper are from a specific frozen EWAVES (version 3.3), and so the specific elliotticity values produced therein may exhibit a different distribution than the current version which uses newer algorithms.

RAW DATA RESULTS NOW PUBLICLY AVAILABLE VIA GITHUB. Visit https://github.com/elliottp6/rvr to view the raw data, which is referred to in the paper.


What are “good” vs “bad” elliotticity values?

Elliotticity values are not percentiles (i.e. a relative rank of wave conformance), but are absolute percentages from 0% to 100% determining how conformant individual waves are to the Elliott Wave Principle. The higher the value, the better.

As of the most recent version of the EWAVES engine (version 3.3.1), you’ll find that waves with elliotticities at or above 40% are of superior quality, with 50%+ absolutely the best-in-class. Below 20% is where waves start exhibiting potentially problematic issues, such as unlabeled substructure.

In theory, Elliotticity could be as high as 100%, but that is only practically possible when using data that is artificially constructed to conform to idealized Elliott waves. Real world data rarely gets beyond 50% conformance. The median conformance is about 20%.

Wave Finder

What is the Wave Finder?

EWAVES Live has a built-in Wave Finder, which is the world’s first Elliott wave search engine. It is a query system for quickly finding currently-unfolding Elliott waves based on precise criteria.

There are several built-in templates that you can use directly to find Elliott wave setups, or you can modify these templates to get started on your own custom setups.

What are the Wave Finder Templates?

Templates make the Wave Finder much easier to use, by having ready-made Elliott wave setups at your fingertips. The templates appear in a drop-down menu just beneath the Wave Finder header on the left-hand-side. You can either use the template directly, or modify it to suite your needs.

Here is an example of the “Zigzag flat (early)” template with a minor modification: instead of requiring wave 4 of C to be broken on the upside, breaking the trend channel formed by wave C is sufficient. This gives us an even earlier entry than the template provides.

Is there a Wave Finder tutorial?

Yes! Go here to watch the EWAVES Live tutorial video. The video describes how to use EWAVES Live, as well as the Wave Finder query system. The video does not mention templates however, as that feature was introduced later on.

What are the Context Waves?

There are multiple types of context waves. The context wave called simply “wave” is the actual wave you’re searching for. It is the wave that will be highlighted by the Wave Finder. Many search queries only involve looking for a “wave” with particular attributes (see section “What are the Wave Attributes?” below for details). For example, to find an impulse wave, you would search for a wave with the attribute “type” set to “impulse.”

The other context waves provide the environment (aka “context”) for “wave”. You may, for example, specify attributes for the “prior” context wave. This is the wave structure that precedes the wave you’re searching for. For example, to find waves that follow triangles, you would add the context wave “prior”, and then require that “prior” have the attribute “type” set to “triangle.”

Another context wave is “parent,” which is the larger wave of which “wave” is a component. For example, if you want “wave” to occur in the context of a larger 3rd wave, you would add the context wave “parent” and then require its attribute “label” to be “3.”

The “child” context wave is the last component wave of “wave.” For example, if you were looking for an impulse wave where its 5th wave was in progress, you would add context wave “child” and set its “label” attribute to “5.”

If you wish to specify attributes for a wave larger than “parent”, the grandparent is called “parent(+1)”, the great-grandparent is “parent(+2)”, and so on. Similarly, the grandchild is called is “child(-1)”, the great-grandchild is “child(-2)”, and so on.

Finally, the “subwave” context wave is an advanced feature. It refers to the currently unfolding child wave at that can be any degree lower than “wave” (i.e. it can be child, grandchild, great granchild, etc). This is useful, for example, if you are looking to enter a 3rd wave using 2 of 3, but you actually don’t care if it’s 2 of 3 or if it’s 2 of 1 of 3, or 2 of 1 of 1 of 3.

What are the wave attributes?
What is the “Type” wave attribute?

The pattern formed by a wave’s internal structure. For example, “impulse” for an impulse wave. You may specify multiple patterns for a wave. For example, if you’re interested in motive waves, you can specify that a wave be either “impulse” or “diagonal”.

What is the “Subtype” wave attribute?

While the “Type” attribute defines the pattern (impulse, flat, etc), “Subtype” allows the Wave Finder to represent additional pattern information beyond just the basic type.

For example, a “sideways” subtype is a pattern that moves predominantly sideways, as opposite to a “sharp” pattern.

What is the “Label” wave attribute?

The position of a wave in a larger pattern. These should be self-explanatory, because they’re mostly identical to classical Elliott wave labels. The one exception is triangles, which use lowercase a-b-c-d-e instead of uppercase. Doing so allows the expression of “the final wave of a pattern” which would require a difference between “c” (part of a triangle) and “C” (the final wave of a zigzag or flat).

You may specify multiple labels for a wave. For example, if you’re interested in motive waves in the final position of a structure, you can specify that a wave be either “5” or “C”.

What is the “Channel Adherence” wave attribute?

Channel adherence measures how perfectly a completed or nearly-completed pattern channels, ranging from 0% to 100%. Many wave finder templates require some level of channel adherence, as it increases the likelihood of correctly identifying a pattern.

Zigzags and double zigzags have a high tendency to form channels from parallel lines. Impulses can also sometimes form channels in this way, though not as often as zigzags and double zigzags.

Flats, triangles, and diagonals do not form traditional channels from parallel lines. However, EWAVES Live still provides a measure of channel adherence for these patterns. This is based on research into the concept of “channeling” in a more abstract way that measures the rate of expansion/contraction of pairs of trend lines (with classic channels being a sub-case where the expansion/contraction rate is zero). The results of this research enable “channel adherence” to provide the same utility for identifying flats, triangles, and diagonals as it does for impulses, zigzags, and double zigzags.


The below example shows a a zigzag purple wave B that exhibits high channel adherence. The 0-B line and the A-C line of the zigzag within purple wave B exhibit nearly perfect channeling. Even red wave ‘a’ and ‘c’ of the triangle hit the 0-B line perfectly. This increases the odds that we have a correction formation. In addition, the fact that B of the zigzag is a triangle increases the odds even further, since these only occur as the first correction within a zigzag or double zigzag. The setup is triggered once price action breaks out of the channel to the upside.

What is the “Break” wave attribute?

“Breaks” are levels that you need the Wave to hit before you want it to show up in the Wave Finder.

This is useful because some types of Elliott Wave setups require a specific price level to be broken before taking action. For example, before taking action against a completed zigzag correction (in anticipation of an impulse in the opposite direction), it may be prudent to wait for additional signs that the zigzag is complete.

An aggressive person may simply take a position without requiring any particular level to be broken, while a conservative person may require Wave B of the zigzag be broken before taking a position. An in-between person may simply want to see the baseline of the zigzag be broken.

Baseline breaks behave differently from other kinds of breaks, because the break must hold. In other words, price cannot break the baseline and then subsequently unbreak it.

What is the “Limit” wave attribute?

“Limits” are the opposite of “Breaks”. While “breaks” are levels you want the wave to reach, “limits” define the levels at which the wave has already moved too far to still be considered a viable setup.

For example, an impulse wave that breaks out of the preceding zigzag’s price channel might be a good candidate to take a look at, but some people may regard it as being “too late” if that impulse has already exceeded the entire price territory of the preceding zigzag.

What is the “Elliotticity” wave attribute?

This is a percentage measure (0% to 100%) describing how strongly a wave’s internal structure, plus a certain amount of its context, conforms to the Elliott Wave Principle. For details see the earlier FAQ question “What is Elliotticity?”. Elliotticity is helpful in identifying high quality waves.

What is the “Linearity” wave attribute?

This is a percentage measure (0% to 100%) describing how line-like a wave is. 100% would be a perfectly straight line, whereas 0% would entail a sideways, 2-dimensional structure. A triangle would be expected to have low linearity, while an impulse wave would be expected to have high linearity. This measure is akin to the concept of fractal dimension. Linearity is helpful in identifying strongly trending waves.

What is the “Completeness” wave attribute?

This is a percentage measure (0% to 100%) describing an estimate of how close a wave is to completion, in terms of both price and time. For example, an impulse wave that is currently in its 5th wave is likely more complete than an impulse wave that is currently in its 2nd wave.

Completeness is useful to anticipate turning points, such as starting waves (those that are 0 to 5% complete), or ending waves (those that are 95% to 100% complete).

What are the “Duration” wave attributes?

Duration is how long a wave has taken to unfold thus far, in days; expected duration is how long a wave is estimated to last; remaining duration is how much time is estimated to be left before a wave completes.

The expected duration is the primary way to measure the overall size of a wave, regardless of if it’s a brand-new wave that is only one-day into its development, or if it’s a more mature wave. If you wish to “anticipate all advances or declines of a particular total duration”, then expected duration is a great way to do that.

The reason that expected duration is considered the “primary” method of identifying wave size is simply because it is invariant to the underlying volatility of the asset. Magnitude, in contrast, depends on a market’s volatility.

Duration (that is, duration thus far) is helpful to identify existing trends. For example, you may wish to find waves with a duration of around 100 days, and then sort those waves by their slopes. Momentum considerations can then be combined with wave structure considerations.

What are the “Magnitude” wave attributes?

Magnitude measures the percentage move of a wave from start to its last recorded price; expected magnitude is the estimated percentage move from start to end; remaining magnitude is the estimated percentage move left from the last recorded price to the end of the wave.

Magnitude is sometimes useful for sorting. For example, we may be looking at a particular Elliott wave setup using the Wave Finder Template for ZigZag patterns, and we wish to sort the waves by their remaining magnitude. (Note that you can easily sort in reverse order to see declining waves.)

Magnitude is not the same concept as the height of a wave (the distance from its lowest to its highest price). A sideways pattern, such as a triangle or flat, may have a large height but a small magnitude. If you’re interested in searching for triangles or flats, duration is a better measure of size than magnitude is.

Magnitude is asymmetric because a 100% increase is the same log distance as a 50% decrease. We could have made it symmetric by changing the units to log-returns, but (1) that is less intuitive for most people and (2) the natural asymmetry of percentage changes is often desirable when considering stocks and ETFs.

What are the “Slope” wave attributes?

The slope of a wave measures the %-per-year from the start of the wave to the current price; expected slope is the estimated slope from the start of the wave to its end; remaining slope is the estimated slope from the current price to the end.

Slope is a useful mechanism for finding high-momentum trends. However, one caveat with slope is that short-term waves are much steeper than long-term waves. (This is the case because the component waves of a parent wave are each partially retraced, so they must be collectively steeper than the parent wave.) For a slope comparison to be meaningful, compare waves within the same asset class and ensure that the waves are of similar duration.

Like magnitude, slope is asymmetric, since a 100% increase-per-year is the same log size as a 50% decrease-per-year.

What if I need a new wave attribute?

Please contact us with a detailed description of the wave attribute that you care about, and we’ll consider it for addition into the Wave Finder.

What are some example Wave Finder queries?

Example Query #1 (click image(s) to view in new fullscreen tab)

This example query looks for a newly started impulsive 3rd, 5th or C wave of an impulse or zigzag.

It does so by finding unfolding impulse waves, with label 3, 5 or C, that have retraces 50% or less of their prior waves (i.e. wave 3 has not yet surpassed 50% of wave 2 yet). The parent wave is either an impulse or a zigzag. The prior wave, which must be a corrective 2, 4 or B, must have a duration between 28 and 400 days. Both the wave and the parent wave must have an elliotticity of 50% or greater.

Note that restricting the duration of wave 2 is there because you have to restrict the duration of at least one wave or else you get waves which are far too small or large.

Example Query #2 (click image(s) to view in new fullscreen tab)

This example query looks for a 5th wave in progress that is showing short-term strength. Therefore, the larger impulse is nearly done.

It does so by finding unfolding impulse waves with a duration between 50 and 400 days, and a minimum elliotticity of 40%. The unfolding child wave is a 5th wave that is less than 50% complete. The unfolding grandchild wave is a 3rd wave which retraced at least 100% of its preceding wave 2.

You can optionally add a linearity requirement to the wave (say, 50% to 100%) to search for particularly strong impulse waves.