Screening Dashboard

Bullish divergence across 3 price signals — NAV making lower lows while indicator makes higher lows

3-stage screening: Valuation · Momentum Exhaustion · Trend Change Confirmation · sort any column · click fund to open detail
Filter Regime:

Fund Detail

Expand a fund — scroll to zoom · drag to pan · double-click to reset

Framework Documentation

Smart・RMF・Seek · RMF Fund Analysis · v2.1

Part A — Screening Concept

Smart・RMF・Seek screens for funds showing early signs of price stabilisation and trend reversal using a 3-stage framework. No fund flow data is required — all signals are derived from NAV price alone.
💡 In simple terms: Imagine you are shopping for a fund that is on sale. Stage 1 checks if the price has dropped far enough to be a real bargain. Stage 2 checks if the sellers are running out of energy — even though the price is still falling, the internal signals are quietly improving. Stage 3 confirms that buyers have finally taken control by pushing the price above a key resistance point. A fund that passes all three stages is a strong candidate for recovery before most people notice.
── Stage 1 · Valuation (Is NAV cheap enough?) ──────────────────────────────
  NAV must have retraced significantly from a prior structural high.
  Score 0% = NAV at or above datum high (not cheap — skip)
  Score ≥61.8% ★ = deep value zone (Fibonacci golden zone)
  Score 100% = NAV at or below datum low (maximum cheapness)
  💡 How far has the price fallen from its recent peak? The deeper the fall, the more potential value. 61.8% is known as the "golden zone" used by professional traders worldwide — historically a strong area where price tends to bounce back.

── Stage 2 · Momentum Exhaustion (Is selling pressure ending?) ─────────────
  NAV making lower lows while indicators make higher lows = selling exhausted.
  Price Strength = Price Alpha rising (fund holding up vs universe)
  Sell Exhaustion = RSI rising (selling momentum fading)
  Buy Acceleration = MACD rising (buying force building)
  Hits = number of indicators confirming divergence (more = higher conviction)
  💡 Price is still falling but the indicators say sellers are giving up. Price Strength means this fund is falling less than other funds. Sell Exhaustion means fewer people are rushing to sell. Buy Acceleration means quiet buying is starting to outpace selling — all before the price itself turns up.

── Stage 3 · Trend Change Confirmation (Has buying actually started?) ───────
  Pending — NAV has not yet crossed above ChoCH level
  Confirmed ✓ NAV broke above ChoCH level → uptrend structure established
  Pullback ↩ was above but fell back below → re-accumulation or failure
  💡 Has the price actually broken its pattern of "lower highs"? Pending means not yet — the setup is still building, and many of the best entry points occur here. Confirmed means buyers have taken control. Pullback means it broke out but came back — watch carefully, it could be a healthy retest or a failed breakout.

── Combined signal interpretation ───────────────────────────────────────────
  Strongest: Retracement ≥61.8% + Hits ≥2 + ChoCH Confirmed ✓
  Strong: Retracement ≥61.8% + Hits ≥2 + ChoCH Pending (near)
  Moderate: Retracement ≥38% + Any divergence + ChoCH Confirmed ✓
All RMF Funds 317 total STAGE 1 Valuation Is price cheap? Score ≥ 38% STAGE 2 Divergence Selling ending? ≥1 indicator hit STAGE 3 ChoCH Buying started? Pending/Confirmed ◎ Accumulation ▲ Early Momentum Funds failing any stage are classified as Undefined

Part B — Calculation Detail

B1 — Universe Benchmark

Equal-weight average of all RMF fund daily returns, chained into a price index.
💡 Think of this as the "average RMF fund" — a single line representing how all funds perform together each day. Every fund counts equally, no matter its size. This becomes the market average used throughout the tool to judge whether one specific fund is doing better or worse than the group.
── Construction ──────────────────────────────────────────────────────────────
  ret_univ_t = mean(ret_t for each fund) equal-weight, all funds
  univ_price = cumprod(1 + ret_univ) × 100 chained price index
  Used as benchmark for Price RS and Price Alpha calculations
Individual fund NAV lines vs universe average Fund A Fund B Fund C Fund D Fund E Avg Start Today

B2 — Price Alpha Spread

💡 Price Alpha measures how much better (or worse) this fund is performing compared to the average RMF fund. Positive = outperforming the group. Negative = underperforming. The 1M span (21 trading days) is most sensitive to recent changes and is the one used as a divergence signal.

