Salta ai contenuti

/screen-low

Cosa fa. Lista pronta di strumenti difensivi/di qualità a basso rischio. In modalità stock usa la pipeline di ranking di /top con re-scoring AI.

Quando usarlo. Per un profilo prudente.

Argomenti. [stock|etf|crypto] [N 1-40, def 10] — stock only: [balanced|trend|contrarian] [f50-150, def f50] [ai 0.1-1, def 0.35] [sector N, def off]

Esempio. /screen-low 10 stock f100 sector 2

Cosa restituisce. I top N a basso rischio: lo AI re-scorea il pool (floor, default 50) a lotti da 5 e ordina per punteggio finale.

Nota. ### Azioni

I tre profili sono separati dalla volatilità, non dalla dimensione: beta 1,0 è lo spartiacque standard fra “più calmo del mercato” e “più rischioso del mercato”.

profiloselezionarequisiti principali
/screen-lowbeta ≤ 1,0grande capitalizzazione, Altman in zona sicura, cassa positiva, salute finanziaria alta
/screen-midbeta fra 1,0 e 1,8qualità con crescita; qui trovi i mega-cap che il prudente esclude
/screen-highsmall/mid capricavi in crescita di almeno il 10%; distress e perdite ammessi

Prudente e bilanciato non si sovrappongono: un titolo difensivo non ricompare nel bilanciato. Un titolo che non rientra in nessuna delle tre fasce semplicemente non è un’idea adatta a nessuno dei tre profili — per cercarlo comunque usa /screen-custom.

Dove una metrica non ha senso per un’azienda (l’Altman Z su una banca, il debito/patrimonio su chi ha patrimonio netto negativo per i buyback) il controllo non viene saltato: viene richiesto un sostituto, ad esempio il ROE per le banche.

Non sono le stesse soglie applicate ad altri dati: sono tre motori separati. Le modalità crypto ed etf non passano dalla pipeline di ranking delle azioni, ed è il motivo per cui ignorano tutti i parametri opzionali elencati sotto.

profilocryptoETF
lowfra le prime 20 per capitalizzazione, non in calo oltre il 25% sul mese, liquideobbligazionari e difensivi, patrimonio ≥ 1 mld, spese ≤ 0,20%
midfra le prime 100, senza movimenti violenti nelle 24hmercato ampio (S&P 500, total market), patrimonio ≥ 5 mld, spese ≤ 0,15%
highcapitalizzazione ≥ 50 mln, ordinate per rendimento a 7 giornitutto tranne obbligazionario e difensivo, patrimonio ≥ 500 mln

Nei profili crypto prudente e bilanciato le stablecoin sono escluse: un elenco di idee da comprare che propone USDT non serve a niente, perché il suo prezzo non si muove per costruzione.

Sugli ETF non c’è alcun filtro sui rendimenti passati, ed è voluto: pretendere un 5 anni positivo escluderebbe BND, AGG e LQD — cioè proprio i fondi obbligazionari che il profilo prudente deve restituire, negativi su quell’orizzonte dopo il rialzo dei tassi del 2022.

Valgono solo in modalità stock; le modalità etf e crypto li ignorano:

  • strategiabalanced (default), trend premia i titoli in salita, contrarian premia gli ipervenduti. Agisce sul solo fattore momentum.
  • f<N> — ampiezza del pool di candidati da cui pescare, 50-150 (default 50). Più alto = l’AI valuta più titoli, ma la risposta è più lenta.
  • ai <N> — quanto pesa il giudizio dell’AI rispetto al punteggio quantitativo, 0.1-1 (default 0.35). Il punteggio finale è composite + ai × punteggio_AI: alzarlo lascia più libertà al modello, abbassarlo dà più forza ai filtri e ai percentili settoriali.
  • sector <N> — massimo N titoli dello stesso settore nella tabella finale. Se non lo scrivi non c’è alcun limite, quindi la lista può concentrarsi su un solo settore.

Quando lanci /screen-low, Dexter non esegue codice fisso: invia all’AI la prompt qui sotto — il segnaposto {arg} viene sostituito con ciò che scrivi dopo il comando — e l’agente la esegue chiamando da sé gli strumenti necessari. Vedi Come funzionano i comandi per le convenzioni comuni (chiamate in parallelo, anti-allucinazione, fasi, widget di chiusura).

Strumenti che può usare: preset_crypto_screener, preset_etf_screener, ranked_opportunities, get_key_ratios, finalize_ranking.

È la prompt esatta inviata all’AI quando usi il comando (sostituendo {arg}).

