← Blog Open ↗

From Context-Aware to Context-Conditioned: Why I Rebuilt the RSI Framework

In June I published Context-Aware RSI — a paper and a working prototype. This is the retraction, and the replacement. The successor is now live on Macropoiesis, running beside the system it is meant to replace, and it has not yet earned the right to do so.


In June, I published Context-Aware RSI and a working prototype on macropoiesis.com.

The idea was simple: RSI only sees price, but an RSI of 72 does not necessarily mean the same thing in every market. Liquidity, sentiment, and volatility change the environment in which momentum operates.

So the first framework left Wilder's RSI untouched and changed its interpretation. Overbought and oversold thresholds moved with the regime, while RSI readings were also normalized against regime-specific distributions.

That framework is now being replaced.

Not extended. Replaced.

Because it contained a design flaw, and once you find a structural flaw, adding another parameter is usually how the trouble started.

The problem with the old design

The June framework used two mechanisms to answer essentially the same question.

Dynamic thresholds said:

In this regime, overbought starts at 73 instead of 70.

Conditional normalization said:

In this regime, an RSI of 72 is only at the 60th percentile. Nothing unusual.

Sometimes they disagreed.

So the framework needed a tiered signal system: strong when both agreed, weak when only one did.

At the time, this looked cautious.

In retrospect, it looked more like architecture requiring couples therapy.

Two mechanisms were trying to answer the same question:

Is this RSI reading unusual in the current regime?

That is a useful descriptive question.

It is not, however, the question an investor actually cares about.

The relevant question is:

Given this RSI reading and this market regime, what tends to happen next?

The old architecture quietly assumed that an unusually high RSI implied future mean reversion.

That sounds plausible.

Unfortunately, "sounds plausible" is one of finance's most productive sources of backtests.

The assumption was never tested directly because the architecture had nowhere to test it.

So the new design removes it.

The new architecture

Context-Conditioned RSI separates three things that the original framework mixed together:

measurement, context, and inference.

1. Measurement

Wilder's RSI remains untouched.

The system calculates RSI at three fixed horizons:

  • 7 periods
  • 14 periods
  • 28 periods

No liquidity adjustment. No sentiment adjustment. No volatility adjustment.

An RSI of 72 remains an RSI of 72.

This matters because measurement and interpretation should not quietly rewrite each other.

2. Context

Context is measured separately.

The liquidity component still uses local-currency M2 growth, standardized against each country's own history and aggregated using GDP weights. That prevents exchange-rate movements from impersonating monetary policy, a role for which currencies are already sufficiently overqualified.

Sentiment still comes from financial-domain language models with recency decay, but now includes duplicate clustering and a more important change: orthogonalization against recent returns.

Volatility is standardized on the log scale, which better matches its empirical distribution.

These variables describe the environment.

They do not modify RSI.

3. Inference

This is the major change.

A single probabilistic model now estimates:

$$ P(R_{t+h} > 0 \mid \text{RSI}_{7,14,28}, L_t, S_t, V_t) $$

In plain English:

Given momentum, liquidity, sentiment, and volatility today, what is the probability that the return over the next h periods is positive?

The model also estimates expected return magnitude and a confidence score based on data quality, evidence volume, and how familiar the current market configuration is.

Only this layer is allowed to make claims about the future.

That distinction sounds almost embarrassingly obvious once written down, which is generally how architectural improvements behave after someone finally makes them.

The thresholds no longer need their own theory

The visible overbought and oversold thresholds remain.

But they are no longer independently parameterized.

Instead, they are derived from the fitted probability model.

For the current liquidity, sentiment, and volatility regime, the system asks:

At what RSI level does the estimated probability of a positive forward return cross a reference band around the historical base rate?

Those crossing points become the thresholds.

So supportive liquidity can still push the effective overbought level from, say, 70 toward 73.

But now it happens because the estimated conditional relationship in the data implies it, not because somebody chose a coefficient saying liquidity should move the threshold by three points.

That removes roughly seven free parameters from the framework.

Fewer knobs are not merely aesthetically pleasing. Every free parameter is another opportunity for historical noise to acquire a convincing résumé.

All remaining parameters are therefore listed in a single inventory, including their permitted range and whether they were fixed beforehand or fitted from data.

Three honesty upgrades

The redesign also introduces three changes intended to make the system more difficult to fool.

Especially by itself.

The base rate

Equity markets do not behave like fair coins.

Over many samples, the probability of a positive 10-day return may already be around 55 to 60 percent.

So a model announcing:

67% probability of a positive return

is less impressive if the unconditional probability is already 57%.

The new framework therefore reports every probability relative to the historical base rate.

Performance is also evaluated against that base rate, not against an imaginary 50/50 market.

A predictive model should have to beat the thing that happens when the model stays home.

Orthogonalized sentiment

Financial news reacts to markets.

Prices fall, journalists write gloomy articles, sentiment models detect gloom, and a quantitative system triumphantly discovers that gloomy news correlates with falling prices.

A small miracle of circular reasoning.

But RSI already contains information about recent price movements.

So feeding raw sentiment into the model risks giving it the same information twice.

The new framework therefore models sentiment as:

$$ S_t = f(R_{t-k:t}) + \varepsilon_t $$

and uses the residual:

$$ S_t^{\perp} = \hat{\varepsilon}_t $$

In plain English, it removes the part of sentiment that can already be explained by recent returns.

What remains is the part of the news flow that may contain genuinely additional information.