Key insight for divergence: if a fund's price is still falling but its Price Alpha is rising, the fund is quietly losing value slower than everything else — a sign that informed buyers may be accumulating before the recovery is visible to the general public.
── Formula ───────────────────────────────────────────────────────────────────
  raw α = (fund_pct(N) − univ_pct(N)) × 100
  alpha_N = rolling_mean(raw α, smooth=5 bars)
  N spans: 1M=21d · 3M=63d · 6M=126d · 12M=252d

── Divergence use ────────────────────────────────────────────────────────────
  Price Alpha 1M is sampled at each price pivot low date to compute the
  Price Str. divergence flag (see B4). Positive slope = outperforming universe
  while price makes lower lows = capital rotating in quietly.
NAV vs Universe Universe Fund gap High Low Price Alpha (fund − universe) 0 α rising Outperforming the group Time → Time →

B3 — Retracement Score (Stage 1)

💡 This score answers: "How cheap is this fund compared to its recent peak?" We find the lowest price (Datum Low) and the highest price after that low (Datum High) within the past 2 years. The score tells you how far the current price has fallen from the top back toward the bottom.

0% = still near the top, not cheap yet. 61.8%–78.6% = the Fibonacci golden zone, historically a high-probability area where price tends to reverse upward — this range is widely used by professional traders worldwide. 100% = back at the 2-year low, maximum discount but also maximum uncertainty.
── Datum points (2Y lookback = 504 trading days) ────────────────────────────
  Datum Low = lowest confirmed minor NAV LOW within 2Y window
  Datum High = highest confirmed minor HIGH strictly AFTER datum low
  score = clamp((datum_high − NAV) / (datum_high − datum_low), 0, 1)
  Fib levels: 0% / 23.6% / 38.2% / 50% / 61.8% / 78.6% / 100%
0% 23.6% 38.2% 50% 61.8% ★ 78.6% 100% Datum High — not cheap Mild pullback Moderate value Halfway down ★ Golden zone — high probability Deep value Datum Low — maximum discount ← Current NAV position ▼ Datum High ▲ Datum Low

B4 — Divergence Flags (Stage 2)

💡 What is divergence and why does it matter? Normally when a fund's price falls to a new low, all momentum indicators fall to new lows too — everything moves together. Divergence is when the price makes a new low but the indicators do not — they start rising instead. This split tells us that even though the price is still falling, the internal selling pressure is getting weaker. It is one of the earliest and most reliable warning signs of a coming reversal.

A "pivot low" is simply a point where the price stopped falling and briefly bounced up. We look at the last 2–4 of these valley points. If price is still reaching lower valleys (downtrend continues) but the indicators at those same valleys are getting higher — that mismatch is the divergence signal.

Hits: 1/3 = only one indicator shows divergence — weak signal, be cautious. 2/3 = moderate confidence. 3/3 = all three indicators agree — strongest possible signal, highest conviction that selling is truly exhausted.
── Price pivot lows (try 4 → 3 → 2 confirmed minor NAV lows) ────────────────
  Start with last 4 lows. If no divergence found, try last 3, then last 2.
  Freshness: the governing divergence's deep low must be within 126 bars of today.
  v2.1: pivot sets never cross into a prior base — the deep low is always the set minimum.
  Freshness: latest low must be within 60 bars of today.

── Linear regression slope on price pivot lows ───────────────────────────────
  price_slope = OLS slope through (date(pl₁),NAV₁), (date(pl₂),NAV₂), (date(pl₃),NAV₃)
  x-axis = calendar date ordinal · y-axis = NAV at pivot

── Indicator value sampled at exact price pivot dates ────────────────────────
  For each price pivot date, read the indicator value at that exact date (ffill for holidays).
  No separate indicator ZigZag. No window matching.

── 3 Indicators ─────────────────────────────────────────────────────────────
  Price Str. (PA) = Price Alpha 1M value at each price pivot date
                     → Rising while price falls = fund quietly outperforming the group at the lows
  Sell Ex. (RSI) = RSI(10) value at each price pivot date
                     → Rising while price falls = selling momentum fading, fewer sellers rushing out
  Buy Acc. (MACD) = Normalized MACD value at each price pivot date
                     → Rising while price falls = short-term buying starting to outpace long-term selling

