Sector allocation — % of your portfolio in each GICS sector. Watch any sector >25%.
Pairwise correlation — daily-return correlation over the last 90 days. Bright red = move together (risk concentration).
Scenario shocks — beta-weighted P&L estimate for predefined market moves. Caveat: no rebalancing, no transaction costs.
Sector allocation
Top positions by weight
Pairwise correlation (90d)
Scenario shocks
Dip Buy — Quality names in short-term correction
Strategy
Contrarian dip-buy on quality names
Hunt deeply oversold US large-caps where the long-term trend is still intact, analysts see upside, and accumulation hasn't broken down.
We want to buy weakness in winners, not catch falling knives or chase momentum.
Trend filter:EMA100 > EMA200 — keeps us in names that are still longer-term uptrends.
Oversold trigger:RSI < 35 — price has been beaten down meaningfully; auto-loosens to < 40 if < 10 hits.
Turning-up trigger:MACD line < signal AND rising (line > line[-3]) — momentum has been negative but is now starting to reverse upward. We catch the inflection, not the still-falling middle.
Smart-money check:OBV not > 10% below 20d ago — institutional accumulation hasn't fully reversed.
Value sanity:P/E < 40 (Mag 7 exempt) — avoid the most stretched valuations except for the dominant growth names.
Analyst confirmation:price < 12-mo consensus target — the Street sees room above today's level.
Liquidity floor:mcap > $5B — only tradeable names.
The bet: a deeply oversold quality name where short-term momentum has just turned upward, in a long-term uptrend with analyst tailwind, will reassert. We're paid by the bounce — and the MACD-turning-up trigger keeps us from being too early; the trend filter keeps us out of broken stories.
Two modes (toggle above):Strict = the screen as described (RSI<35 · MACD turning up · OBV<10% decline · P/E<40).
Loose = relaxed thresholds for days when Strict yields nothing (RSI<50 · MACD<signal regardless of direction · OBV<20% decline · P/E<50). The trend filter (EMA100>EMA200) and pre-filter (mcap>$5B, price<analyst target) stay on in both — those are the structural quality gates we never give up.
RSI<
▶Criteria applied to this list
P&L Tracker
Portfolio attribution — what's driving your performance
Attribution decomposes each period's NAV change into equity price moves, option MTM, structured coupons, realized trades, FX, and fees. Daily snapshots start accumulating from today — Day mode works now; Week/Month/Quarter get more accurate as history builds. Alpha vs Beta compares your actual move to what your portfolio "should have" done given SPY's move.
Data: Yahoo · 15-min delayed · yfinance
Structured Products
Tracking your HSBC structured product positions. Each card shows: notional, dates, days remaining, every underlying's current price vs initial, worst-of position, autocall eligibility. For HK underlyings, live prices are converted from US ADRs using ADR ratios + the USD/HKD peg (approximate — verify with IBKR/Bloomberg). To refresh from new term sheets in HSBC Structured Products/: cd into Portfolio Overview, then python3 parse_termsheets.py.
▶FCN PricerShould I buy this HSBC term sheet, or roll my own puts on IBKR?
Uses realized vol (60d) + correlation from cached data. 5,000 correlated GBM paths.
The RELATIVE FCN vs DIY answer is robust across vol assumptions; absolute coupon numbers are approximate.
KOL Calls — X-post tracker
What this is: a manually-curated log of stock calls from specific X (Twitter) accounts you follow.
How to add a call: open HSBC instructions/kol_calls.csv in Numbers/Excel, add a row with (kol_name, x_handle, post_date, ticker, conviction, notes, post_url), save, then run the screener.
What's auto-computed: the close price on post_date is pulled from the cached chart history; current price comes from the live feed; return % and days-since are derived. No staleness — recomputes on every run + intraday refresh.
Per-KOL performance
Period:
All calls
Diagnostics
Raw data + freshness stats. Not for daily viewing — use to debug when
something looks off in a normal tab.