Credit where due: orthogonalization comes from the June paper itself. It was that framework's best idea, and the successor inherits it. A retraction is more credible, not less, when the retracted work contained things worth keeping.

And there is a hard rule:

If sentiment loses its predictive value after this adjustment, the sentiment channel is removed.

No ceremonial attachment to features that looked clever in the architecture diagram.

Confidence has to prove that it means confidence

The system also produces a confidence score for each prediction.

That sounds reassuring.

It means nothing unless tested.

So predictions are grouped by confidence out of sample. High-confidence predictions must perform better than low-confidence predictions.

If they do not, the confidence model fails.

It is then simplified or removed.

A system is not allowed to claim that it knows when it does not know unless it can demonstrate that distinction empirically.

Humans get away with this constantly. Models should not.

What changes on Macropoiesis

The new framework is now on macropoiesis.com, at Context RSI.

The old Context-Aware RSI stays where it is, at Enhanced RSI, for the duration of the transition.

This is intentional.

Both systems now run on the same assets, on the same days, using live data neither system saw during development.

They will disagree.

Good.

The new architecture makes a testable claim: separating measurement, context, and inference should generalize better than the old interpretation-based design.

The cleanest way to test that claim is to leave both systems running and watch what happens.

A framework built around falsification should be willing to keep its predecessor around as the control group.

The output has changed too.

Instead of mainly showing an annotated oscillator, the new system exposes a fuller state:

  • RSI at 7, 14, and 28 periods
  • liquidity, sentiment, and volatility context
  • model-derived thresholds
  • estimated probability
  • historical base rate
  • expected return magnitude
  • confidence

The heatmap will also gain a confidence-adjusted signal mode.

Its center is the market base rate rather than 50%, so an asset does not glow green merely because equities have the inconvenient habit of rising over time.

Low-confidence signals are visually desaturated.

Uncertain predictions should look uncertain, not merely carry a tiny disclaimer somewhere nearby.

Phase zero: find out whether this is worth doing

The first implementation phase is deliberately boring.

Before adding features, the framework estimates how much predictive improvement is realistically available.

Return direction is difficult to predict. Very difficult.

If the available signal barely exceeds the base rate, the correct conclusion may be that there is not enough information to justify a complicated model.

That is still a useful result.

A system that does not know its achievable ceiling will eventually celebrate statistical noise for jumping over it.

The uncomfortable part

The original Context-Aware RSI was right about the problem.

RSI is context-blind, while its interpretation often should not be.

But the solution contained an assumption that had never been properly tested: that being unusual within a regime implied something about future returns.

It does not necessarily follow.

That required more than a patch.

It required changing the architecture.

So a framework that already had a paper and a working prototype is being replaced by one designed to make fewer assumptions, fit fewer parameters, and expose more opportunities to prove itself wrong.

That is inconvenient.

It is also how this is supposed to work.

The alternative is more familiar: keep the existing model, add enough parameters to rescue the backtest, and continue until randomness develops an investment thesis.

The full Context-Conditioned RSI technical paper describes the probabilistic model, validation architecture, falsification tests, and complete parameter inventory.

Comments and corrections are welcome. That policy, at least, survives the retraction unchanged.

The old and new systems run side by side on Macropoiesis while the new architecture is rolled out.

Then the live data gets to vote.


Postscript: what is live, and what it has not earned

Since the essay above was written, the framework stopped being a plan and became a page.

Context RSI now takes any ticker and returns the full state: the three RSI horizons, the three context variables, the model-derived thresholds, the estimated probability alongside the base rate it has to beat, the confidence score with its four components, and a ranked table of which feature contributed what to today's estimate. There is a comparison backtest that runs the identical crossing rule under fixed 30/70 and under model-derived thresholds, so the only difference between the two equity curves is the threshold source.

Two details are worth flagging, because both started as bugs in my own reasoning.

First, the thresholds are calibrated by matched tail mass. An earlier version demanded a fixed ±10-percentage-point probability swing before it would move a threshold — a swing the fitted model, being honest about a hard problem, mostly cannot produce. The thresholds duly pinned themselves to 0 and 100 and the context band became decoration. The current version asks a better-posed question: at what probability level does the context band flag the same fraction of days that 30/70 flags? That degrades gracefully to the standard rule when context carries no information, which is exactly the behaviour you want from a mechanism you suspect might be useless.

Second, the two readings agree most of the time, and the page says so out loud. It reports how many of the displayed sessions the standard and context interpretations actually diverged, and shows a second panel zoomed into the difference between them, because on a 0–100 axis the two lines sit close by construction. A framework that only looked impressive when its chart looked dramatic would be optimizing for the wrong thing.

And then the part that is not a feature announcement.

The validation report runs the walk-forward evaluation the paper specifies: out-of-sample, against a ladder of baselines starting with the base rate itself, with HAC standard errors. As of today it shows no statistically significant skill over those baselines. The t-statistics are well below the threshold the framework set for itself before looking at the results, and several baselines beat it outright.

So the cutover has not happened. Enhanced RSI is still the system wired into everything else; Context RSI runs beside it, fully built and publicly readable, in the position of a candidate that has not passed its own exam.

This is the part where the framework's design either means something or does not. The falsification criteria were written down first, precisely so that the moment they became inconvenient there would be nothing left to negotiate with. They became inconvenient. They stay.

The live data got to vote. So far it has voted not yet.

← Back to Blog