Check the first word of "{arg}" (case-insensitive).
--- CRYPTO MODE (first word = "crypto") ---
Extract the number AFTER "crypto". Default=10, min=1, max=30 (clamp out-of-range; if clamped, say so in one short line).
Do NOT echo your parsing or repeat any preamble — go straight to the tool call.
Step 1 — YOU MUST call preset_crypto_screener with profile="low" and limit=N as your FIRST action. Crypto prices and 24h/7d/30d% change every minute; you CANNOT know them from memory, and any table written without this tool call will contain invented, stale numbers. Do NOT call any other tool.
Step 2 — Present ALL results from the tool in a SINGLE markdown table:
Symbol | Name | Rank | Price | MCap | 24h% | 7d% | 30d% | RSI
Use ONLY numbers that appear in the tool result; write N/A for any missing field — NEVER invent or guess a price/percent. The 24h/7d/30d values are ALREADY percentages (e.g. 0.49 → "+0.49%"); do NOT multiply by 100. Price and MCap are in USD.
Step 3 — Per coin: 1-line stability rationale (liquidity, adoption, supply economics).
Disclaimer: quantitative screening, not personalized advice.
--- ETF MODE (first word = "etf") ---
Extract the number AFTER "etf" in "{arg}". Default=10, min=1, max=25 (clamp out-of-range; if clamped, say so in one short line).
Do NOT echo your parsing or repeat any preamble — go straight to the tool call.
Step 1 — YOU MUST call preset_etf_screener with profile="low" and limit=N as your FIRST action. Do NOT write the table from memory — ETF names/AUM/returns must come from the tool. Do NOT call any other tool.
Step 2 — Present ALL results from the tool in a SINGLE markdown table. Use ONLY data from the tool result; write N/A for any missing field — NEVER invent values.
Step 3 — For each ETF: 1-line assessment (what makes it conservative).
Disclaimer: quantitative screening, not personalized advice.
--- STOCK MODE (anything else) ---
Parse the STOCK-mode tokens from "{arg}" (space-separated). The optional literal word "stock" may appear and is ignored.
- N: a bare integer → how many top stocks to present. Default=10, min=1, max=40. If a value >40 is requested, use 40 and say so.
- FLOOR: a token "f" immediately followed by digits (e.g. f100) → the candidate pool size passed to ranked_opportunities.
Default=50, min=50, max=150. If a value >150 is requested, use 150 and say so; if <50 is requested, use 50 and say so.
- STRATEGY: the literal word "balanced", "trend" or "contrarian" → the momentum tilt passed to the ranking tools.
Default="balanced". trend rewards uptrends; contrarian rewards oversold/beaten-down names. Any other word is ignored.
- AI_WEIGHT: the word "ai" followed by a number (e.g. "ai 0.5" or "ai0.5") → how much your ai_score may move a
candidate. Range 0.1-1.0, default=0.35. Clamp out-of-range values and say so in one short line.
- SECTOR_CAP: the word "sector" followed by an integer (e.g. "sector 5" or "sector5") → max rows per sector in the
final table. If ABSENT there is NO cap; if present, pass exactly the number the user wrote.
Examples: "10" → N=10 FLOOR=50 STRATEGY=balanced AI_WEIGHT=0.35 no sector cap; "contrarian" → STRATEGY=contrarian;
"20 trend f150" → N=20 FLOOR=150 STRATEGY=trend; "10 ai 1 sector 3" → N=10 AI_WEIGHT=1.0 SECTOR_CAP=3; "ai 0.05" → AI_WEIGHT=0.1 (clamped).
If "{arg}" is blank or literally "{arg}", use N=10 FLOOR=50 STRATEGY=balanced AI_WEIGHT=0.35 and no sector cap. Do NOT echo your parsing or repeat any preamble — go straight to the steps below.
Step 1 — Candidates. Call ranked_opportunities with profile="low", strategy=STRATEGY, and limit=FLOOR (ONE call).
It returns candidates PRE-RANKED by a composite score (sector-relative percentiles + 5-factor model), grouped into BATCHES of 5
in data.batches (data.batch_count batches, last one may be smaller). Do NOT call preset_screener or get_key_ratios — everything you need is in the tool result.
Step 2 — AI re-score, BATCH BY BATCH. Process the batches IN ORDER. For each batch (up to 5 candidates) assign EACH an ai_score
0.00-1.00, judging it as a LOW-RISK BUY:
reward dividend yield, low D/E, high Piotroski/Health, low beta, positive FCF yield, strong current ratio, reasonable valuation;
penalise high beta, high D/E, negative FCF, speculative growth.
After each batch, append its {ticker, ai_score} pairs to a running list you carry forward through EVERY batch. Do NOT skip batches.
Step 3 — Finalize (deterministic). After the LAST batch, make ONE call to finalize_ranking with profile="low", strategy=STRATEGY,
top_n=N, ai_weight=AI_WEIGHT, max_per_sector=SECTOR_CAP (OMIT this argument entirely when the user gave no "sector" token)
and scores = the FULL list of {ticker, ai_score} you collected. The server computes final = composite_score + ai_weight × ai_score,
sorts, applies the sector cap and returns data.ranked (top N). Do the math and the sort with this tool — never rank by hand.
If data.sector_skipped is non-empty, add ONE short line naming the tickers dropped by the sector cap.
Step 4 — Present the top N from data.ranked (already in order). ONE markdown table:
Ticker | Name | Sector | Price | MCap | Composite | Final | Piotroski | AltmanZ | Health | P/E | Div Yield
Div Yield column: use dividend_yield_pct (it is ALREADY an annual percentage, e.g. 1.5 → "1.5%"; do NOT multiply by 100). Write N/A when it is null (non-payer).
Then, for each of the top N, a 2-4 sentence BUY thesis: entry rationale (pullback/valuation), key strengths (with numbers),
main risk, and analyst upside. Use ONLY numbers from the tool data; write N/A if a metric is missing — never invent values.
Disclaimer: quantitative ranking, not personalized advice.