── Flag logic ────────────────────────────────────────────────────────────────
  indicator_slope = OLS slope through indicator values at (date(pl₁), date(pl₂), date(pl₃))
  ▲ DIV flag = price_slope ≤ 0  AND  indicator_slope > 0  AND  indicator rise ≥ 0.25σ
  💡 Price keeps making lower lows (price_slope ≤ 0) but the indicator makes higher lows
     (indicator_slope > 0) — that contradiction is the divergence. It means the trend is
     losing its strength even though the price has not yet turned upward.
  💡 v2.1: σ = that indicator's own 1-year rolling standard deviation. The rise across the
     pivot set must be at least 0.25σ — a noise-level "rise" no longer fires a flag, and the
     displayed scores are this normalized rise in σ units, comparable across all 3 indicators.

── Fallback ──────────────────────────────────────────────────────────────────
  Try 4 pivots first. If no indicator flags, try 3. If still none, try 2.
  hit_count = number of indicators with ▲ DIV flag (out of 3)

── Invalidation rule ─────────────────────────────────────────────────────────
  If current price < lowest pivot low in the divergence period → signal CLEARED
  Rationale: price has made a new low that undercuts ALL the lows the divergence
  was built on — the pattern is broken. This prevents stale divergence flags
  from persisting when the downtrend has materially continued.
  💡 Example: div detected on lows [8.50, 8.30]. If price now trades at 8.20,
     the divergence is invalidated — all flags return FALSE, regime = Undefined.
✗ No Divergence Price and indicator fall together Price PL₁ PL₂ PL₃ RSI Both falling → NO signal ✓ Divergence Detected Price falls, indicator rises Price PL₁ PL₂ PL₃ RSI ▲ DIV flag = selling exhausted!

B5 — Change of Character (Stage 3)

💡 What is a Change of Character? When a market is in a downtrend, every small rally fails — price goes up briefly then falls to a new low. Each of those small rally peaks is a resistance level. The ChoCH level is the most recent of those rally peaks before the latest price low.

When price finally closes above that peak for the first time, it breaks the pattern of "lower highs and lower lows" — the character of the price movement has changed from bearish to potentially bullish. Buyers have taken control for the first time.

Pending is not a bad sign — many of the best entry points occur while ChoCH is still Pending, because by the time it is Confirmed, the early move has already happened. Pullback requires caution — it could be a healthy retest before the next leg up, or a failed breakout that needs reassessment.
── ChoCH level ───────────────────────────────────────────────────────────────
  Most recent confirmed minor HIGH pivot BEFORE the latest confirmed minor LOW.
  Pending    Price has not yet broken above the ChoCH level
  Confirmed  Price closed above the ChoCH level — structural trend change
  Pullback   Was above ChoCH level, now retesting from above — healthy dip or failed breakout

── Proximity ─────────────────────────────────────────────────────────────────
  proximity = (price − ChoCH_level) / ChoCH_level × 100
  Positive = price above ChoCH (Confirmed/Pullback) · Negative = price below (Pending)
  💡 A Pending fund showing −2% is much closer to breakout than one showing −15%.
     The closer to 0% from below, the more imminent the potential confirmation.
ChoCH level — Pending price below level ✓ Confirmed above ChoCH ↩ Pullback retest −% below +% above Time →

B6 — Regime Classification

💡 The regime is a single summary label combining all three stages:

◎ Accumulation = divergence active + ChoCH not yet confirmed. The fund is cheap and selling is exhausted, but buyers have not yet broken resistance. This is the "quiet before the storm" — informed investors may be slowly buying while the general public is still selling. Historically the best entry point, but requires patience.

▲ Early Momentum = divergence active + ChoCH confirmed or recently crossed. Buyers are in control and the trend is turning. The breakout has already happened — still early stage but signal is confirmed. Good entry, momentum is building.

? Undefined = no divergence signal detected. The fund may be in a normal uptrend, a strong downtrend without exhaustion signals, or simply lacks enough data. No action signal — continue monitoring.
── Decision logic ────────────────────────────────────────────────────────────

  if (any divergence flag = TRUE)
    AND (ChoCH = Pending)
    → ⚰ Accumulation

  else if (any divergence flag = TRUE)
    AND (ChoCH = Confirmed or Pullback)
    → ▲ Early Momentum

  else
    → ? Undefined
Any divergence flag? PA, RSI or MACD = ▲ DIV NO ? Undefined No signal yet YES ChoCH status? Pending or Confirmed? Pending ◎ Accumulation Confirmed / Pullback ▲ Early Momentum
Smart・RMF・Seek v2.1

Strategy Backtest

Bullish div → arm · Buy on pivot HIGH crossup · Bearish div → sell on pivot LOW crossdown · Stop = div pivot low price