Company detail (TRMB-style)
The detail view of an underlying (tab Companies or click a symbol in the screener) groups all valuation, dividend and drawdown signals on a single page.
Page groups (in-page navigation)
The sticky in-page navigation at the top is split into four logical groups. Click a chip to jump straight to the matching section:
- Company — Description · Peers
- Fundamentals — Health · Sector · Dividend · Earnings
- Market & Vola — Price + ATR · Drawdown · HV rank · Performance
- Verdict — Pros / Cons · AI outlook
The AI-generated verbal outlook stays at the very bottom on purpose – it is by far the longest section.
Header
- Symbol, name, sector, industry, country, exchange, currency.
- Live price (with day change) and market cap.
- Star button: toggles the symbol on/off the default watchlist.
Health score 0–100
Computed from five fixed-weight pillars:
- P/E ratio 25 %
- Payout ratio 25 %
- Beta 20 %
- Dividend yield 15 %
- Market cap 15 %
ROE, margin and debt are not in the data model yet — these slots will be filled in a later phase.
Sector comparison
Median PE / dividend / payout / beta of all companies in the same sector so you can immediately see whether the stock trades above or below the sector median.
PUT-opportunity banner
A heuristic combining drawdown depth and fundamental score classifies the underlying:
| Label | Meaning |
|---|---|
| FALLEN ANGEL | Deep drawdown plus solid fundamentals — classic PUT zone. |
| SOLID PUT ZONE | Healthy correction in solid fundamentals. |
| FALLING KNIFE | Deep drawdown plus weak fundamentals → stay away. |
| CAUTION | Deep drawdown in moderate fundamentals. |
| CALL CANDIDATE | Very close to ATH → covered calls preferred over PUTs. |
Drawdown classification
One card per 52-week high and all-time high (ATH) showing:
- Drawdown band: STRONG / HEALTHY / MODERATE / SIGNIFICANT / SEVERE /
EXTREME.
- Fund band: STRONG / MODERATE / WEAK (from the health score).
- Traffic-light color and strategy hint.
- 1:1 port of the desktop classifier
(app/utils/drawdown_classifier.py).
Historical payout stability (score 0–100)
Purely backward-looking metric derived from the dividend history. Not a forecast and no statement about future dividend capability.
- Payout ratio 40 pts: ≤ 50 % = 40, ≤ 70 % = 25, ≤ 90 % = 10,
else 0; unknown = 12.
- 5-year consistency 30 pts: no cut > 5 % = 30, otherwise scaled.
- 5-year CAGR 30 pts: ≥ 8 % = 30, ≥ 4 % = 20, ≥ 0 % = 10, negative = 0.
Label: Strong / Solid / Risk / Endangered plus last dividend amount and a warning if a cut was detected in the past five years.
Upcoming dividends
The next three calendar entries with ex-date and amount.
Company description
- Source:
longBusinessSummaryfrom yfinance — English text. - If a DeepL API key is stored under Globals → DeepL and the app
language is set to German, the description is translated automatically and cached for 24 hours.
- Free keys (suffix
:fx) and pro keys are detected automatically. - Employee count and website are shown alongside the text.
If no German translation is available, an inline hint is shown.
Main competitors
Right below the company description the Main competitors section lists up to eight peers from the same industry cluster, each with a live yfinance snapshot: price, market cap, P/E, dividend yield, a simplified fund score (0..100 with 🟢/🟡/🔴 traffic light) and the distance from the 52-week high.
- The mapping is static and kept in sync with the desktop app.
- Click the symbol (or "Open →") to jump straight to that peer's detail
page.
- Peers without live data (e.g. delisted symbols) are hidden.
- Quick jump via the in-page nav at the top ("Competitors").
Auto investment thesis / risk flags
Bullets are generated automatically from the sector-median comparison, e.g.:
- "PE 18 vs sector median 25 → cheap."
- "Beta 1.6 → above-average volatility."
- "Earnings within 7 days — premium spike but increased risk."
Payout ratio hint
Next to the "Payout ratio" metric in the header and in the sector- comparison row a small info dot appears. Tap it to open the tooltip:
Share of annual earnings paid out as dividends. Rule of thumb: up to 60 % healthy, 60–90 % monitor, > 90 % is hard to sustain from operating cash flow and increases the risk of a cut.
Strike range from your filter settings
Right below the Market & volatility card there is an expandable block "Strike range from your filter settings". It is not investment advice and does not formulate a trade suggestion – it simply visualises which strike candidates the internal screener would derive from your filter settings if it filtered this underlying's option chain.
Data sources:
- Current spot (
last_close) and ATR(52) from the same market-data
card above. ATR(52) is also the reference the screener / metric evaluation uses internally (atr_period_days = 52).
- Effective filter settings of the active account (account overrides →
plan defaults → system defaults), endpoint /api/strategy/effective/active.
Wheel stages shown:
- Short-Put stage 1 — strike range = `Spot − [put_level1_atr_min …
put_level1_atr_max] · ATR(52), plus minimum-yield criterion put_level1_min_roc`.
- Short-Put stage 2 — analogous with the L2 fields (filtered more
strictly, usually narrower and further away).
- Covered call — strike range = `Spot + [call_level1_atr_min …
call_level1_atr_max] · ATR(52), plus additional criterion cc_require_strike_above_cost` (opt-in filter, off by default; when you enable it, the strike must be at or above cost basis).
The block is a pure calculation view. For any order, cross-check delta, IV and time to expiry in the actual option chain; the ATR distance is an approximation, not a substitute for the option-pricing model. The ATR distance is labelled as a multiple (e.g. 1.38× ATR); the underlying's raw ATR(52) is a separate USD value.
If ATR(52) is missing (e.g. a symbol that was just added and has no history yet), the block shows "please click 'Refresh' above" – after a market-data refresh the strike range is available immediately.