b3-analysis

SkillCommerce & finance

Load this skill when analyzing Brazilian stocks listed on B3, building investment portfolios with Brazilian equities, or interpreting data from yfinance, BCB API, and Google News PT-BR. Provides the quality methodology, technical indicator reference, and sector impact framework used in /analyze and /portfolio.

Use b3-analysis in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add b3-analysis and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the b3-analysis skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

b3-analysisStart free

What this skill tells your AI

The instructions your AI receives, as published by guhcostan/b3analysis in .claude/skills/b3-analysis/SKILL.md and read by ahel’s review.

B3 Quality Checklist

Methodology from Logan's tier list (YouTube: @investimentosemevidencia). Criteria 1, 2, 3 are ELIMINATORY — fail any = automatic AVOID regardless of other factors.

#CriterionEliminatoryHow to evaluate
1Consistent growing profits (escadinha)🔴 YESStair-step pattern in income statement, no recurring losses. #1 criterion.
2Liquid ON shares (ticker ending in 3)🔴 YESPN-only or Unit-only with no ON liquidity = disqualified. Verify volume in OHLCV data.
3No recent IPO🔴 YESMinimum 5+ years of profit history on B3.
4Novo Mercado listingNoHighest B3 governance level
5Tag Along 100%NoMinority protection — < 100% = penalize
6Controlled debtNoPrefer net cash or D/EBITDA < 2x
7Expected return > CDINoSelic ~14,75% a.a. — justify via earnings yield, DCF, or DY

Score interpretation (after passing eliminatory filters)

  • 6–7: Strong Buy / Elite
  • 5: Buy
  • 4: Hold / Monitor
  • 0–3: Avoid

Tier classification

  • Elite: All 7 ✅, proven stair-step growth, large/growing TAM
  • Bom: Passes eliminatory, 5–6/7, minor flags
  • OK: Passes eliminatory, 4/7, one notable weakness
  • Mé: Passes eliminatory barely, erratic profits or structural limits
  • Você é Louco: Fails an eliminatory criterion
  • Oi: Persistent losses, cotação trending to zero

Technical Indicator Reference

When interpreting fetch_stock.py output:

IndicatorBullish SignalBearish Signal
Close > SMA 200Uptrend confirmedBelow = downtrend
SMA 50 crosses SMA 200 upGolden crossDeath cross
RSI 14 < 30Oversold — possible entryRSI > 70 = overbought
MACD hist positive & risingMomentum buildingNegative & falling
Price near Bollinger LowerPotential bounce
ADX > 25Strong trend — confirm directionADX < 20 = ranging market

Macro Impact by Sector

SectorHigh Selic Impact
Banking (ITUB, BBAS)Mixed — spread benefits, but higher default risk
Utilities (EQTL, SAPR)Negative — regulated returns compressed vs risk-free
Healthcare (RADL, FLRY)Neutral-negative — capex financing more expensive
Retail (LREN, RENT)Negative — consumer credit more expensive
Exporters (VALE, SUZB)Positive — stronger USD boosts BRL revenue
Technology (TOTS)Negative — high growth DCF heavily discounted
Insurance (PSSA, BBSE)Positive — float income rises with higher rates

Red Flags

  • Ticker final 4/11 only, no ON liquidity — bad faith (wants capital without losing control)
  • Controlling shareholder holds only ON, forces investors into PN — misalignment
  • Tag Along < 100%
  • Heavy state interference (pricing, dividend policy risk)
  • D/EBITDA > 3x
  • Highly cyclical commodity sector without multi-decade consistent track record

Output Rules

  • Always respond in Portuguese (Brazil)
  • Every report must begin with the disclaimer: ⚠️ **Aviso:** Este relatório é gerado por agentes de IA para fins exclusivamente **educacionais e de estudo pessoal**. Não constitui recomendação de investimento, consultoria financeira ou análise profissional. Renda variável envolve risco de perda do capital investido.
  • Always compare expected equity return vs CDI explicitly
  • State clearly when data is unavailable or scripts return errors
  • Never recommend leverage or derivatives — long-only equity analysis only
  • Minimum position size for portfolio allocation: R$ 500

Universo B3 (Screening)

Usado pelo /b3:screen como universo padrão de triagem. Apenas ações ON (final 3) ou com ON líquida conhecida. Atualizar conforme necessário.

Bancos:         ITUB3, BBAS3, BBDC3, SANB3, BRSR3
Seguros:        PSSA3, BBSE3, IRBR3, ODPV3
Varejo:         LREN3, ARZZ3, VULC3, PNVL3, VIVA3, GRND3
Saúde:          FLRY3, HAPV3, RDOR3, DASA3, HYPE3
Tech/Software:  TOTS3, INTB3
Energia:        EQTL3, EGIE3, TAEE3, CPFE3, NEOE3
Saneamento:     SAPR3, SBSP3, CSMG3
Industrial:     WEGE3, ROMI3, FRAS3, LEVE3
Farmácias:      RADL3
Petróleo:       PETR3, PRIO3, RECV3
Mineração:      VALE3, GOAU3, GGBR3
Agro:           SLCE3, SMTO3, AGRO3
Logística:      RENT3, RAIL3, EMBR3
Construção:     DIRR3, CYRE3
Celulose:       SUZB3, KLBN3, RANI3
Alimentos:      ABEV3, JBSS3, MRFG3, MDIA3
Educação:       YDUQ3

Este universo pode ser substituído por qualquer lista de tickers via /b3:screen TICKER1 TICKER2 ...

Gotchas

  • Criterion 2 is often misread: check the actual ticker suffix AND verify daily volume > R$ 10M. A ticker ending in 3 with low liquidity still fails criterion 2.
  • yfinance P/L can be misleading for Brazilian stocks: cross-check against the income statement returned by fetch_stock.py. Trailing PE from info uses US GAAP adjustments.
  • CDI is monthly in BCB data: fetch_macro.py converts it to annualized, but always double-check the annualization logic when citing CDI % a.a.
  • Google News RSS has no pagination: if the lookback window is long and articles are sparse, fetch_news.py may return fewer results than expected. This is a data gap, not an error.
  • D/EBITDA from yfinance uses debtToEquity (debt/equity ratio), not debt/EBITDA. To get D/EBITDA, divide totalDebt by ebitda from the fundamentals output.
  • Score ≤ 2 = exclude from portfolio regardless of macro environment. No macro tailwind overrides a failed eliminatory criterion.

Signals

GitHub stars
128
Forks
16
Last commit
Mar 2026
Advanced
Item type
skill
Key
b3-analysis
Source
github.com/guhcostan/b3analysis