Technical Analysis: The Three Families, and What Our Engine Ships for Each
Technical analysis is the practice of drawing conclusions about a market from its own price and volume history. No balance sheets, no interest-rate expectations — just closed bars and arithmetic over them.
That definition sounds thin, and it is meant to. Everything in the discipline reduces to three families of function over the same input, and our indicator engine registers 171 of them. This page walks the families, names what we ship against each, and — the part almost nobody publishes — names four popular tools we ship nothing for at all.
What the practice actually claims
Strip away the folklore and one assumption is doing the work: recent price history carries usable information about near-future price.
That claim is testable, and it is much weaker than it usually sounds. It does not say charts predict. It says a summary of past bars can beat knowing nothing, which is a low bar and still frequently missed. Every page in this section is written against that standard rather than against a story about what buyers were thinking.
Fundamental analysis, the opposite discipline, asks what an asset is worth. Technical analysis asks what it has been doing. In crypto there is a third option neither tradition had: settlement is public, so you can look at what actually moved on-chain instead of inferring it from a candle.
Three families, and what each one reads
registry.rs rather than typed, which is why this bar can be trusted to still be right after the engine changes.Sorting by input rather than by name makes the whole field legible in about a minute.
Price shapes read a handful of bars and ask whether their geometry matches a template — a candlestick pattern, a swing, a pivot. No memory beyond the window, no smoothing.
Indicators read a long run of closes and compress it to a number: an average, an oscillator, a spread between two averages. They have memory, and therefore lag.
Volume reads the size behind the moves rather than the moves themselves. It is the smallest family, and in crypto the least trustworthy, because reported volume is only as honest as the venue publishing it.
Almost every tool you have met is in one of those three. The families do not fail in the same way, which is the only reason combining them is worth anything.
Price shapes: 67 functions, and their blind spot
Our crate registers 63 candlestick pattern detectors and four structure kernels. That is the whole of this family.
All 63 live in patterns.rs, and each returns one number per bar: +100 bullish, -100 bearish, 0 for nothing. batch_hammer checks that the body is at most 30% of the range, the lower shadow at least twice the body, the upper shadow no bigger than the body — three comparisons, one bar, done. All 63 are inventoried on the candlestick indicators page, derived from the source rather than typed.
Four structure kernels sit in structure.rs, which is 223 lines long: batch_pivot_points, batch_volume_profile_poc, batch_zigzag and batch_williams_fractal. Between them they find levels and swings, and that is the complete extent of the engine's opinion about chart geometry.
The blind spot is context. A hammer knows nothing about the trend it printed in, because the function is not given one. Every "reversal" reading is supplied by the person, not the detector, and that gap is where most of the disappointment in this family comes from.
Indicators: 90 functions over the same closes
This is the largest family by far, and the most interchangeable.
Sorted by the category the registry itself assigns: 36 momentum, 21 overlap, 16 volatility, 13 statistics, four price transforms. Ninety functions, and a great many of them are near-duplicates that differ in a smoothing constant. Loading five of them is not five opinions, and I skip any second indicator from a family I am already reading.
One piece of arithmetic here is worth knowing exactly once. batch_rsi uses Wilder's smoothing, where each average is built from the previous average, so an RSI reading depends on where your history started. That property is shared by most of the family and is almost never mentioned.
Lag is the fixed cost. Smoothing works by ignoring recent data, so a calm line and a late line are the same line. You cannot buy one without the other, and no parameter search has ever changed that — it only moves the trade-off somewhere less visible.
Volume: 14 functions, and one number to distrust
Smallest of the three, and the one whose input you should audit first.
Fourteen registered functions read volume, and the two most used are the on-balance-volume accumulator and batch_vwap. VWAP is a running volume-weighted average that starts again at every UTC midnight — a session tool whose session boundary turns out to matter more than its arithmetic, and whose anchored variant the engine does not ship. batch_volume_profile_poc answers a different question: which price bucket in a trailing window traded the most, returned as one number rather than a histogram.
Then the caveat that outranks all of them. Every function here is a transformation of a figure the exchange chose to report. On a venue with an incentive to look liquid, that figure is a claim rather than a measurement, and no amount of clever weighting repairs a bad input.
What we deliberately do not ship
An inventory is only honest if it includes the empty shelves, so here they are.
There is no fibonacci function of any kind — no retracement, no extension, no fan. Searching every crate for fib returns a reconnect backoff schedule in a vendored broker library and nothing else, which is why the fibonacci retracement page is about the swings that supply the anchors instead. There is no order block, fair value gap, liquidity sweep, break of structure or change of character, so the smart money concepts page states that and measures what the four structure kernels can support. There is no anchored VWAP. And there is no volume-profile histogram: the kernel builds one internally, uses it for a single statement, and discards it, because rendering bins is a chart concern.
Four popular tools, four honest absences. A page that implied otherwise would be easier to write and worth less.
The failure all three families share
Every family reads bars that have already closed, which sets a hard ceiling nobody's parameter set escapes.
Two of the 171 registered functions are candid about it in the code. zigzag and williams_fractal are flagged batch_only — they read future bars, so their live value is a best-effort guess and the most recent swing on a chart can still move. That flag is on three indicators in total, and the honest reading is that the other 168 are causal rather than that they are clairvoyant.
What remains is discipline. Pick one function per family, not three from the same one. Write the failure condition before the entry, because a signal that cannot be wrong is not information. And when a backtest glows, check whether the parameter was chosen before or after the data was on the screen — I have watched more edges die on that question than on any other.
Frequently asked questions
Does technical analysis work? Sometimes, narrowly, and never as well as its advocates claim. The useful question is whether a specific rule beats doing nothing on the same bars, which is answerable and is how the leaf pages in this section are written.
What is the difference between technical and fundamental analysis? Fundamental analysis estimates what something is worth; technical analysis describes what its price has been doing. They answer different questions and are not really rivals.
Which indicators should a beginner learn? One from each family, understood completely: a moving average, a candlestick rule, and VWAP. Adding a fourth before those three are solid adds correlation, not information.
Is technical analysis different in crypto? The arithmetic is identical. Two things change: the market never closes, so any session boundary is a convention, and reported volume is less reliable than on a regulated venue.
Where do support and resistance levels come from? From whichever rule you fixed in advance. Pivot points derive them from the prior bar and cannot be adjusted afterwards, which is a considerable virtue compared with a level drawn from memory.
This is educational material, not financial advice. Every figure here was measured on past bars, past behavior generalizes poorly to future bars, and trading carries real risk of loss — size any position so that being wrong stays survivable.