🧠 STAGE 3 REASONING ▶ (click to expand)
**1. OI Conviction Cap Check FIRST**
- cap=MEDIUM, score=-0.20
- divergence=YES (MR_LONG: weekly bearish noise within monthly bullish structure)
- This means: ALL HIGH convictions must be downgraded to MEDIUM. No AVOID_ALL, so watchlist can have candidates.
- Must add risk flag for OI divergence.
**2. Regime + VIX Impact**
- regime_signal=TRANSITION (copy verbatim), regime_confidence=MEDIUM (copy verbatim)
- VIX=21.6, zone=ELEVATED (18-22), trend=RISING, vs_ma20=ABOVE_20DMA (+4.61 pts)
- VIX ELEVATED → max sector view = HOLD. BUY only if VIX < 18. E-Learning has SM=MARKUP but VIX=21.6 > 18, so view must be capped at HOLD, not BUY.
- Wait — the sector rules say "ELEVATED VIX (18-22): max sector view = HOLD. BUY only allowed if VIX < 18." So E-Learning sector view should be HOLD, not BUY. But Stage 2 already assigned BUY. I need to override this per the rules.
**3. Sector Rotation**
- Leading: E-Learning (MARKUP, 5D=+5.5%) → VIX cap → HOLD
- Exchange and Data Platform (NEUTRAL, 5D=-0.8%) → HOLD
- Integrated Power Utilities (NEUTRAL, 5D=+2.7%) → HOLD
- General Insurance (NEUTRAL, 5D=+0.6%) → HOLD
- Diversified FMCG (NEUTRAL, 5D=+0.2%) → HOLD
- Lagging: Petrochemicals (MARKDOWN, AVOID), TV Broadcasting (DISTRIBUTION, AVOID), Microfinance (NEUTRAL, WATCH)
**4. Candidates by CONFLUENCE**
All candidates have confluence=3. Cap=MEDIUM means all HIGH → MEDIUM.
CLEAN candidates (confluence=3):
- AEROFLEX: CLEAN, confluence=3, flags=M+R+H, industry=Iron & Steel Products (NEUTRAL, FAIL), rs_5d=17.1, RSI=65.6, 200D_dist=0.0%, resilience=5. Cap=MEDIUM → MEDIUM conviction.
- MRPL: CLEAN, confluence=3, flags=M+R+H, industry=Refineries & Marketing (MARKDOWN, FAIL), rs_5d=11.5, RSI=56.6, 200D_dist=0.0%, resilience=5. Industry MARKDOWN is concerning. Cap=MEDIUM → MEDIUM.
- AUROPHARMA: CLEAN, confluence=3, flags=M+R+H, industry=Pharmaceuticals (NEUTRAL, FAIL), rs_5d=5.2, RSI=76.4 (overbought), 200D_dist=-2.5%, resilience=4. Cap=MEDIUM → MEDIUM.
- COALINDIA: CLEAN, confluence=3, flags=M+R+H, industry=Coal (NEUTRAL, FAIL), rs_5d=7.8, RSI=66.8, 200D_dist=-2.1%, resilience=4. Cap=MEDIUM → MEDIUM.
SUSPECT candidates (confluence=3):
- ASTERDM: SUSPECT, confluence=3, flags=D+M+R, industry=Hospital (NEUTRAL, FAIL), rs_5d=1.3, RSI=51.1, missing 200D data. SUSPECT → MEDIUM conviction?
Wait, let me re-check conviction rules:
- HIGH: CONFLUENCE=3 or 4, CLEAN, passing industry, RS_5D > 0. Only reachable when cap=HIGH.
- MEDIUM: CONFLUENCE=2, SUSPECT or partial industry. Reachable when cap=HIGH or MEDIUM.
But cap=MEDIUM means downgrade every HIGH to MEDIUM. So CLEAN + confluence=3 would normally be HIGH, but gets downgraded to MEDIUM.
For SUSPECT candidates with confluence=3: they would normally be... SUSPECT with confluence=3 doesn't fit HIGH (needs CLEAN). So they'd be MEDIUM normally? Actually the rules say MEDIUM = CONFLUENCE=2, SUSPECT or partial industry. SUSPECT with confluence=3 could be MEDIUM.
Actually, let me re-read: "MEDIUM — CONFLUENCE=2, SUSPECT or partial industry." This seems to say MEDIUM applies when confluence=2 OR when classification is SUSPECT. So SUSPECT candidates with confluence=3 → MEDIUM conviction.
LOW → avoid. None of the candidates are LOW.
So all 7 candidates (4 CLEAN + 3 SUSPECT) get MEDIUM conviction.
But wait - MRPL has industry=MARKDOWN. Should it go to avoid? The rules say DISTRIBUTION/MARKDOWN phase → view = AVOID for sectors. But for individual stocks, the conviction rules say MEDIUM for partial industry. MRPL's industry is MARKDOWN (FAIL), but the stock itself is CLEAN with confluence=3. The cap=MEDIUM means it stays MEDIUM but with a note about industry MARKDOWN.
Actually, looking more carefully: MRPL's industry is Refineries & Marketing with SM=MARKDOWN. The sector rule says DISTRIBUTION/MARKDOWN → view = AVOID. But this is for sector view, not individual stock. The stock passed all gates. I'll include it in watchlist with MEDIUM conviction but note the industry MARKDOWN risk.
AGIIL: SUSPECT, industry=Residential Commercial Projects (MARKDOWN, FAIL). Similar concern.
Let me decide on watchlist vs avoid for SUSPECT candidates:
- ASTERDM: SUSPECT (missing 200D), confluence=3, rs_5d=1.3 (barely positive), RSI=51.1, industry NEUTRAL FAIL → MEDIUM
- AGIIL: SUSPECT (missing 200D), confluence=3, rs_5d=1.8, RSI=68.4, industry MARKDOWN FAIL → borderline, but industry MARKDOWN is a concern. I'll include with MEDIUM but note risk.
- PAISALO: SUSPECT (missing 200D), confluence=3, rs_5d=7.4, RSI=48.3, industry NBFC NEUTRAL FAIL → MEDIUM
All SUSPECT candidates have missing 200D data which is a significant gap. I'll include them in watchlist with MEDIUM conviction but note the incomplete data.
**5. Risk Flags**
- OI divergence: weekly bearish (PCR nxtweek=0.794) but monthly structure intact (PCR M=1.07)
- VIX=21.6 ELEVATED, RISING, at 98.4th percentile
- FII 2-day selling streak (net -248,769 index, cash -9,366)
- 23500 DOUBLE_WALL CE resistance (weekly + nxtweek)
- Breadth deteriorating: 52W highs collapsed to 1 on 2026-03-16, %>EMA10 dropped to 10.8%, %>EMA20=12.0%
- 2026-03-13: Adv%=8.2%, 117 stocks down >4% — severe breadth collapse
- All 7 candidates have industry FAIL (no industry PASS)
**Breadth Reading:**
- 2026-03-13 was catastrophic: 8.2% advance, 117 stocks down >4%, 101 new 52W lows
- 2026-03-16 partial recovery: 43.2% advance but %>EMA10 still only 10.8%, %>EMA20=12.0%
- Trend: DETERIORATING
- %>EMA20 dropped from 22.4% to 12.0% over the week
**Delivery Signal:**
- CLEAN count: 4 (AEROFLEX, MRPL, AUROPHARMA, COALINDIA)
- SUSPECT count: 3 (ASTERDM, AGIIL, PAISALO)
- TRAP count (avoided): 3 (JINDALSAW, CUB, HINDOILEXP)
- Top picks by spike_ratio: HINDOILEXP (4.59, avoided), ASTERDM (4.4), AGIIL (4.0), MRPL (3.55)
- For top_picks in delivery_signal, I'll use the non-avoided ones with highest spike ratios
**Action Plan:**
Since cap=MEDIUM (not AVOID_ALL), I need to include re-entry conditions for full BUY conviction: PCR>0.80 (nxtweek needs to recover), VIX<18, FO not SHORT_BUILDUP.
Now let me construct the JSON:
For market_regime:
- signal: "TRANSITION" (verbatim from Stage 1)
- confidence: "MEDIUM" (verbatim from Stage 1)
For OI analysis:
- week_bias: NEUTRAL (PCR 1.019)
- nxtweek_bias: BEARISH (PCR 0.794)
- month_bias: NEUTRAL (PCR 1.07)
- nxtmonth_bias: NEUTRAL (PCR 0.925)
- weekly_max_pain: 23400
- monthly_max_pain: 24500
- nearest_resistance: 23500
- nearest_support: 23000
For sector_rotation leading, I need to override E-Learning BUY → HOLD due to VIX > 18.
Let me now write the full JSON carefully.
For watchlist - all MEDIUM conviction:
1. AEROFLEX - CLEAN, confluence=3, M+R+H, 200D_dist=0.0%, resilience=5, industry Iron & Steel NEUTRAL FAIL, RSI=65.6, rs_5d=17.1
2. MRPL - CLEAN, confluence=3, M+R+H, 200D_dist=0.0%, resilience=5, industry Refineries MARKDOWN FAIL, RSI=56.6, rs_5d=11.5
3. AUROPHARMA - CLEAN, confluence=3, M+R+H, 200D_dist=-2.5%, resilience=4, industry Pharma NEUTRAL FAIL, RSI=76.4, rs_5d=5.2
4. COALINDIA - CLEAN, confluence=3, M+R+H, 200D_dist=-2.1%, resilience=4, industry Coal NEUTRAL FAIL, RSI=66.8, rs_5d=7.8
5. ASTERDM - SUSPECT, confluence=3, D+M+R, missing 200D, industry Hospital NEUTRAL FAIL, RSI=51.1, rs_5d=1.3
6. AGIIL - SUSPECT, confluence=3, D+M+R, missing 200D, industry Residential MARKDOWN FAIL, RSI=68.4, rs_5d=1.8
7. PAISALO - SUSPECT, confluence=3, D+M+R, missing 200D, industry NBFC NEUTRAL FAIL, RSI=48.3, rs_5d=7.4
For avoid: JINDALSAW, CUB, HINDOILEXP (already gated out in Stage 2)
For confluence field in watchlist, I need to list the flags as array. AEROFLEX has M+R+H → ["M","R","H"]. ASTERDM has D+M+R → ["D","M","R"].
Risk flags:
1. "OI divergence: weekly bearish (PCR W/NW) but monthly structure intact (PCR M/NM)" — exact format required
2. "VIX 21.6 at 98.4th percentile (52W), RISING, +4.61 pts above 20DMA — elevated fear, all convictions capped MEDIUM"
3. "FII net index short -248,769 (2-day consecutive selling streak)"
4. "23500 DOUBLE_WALL CE resistance (weekly + nxtweek expiries) — spot 23409 only 91 pts below ceiling"
5. "Breadth collapse: 2026-03-13 Adv%=8.2%, 117 stocks down >4%, 101 new 52W lows; %>EMA20 at 12.0% on 2026-03-16"
6. "All 7 candidates have industry FAIL — no sector-confirmed setups available"
7. "OI cap MEDIUM (score=-0.20): nxtweek PCR 0.794 (BEARISH) dragging composite score negative"
Actually for risk flag #7, the format should be about the cap. Let me include the key ones.
For action_plan: Since cap=MEDIUM (not AVOID_ALL), I don't need the full AVOID_ALL language, but I should include re-entry conditions for upgrading to HIGH conviction. The rules say "action_plan must always end with these exact conditions when in AVOID_ALL or MEDIUM cap regime."
So I need: PCR>0.80, VIX<18, FO not SHORT_BUILDUP.
Let me draft the action_plan:
"Market is in TRANSITION with MEDIUM OI cap (score=-0.20), VIX elevated at 21.6 (98.4th percentile), and FII net short -248,769 — reduce position sizing to 50% of normal. The MR_LONG setup favors buying dips near the 23000 double PE wall and selling rallies into the 23500 double CE wall; spot at 23409 is only 91 pts below resistance. All 7 watchlist candidates carry MEDIUM conviction maximum; prioritize CLEAN names (AEROFLEX, COALINDIA, AUROPHARMA) with tight stops below their respective 20DMA. Avoid MRPL and AGIIL given their industry MARKDOWN classification despite clean price structure. For conviction upgrade to HIGH, all three conditions must be met: nxtweek PCR must recover above 0.80, VIX must drop below 18, and FO quadrant must exit SHORT_BUILDUP."
Wait, the FO quadrant is MIXED/LONG_BUILDUP for weekly/nxtweek, not SHORT_BUILDUP. But the re-entry condition says "FO quadrant not SHORT_BUILDUP" as a confirmation. I'll keep it as stated in the rules.
Let me finalize the JSON now.