Transparency
How the market signals are calculated
PoE2 Economy Radar is an explainable scoring system built on public poe.ninja data. It does not know hidden supply, private trades, your stash, or your entry price. Every recommendation is a research shortcut that should be checked against live listings before trading.
Data source
The app fetches poe.ninja economy overview and item detail history for Path of Exile 2. Overview data gives the current item list, current prices, and current volume. Detail data gives daily price history for each item-pair where poe.ninja exposes it.
The active league is Runes of Aldur. Prior-league context currently comes from Fate of the Vaal.
Current-market score
Each item starts with a live-market score from recent movement, liquidity, volatility, and pullback behavior. In plain terms, the system likes items that are rising, liquid, and not too unstable.
1d, 3d, and 7d change
Short-term price movement in the selected quote currency, usually exalted.
Liquidity
A log-scaled score from current volume. Higher volume makes signals more reliable.
Volatility
Recent daily-return instability. High volatility lowers confidence and can add caution flags.
Dip score
Whether the latest price is below the recent median while the wider trend still looks healthy.
Risk flags
Low volume, thin history, high volatility, spike risk, or converted price basis.
Base score formula
base_score = 100 * ( 0.45 * momentum_score + 0.35 * liquidity_score + 0.20 * dip_score - 0.30 * stability_penalty - spike_penalty )
Momentum uses 3-day and 7-day movement. Liquidity uses log-scaled volume. Stability penalty comes from recent volatility. Spike penalty reduces scores for very sharp short-term moves that may already be exhausted.
Prior-league context
For the current league day, the app checks what happened at the same stage of Fate of the Vaal. If today is day 18 in Runes of Aldur, the system looks at day 18 in Fate of the Vaal, then checks what happened after that point.
Same league day
We compare the current item with the same day index in Fate of the Vaal.
Exact item match
If the same api type and item id existed last league, that item is used.
Category baseline
Exact item matches are compared against the category median so broad league inflation is discounted.
Category fallback
If the exact item did not exist, the category median is used with reduced weight.
Forward returns
We check what happened 7, 14, and 30 days after that same-stage point last league.
Shape and volatility
Historical context counts more when the current 7-day shape resembles the prior setup and less when prior volatility was high.
Historical edge formula
forward_blend = 0.50 * relative_prior_forward_7d + 0.30 * relative_prior_forward_14d + 0.20 * relative_prior_forward_30d raw_edge = clamp(forward_blend / 60, -1, 1) historical_edge = raw_edge * shape_match * volatility_discount
Relative prior return means item return minus category median return. This helps separate real item outperformance from a league-wide or category-wide price rise. Shape match checks whether the current 7-day setup resembles the prior setup. Volatility discount reduces trust in noisy prior moves.
Final score adjustment
historical_adjustment =
10 * historical_edge
* prediction_confidence
* match_quality
final_score = clamp(base_score + historical_adjustment, 0, 100)Exact prior item matches get full match quality. Category fallback gets reduced match quality, so new or changed items are not treated as if they have exact historical evidence.
Recommendations
Recommendations are generated after scoring. A buy signal needs live momentum, acceptable liquidity, and no severe caution. A sell signal looks for downtrends, rollovers after rallies, volatility, and historical headwinds. Hold means the signal is mixed or not strong enough. Avoid means the data quality or risk profile is too weak for a clean signal.
- Buy: live trend is strong enough and risk is not high.
- Hold: no clear edge, or live and historical signals disagree.
- Sell: current movement is weakening or risk is elevated.
- Avoid: price basis is missing, history is thin, or liquidity/volatility risk is too high.
Prediction labels
- Historical tailwind
- The prior league rose after the same-stage point with enough confidence.
- Historical headwind
- The prior league fell after the same-stage point with enough confidence.
- Live momentum only
- The current market looks good, but prior-league support is weak or neutral.
- Weak signal
- Neither current data nor prior data gives a strong directional reason.
Known limits
- poe.ninja can lag live listings and may not expose every early item-day.
- One prior league is useful context, not a statistically complete model.
- Patch changes, build popularity, boss access, and streamer effects can break historical patterns.
- The app does not know your entry price, trade taxes, listing spread, or how fast an item will sell.
For item-level evidence, open a candidate in the dashboard and check the Prior league context panel. Back to dashboard.