Etf reit onboarding
Skill build-with-dhiraj/ai-workflow-framework-portability-kit/Skills/etf-reit-onboarding
Systematically FIND, GRADE and BUY great ETFs / REITs / InvITs that ride durable global trends — evaluating funds LIKE stocks (verdict → conviction → margin-of-safety) and holding the good ones for life. The fund mirror of the stock onboarding pipeline. Use when the user says "add an ETF/REIT/InvIT", "grade this fund", "build a global-trend buy-list", "passive sleeve", "evaluate a fund like a stock", "should I buy <ETF>", "is this trend worth owning", or wants to extend / re-rank the global-trend exposure list. Workspace: /Users/Dhiraj/dev/invest. Publish target is the 🌍 Global & Passive Base tab (re-architected per the plan) — the LOCKED Action Dashboard is NEVER touched. Charlie Munger & Warren Buffett (the Obsidian vault) are the binding CIO; the vault gates trend-durability/conviction/verdict/MoS — it is not narrative decoration.From its SKILL.md
npx -y skills add build-with-dhiraj/ai-workflow-framework-portability-kit --skill etf-reit-onboardingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 1 credential source: `/Users/Dhiraj/dev/invest/.env`.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `set -a && source /Users/Dhiraj/dev/invest/.env && set +a && /Users/Dhiraj/dev/invest/.venv/bin/python /Users/Dhiraj/dev/invest/data/scripts/32_consult_brain.py --company "<trend or fund name>" --model`.
SKILL.md
28.4 KB, ~7.6k tokens by cl100k_base, as published. Nobody here has run it
ETF / REIT / InvIT Onboarding Pipeline (global-trend machinery)
The single source of truth for finding and grading global-trend funds, REITs and InvITs, and publishing
them to the 🌍 Global & Passive Base tab. Follow the stages in order. This is the fund mirror of
[[stock-onboarding-pipeline]]: the SAME board (binding Munger/Buffett CIO · 31 perspectives · 14 canon ·
8 desks · WC) evaluates ETFs/REITs the same way it evaluates stocks — verdict → conviction → margin of
safety. The design source of truth is /Users/Dhiraj/.claude/plans/build-a-plan-to-iterative-creek.md.
The retrieval plumbing is identical to the stock pipeline — all vault consultation goes through
data/scripts/32_consult_brain.py (scoped, cited, structured), now carrying the four NEW fund models
passive-etf | commodity-etf | reit | invit. ETF/REIT mechanical fund-quality reuses the MF methodology
(extracted/mf/_mf_methodology.md + _mf_rubric.md); REIT/InvIT dossiers reuse the ALTIUS template
(vault/research/dossiers/ALTIUS.md).
North star
The 🌍 tab is a forward BUY-LIST of durable global-trend exposures in search of a small set of CORE holds you keep for life — NOT a one-off cleanup of what's already held, and not a sprawling basket of every thematic ETF. The point is to buy good ETFs, keep good ETFs, and compound wealth via durable global megatrends — the fund-side parallel of the stock FOREVER/COMPOUND hunt. Bogle/Buffett's default (broad, lowest-cost index held for life) is the anchor; thematic trends are capped satellites you buy only when the underlying index is at a sane valuation. Finding that a trend is real but expensive right now → WATCH, don't buy is an acceptable, expected result. Patience on the entry is the edge.
The framework — evaluate ETFs / REITs LIKE stocks
Map the stock machinery's three sort keys onto funds so the board reasons identically:
| Stock key | ETF analog | REIT / InvIT analog |
|---|---|---|
| Moat (durable advantage) | Trend durability (is the exposure a 10-yr structural tailwind, not a fad?) × wrapper quality (lowest TER · tightest tracking error · deepest AUM/liquidity · right structure · best tax bucket) | Asset/lease durability · tenant diversification · sponsor quality · contracted-revenue runway (WALE) |
| Conviction 1–5 | trend-strength × wrapper-quality (a broad low-cost index defaults HIGH; a narrow thematic ETF needs higher proof to earn the same band) | adapted ALTIUS-style filters — InvIT/REIT conviction CAP 2 (yield instrument, not a compounder) |
| Margin of safety | index valuation vs its OWN history (CAPE / PE percentile) — don't pile into an expensive index; wait for the trend at a sane price | sustainable (return-ON-capital) distribution yield vs the ~9–10% required yield (ALTIUS method) |
Verdict tiers (re-cut to mirror the stock 5-tier — so they read the same):
- CORE (≈ FOREVER): the broad, lowest-cost index you hold for life regardless of price (Bogle/Buffett default — broad-world, Nifty-500-style India core). The anchor. This is the only tier where price is not a gate.
- COMPOUND-TREND (≈ COMPOUND): a high-conviction durable global megatrend (AI/compute · US innovation · India structural growth · energy transition · EM …) via the best India-accessible wrapper, at a fair index valuation — buy and hold for years.
- WATCH: great trend + great wrapper, but the underlying index is expensive now → wait for the entry (the MoS gate is unmet).
- AVOID: a bad wrapper (high TER / poor structure / bad tax bucket / wide tracking error) OR a fad / fading trend.
- TOO_HARD: trend durability is genuinely unknowable, or there is no clean India-accessible wrapper for it.
Rank key = verdict → conviction → MoS (exactly the stock key). Here MoS = how far the index trades below its own fair/historical value (ETF) or how far the sustainable yield clears required (REIT/InvIT). This is what lets the board "look at ETFs the same way as stocks." TOO_HARD is quarantined OFF the buy-list.
HARD RULES (never violate)
- The binding CIO is the arbiter.
data/scripts/32_consult_brain.py --corpus binding(Munger/Buffett vault) gates trend-durability, conviction, verdict and MoS at Stages A/B/C. The new perspectives & canon (Bogle, Malkiel/Ellis, Damodaran-REITs, Dalio, Marks) are down-weighted advisory context surfaced via--corpus blended— they SHARPEN the call but NEVER reverse a--corpus bindingverdict. - The vault is BINDING, not decoration.
cites_principlesmay contain ONLY slugs the brain actually returns (principles[].slug/citation). No fabricated citations. Ifprinciplescomes back empty/thin → ABSTAIN + flag, never pad. (29_vault_chat.pystays available for free-form cited Q&A / ad-hoc grilling.) - Never fabricate a trend, a TER, a tracking error, an index valuation, a DPU, or a yield. Every number is fetched (INDmoney / WebFetch / BSE filing) or it is flagged as unknown. A guessed number is worse than a missing one. (See [[feedback-paywall-enumeration-honesty]] / the never-fabricate rule in memory.)
- Evaluate funds LIKE stocks — three sort keys, five verdict tiers, rank = verdict → conviction → MoS. A fund is not exempt from the discipline because it is "passive." A narrow thematic ETF must EARN its conviction band against trend-durability × wrapper-quality, exactly as a stock earns its moat grade.
- Trend durability is the moat, and it is a HARD GATE before price. Order of analysis: is-the-trend-durable → is-the-wrapper-best-in-class → ONLY THEN index valuation. A fad trend, or a great trend wrapped in a costly/badly-structured/badly-taxed vehicle, cannot earn high conviction regardless of how cheap the index looks.
- Conviction = JUDGMENT, not a formula (Munger: avoid false precision). Gates: fad/fading trend → AVOID; no clean wrapper → TOO_HARD; InvIT/REIT → conviction CAP 2 (a yield instrument cannot be a compounder, so its ceiling is WATCH — never COMPOUND-TREND or CORE). A broad lowest-cost index defaults to high conviction (low cost IS the durable edge); a narrow thematic needs higher proof for the same band.
- Margin of safety is THE gate. ETF → index valuation vs its own history (CAPE/PE percentile); a durable trend at a stretched index → WATCH, not buy. REIT/InvIT → the sustainable (return-ON-capital) yield vs the ~9–10% required yield (ALTIUS method — strip return-OF-capital out of the headline DPU before judging). The ONLY tier exempt from the MoS gate is CORE (Bogle's "buy the haystack, hold for life regardless of price").
- For passive ETFs, low cost IS the moat —
moat-analysisdoes NOT apply. Do not run the business-moat taxonomy on a passive index fund; its edge is structural (cost + breadth + tracking), graded by the wrapper-quality read and the MF cost/overlap gates.moat-analysisapplies ONLY to the trend-durability judgment (Stage A) and to REIT asset/tenancy durability — never to "the index fund's moat." - InvIT/REIT = yield instrument, dossier on the ALTIUS template. Full dossier at
vault/research/dossiers/<CODE>.md(brain_model: reitorinvit): 6-filter walk (Filter 2 = asset + contracted tenancy, Filter 3 = distribution coverage + return-OF vs return-ON split, Filter 5 = distribution-yield vs required, NOT a growth DCF), FFO/AFFO · LTV · occupancy · WALE, distribution-yield MoS, numeric buy-below + trim/sell triggers, kill criteria, 5-tier verdict. Live price via BSE code for InvITs (GOOGLEFINANCE NSE will not resolve — see ALTIUS). - NEVER edit the LOCKED Action Dashboard. The stock dashboard ([[feedback-sheet-is-locked]]) is canonical and untouched by this pipeline. ETFs/REITs publish ONLY to the 🌍 Global & Passive Base tab. Back up the 🌍 tab before any write; if a helper disagrees with the live tab, FIX THE HELPER, never the sheet.
- Sell ₹ + Upside are written for every NON-CORE verdict — never blank them (mirrors the stock rule). WATCH / AVOID / TOO_HARD each carry a numeric Sell/trim target AND an Upside% (honestly negative when the price is above fair value). ONLY CORE / COMPOUND-TREND show "∞ hold". For REIT/InvIT the trim target is the price at which the yield compresses materially below required (ALTIUS: trim above ~₹185, sell above ~₹200).
- 5-tier verdict exactly one per vehicle: CORE / COMPOUND-TREND / WATCH / AVOID / TOO_HARD.
CONSULTING THE BRAIN (data/scripts/32_consult_brain.py — the ONE retrieval entrypoint)
set -a && source /Users/Dhiraj/dev/invest/.env && set +a && /Users/Dhiraj/dev/invest/.venv/bin/python \
/Users/Dhiraj/dev/invest/data/scripts/32_consult_brain.py \
--company "<trend or fund name>" \
--model <passive-etf|commodity-etf|reit|invit> \
--step <circle|conviction|intrinsic-value|margin-of-safety|opportunity-cost|verdict|inversion|capital-allocation|sizing> \
[--corpus <binding|blended>] [--entities <peer-slugs,comma-sep>] [--k 8] \
--json-out extracted/grilling/<CODE>_<step>.json
- NEW models (Phase 2, the only change to
32_consult_brain.py— 4 dicts:MODELS,MODEL_PHRASE,MOAT_HINT,MGMT_HINT):passive-etf— broad/thematic index funds. MOAT_HINT = trend durability × wrapper quality (cost/tracking/liquidity/structure/tax); MGMT_HINT = tracking discipline + AMC/issuer reliability.commodity-etf— gold/silver/commodity wrappers. MOAT_HINT = hedge/diversification role + storage/structure quality; valuation lens = real-asset / cycle, not earnings.reit— real-estate trusts (e.g. Embassy). MOAT_HINT = asset + lease durability, tenant diversification, sponsor; MGMT_HINT = sponsor quality + capital allocation (dividend/M&A).invit— infra trusts (e.g. ALTIUS/Embassy-style annuities). Same asreitbut conviction CAP 2; MOAT_HINT = contracted-tenancy annuity + WALE; MGMT_HINT = sponsor + leverage discipline.
- What it does (unchanged): derives 2-3 model-aware retrieval questions, routes internally (specific model
or entities → ScopedLanceDBBackend, 0 Azure calls;
general+ no entities → hybrid + GPT rerank — never stacked), RRF-merges + dedupes, hygiene-filters to mentors' atomics/raws + canon/perspectives +_synthesis(hubs/MOCs/_system/dossiers/positions excluded; every path verified on disk). Assets carrybrain_model: <slug>. - How to read the output:
principles: [{claim, path, slug, citation, mentor, note_type, source_note, …}].claim= the principle to apply;citation/slug= the ONLY tokens permitted incites_principles;source_note= traceability to the raw transcript/letter/lecture. Emptyprinciples→ vault is thin here → ABSTAIN + flag, never pad. - Corpus discipline:
--corpus binding(Munger/Buffett ONLY) for every conviction/verdict/MoS/inversion gate — this is the arbiter.--corpus blendedto ALSO surface the new world-canon (Bogle, Malkiel/Ellis, Damodaran-REITs, Dalio, Marks) + desk-synthesis atomics for trend-durability and wrapper context — advisory, down-weighted, never reverses a binding verdict. - Step → lens map (binding): circle→circle (is this a trend/structure you understand?) · conviction→ moat(=trend-durability)+management(=wrapper/sponsor)+owner-earnings(=coverage for REITs) · intrinsic-value→ index-fair-value / REIT distributable-DCF · margin-of-safety→index-valuation-vs-history / yield-vs-required · opportunity-cost→opportunity-cost (vs the CORE index and the equity book) · verdict→trend+wrapper+opp-cost · inversion→fad-trend? + flawed-wrapper? + bubble-index? (disconfirming) · capital-allocation→REIT dividend/M&A discipline · sizing→kelly + conviction-cap + concentration (passive core disciplined, thematic capped).
FINANCE-DESK SPECIALISTS (additive advisory layer — they inform; the binding CIO at A/B/C decides)
Dispatch these sharpened desk skills to SHARPEN the analysis. They are an additive, --corpus blended-informed
advisory layer (blended surfaces desk-synthesis atomics + the new world-canon ALONGSIDE binding); the
perspectives they surface are down-weighted and NEVER reverse a --corpus binding verdict. The
Munger/Buffett CIO stays THE arbiter. No new desk seats — the existing 8 desks gain ETF/REIT competence.
| Skill | Attaches at | ETF role | REIT / InvIT role |
|---|---|---|---|
moat-analysis | A (& B) | trend-durability judgment ONLY (NOT a passive ETF's "moat" — low cost is the moat, rule 8) | REIT asset / lease / tenancy durability |
valuation-dcf-longrunway | B | n/a (index uses CAPE/PE-vs-history, not a DCF) | REIT distributable-DCF (FFO/AFFO over a long runway; the ALTIUS 12%-hurdle DCF) |
bank-valuation | B | n/a | REIT leverage / justified-P-BV (LTV discipline, the levered-trust read) |
forensic-accounting-redflags | B | ETF structure integrity (synthetic vs physical replication, securities-lending, issuer/counterparty risk) → CLEAN/CAUTION/RED | REIT sponsor + related-party + distribution-quality integrity (return-OF vs return-ON honesty) |
capital-allocation-judge | B | n/a (passive — no capital allocation) | REIT dividend / M&A discipline (Outsiders scorecard on the sponsor; e.g. debt-reduction IPO) |
portfolio-sizing | D | Max-size (passive core = disciplined anchor; thematic = capped satellite) | Max-size as an income sleeve, not a concentrated bet |
decision-journal | D | thesis + kill-criteria + trend re-decision cadence | thesis + kill-criteria (yield-break, rate-shock, tenant impairment) |
primary-research-sentiment | A & B | live trend sentiment (Reddit/X/news) — disconfirmation-seeking | tenant/sponsor/sector DD harvest |
Also available: creating-financial-models (the DCF engine for REIT distributable-DCF and index fair-value),
idea-researcher + deep-research (global-trend discovery & temporal "what's happening now" layering),
grill-with-docs / grill-me (stress-test a trend conviction before it earns COMPOUND-TREND).
MODEL / EFFORT TIERING (max-effort, not ultracode)
- Stage A trend-durability scoring (the wealth engine): Sonnet workflow, vault-bound, one rigorous pass per trend; escalate a contested CORE/COMPOUND-TREND trend to Opus for the durability call.
- Stage B grading over the full set: Sonnet workflow (judgment, vault-bound, structured output) — the analyst-desk fan-out + MF-methodology's 8 fund subagents run in parallel.
- Stage C inversion (adversarial — fad? flawed wrapper? bubble index?): Opus/Fable (few agents, high stakes).
- Data fetch (TER/tracking/NAV/AUM/DPU/index-valuation) + 🌍 tab publish: mechanical (Bash / MCP) — no model reasoning.
STAGE A — Global-trend map (the discovery front-end / wealth engine)
Before grading any single fund, decide which durable trends are worth owning at all. This is the front-end that has no equivalent in a "cleanup" — it parallels the stock FOREVER/COMPOUND hunt.
- Enumerate durable megatrends worth owning: broad-world · India structural growth · US innovation ·
AI / compute · energy transition · EM · gold/silver hedge sleeve. Write them to
extracted/research/global_trend_map.md(the trend-map artifact). - Score each trend's DURABILITY with the binding CIO + the new perspectives:
32_consult_brain.py --company "<trend>" --model passive-etf --step circle(do I understand the structural driver?) then--step conviction(is this a 10-yr tailwind or a fad?). Pull Dalio/Marks/Bogle/megatrend voices via--corpus blended; cite ONLY returned slugs. A trend whose durability is unknowable → TOO_HARD, off the map. Optionally enrich withidea-researcher/deep-researchfor live, dated sentiment. - Map each KEPT trend to its best India-accessible wrapper: the lowest TER, tightest tracking error,
deepest AUM/liquidity, best tax bucket vehicle (use
mcp__indmoney__get_indian_stocks_detailsfor the listed ETF + WebFetch mfdata.in/valueresearch for TER & tracking error;lookup_ind_keysfirst to resolve). If there is no clean India-accessible wrapper, the trend is still graded but flagged TOO_HARD-to-execute (the route may open later — US/LRS execution is kernel-deferred, out of scope to BUY, in scope to GRADE). Barrier: a ranked, cited trend map exists; every kept trend has a named best-wrapper candidate (or a TOO_HARD-to-execute flag).
STAGE B — Grade (like stocks), branching by asset type at Stage 0
For each candidate wrapper, branch by asset type:
B-ETF — passive / thematic / commodity ETF
The mechanical fund-quality layer reuses the MF methodology (extracted/mf/_mf_methodology.md) and the
6-factor rubric (extracted/mf/_mf_rubric.md):
- Fund facts (mechanical): TER, tracking error, AUM/liquidity, structure (physical vs synthetic),
tax bucket, issuer. Source: INDmoney
get_indian_stocks_details(nav/aum/ltp) +get_mf_funds_detailswhere applicable + WebFetch (mfdata.in / valueresearch for TER & tracking error). - MF-methodology subagents (parallel): Book Recon · Fund Facts · Holdings Quality · Overlap Mapper · Category Benchmarker · Cost & SIP Auditor · Debt Sleeve · Global Sleeve — the same 8 fund subagents, producing the wrapper-quality evidence.
- Apply the MF portfolio gates (the known structural checks): Overlap (effective overlap >40% → downgrade weaker one band — this reproduces the held-book overlaps: 4 commodity ETFs → consolidate to UTI Gold + ABSL Silver; Mirae FANG+ vs S&P-500-Top-50 overlap → retire the duplicate lot) · Concentration (single fund >25% of the passive sleeve) · Cap-bucket / sector-tilt (e.g. PSU-Bank-BeES) · Global (intl FOF + US ETFs >15% NW → consolidate to the lower-cost ETF).
- Conviction (trend × wrapper): the binding
32_consult_brain.py --model passive-etf --step convictionread, applied as JUDGMENT. Broad lowest-cost index → high; narrow thematic → must prove durability for the same band. Bad wrapper (high TER / poor structure / bad tax / wide tracking) → caps conviction or → AVOID. - MoS (index valuation vs its OWN history): CAPE / PE percentile of the underlying index (WebFetch the
index CAPE/PE;
--step margin-of-safety). A durable trend at a stretched index → WATCH. Cheap-vs-history- durable + best wrapper → COMPOUND-TREND (or CORE if it is the broad anchor).
- Verdict + Sell/Upside: one 5-tier verdict; numeric Sell/Upside for every non-CORE row (rule 11).
forensic-accounting-redflagschecks ETF structure integrity (synthetic/securities-lending/counterparty).
B-REIT / B-InvIT — full ALTIUS-template dossier
Write vault/research/dossiers/<CODE>.md to ALTIUS depth (read vault/research/dossiers/ALTIUS.md as the
template; frontmatter note_type: dossier, brain_model: reit or invit):
- 6-filter walk-through, yield-instrument-adapted: Filter 1 Circle · Filter 2 Moat = asset quality +
contracted tenancy/escalators (WALE) · Filter 3 Owner-earnings = distribution coverage + return-OF vs
return-ON-capital split (the heart — strip return-OF-capital out of the headline DPU) · Filter 4
Management = sponsor quality + capital allocation (
capital-allocation-judge) · Filter 5 MoS = distribution-yield vs required (~9–10%), NOT a growth DCF · Filter 6 Opportunity cost. - The metrics: FFO / AFFO · LTV (vs SEBI ceiling) · occupancy · WALE · NAV premium/discount · DPU split (return-ON ₹ + return-OF ₹) · headline yield vs sustainable (income-only) yield vs required.
- Valuation = distribution-yield MoS (+ a
valuation-dcf-longrunwaydistributable-DCF cross-check at a strict hurdle, the ALTIUS 12% read;bank-valuationfor leverage / justified-P-BV). Buy-below = the price where the SUSTAINABLE income-only yield clears required; trim/sell = where the yield compresses below required. - Conviction CAP 2 (rule 6 — yield instrument, ceiling = WATCH). Kill criteria (tenant/MSA impairment,
rate shock, distribution-coverage break, leverage creep).
forensic-accounting-redflagson sponsor + distribution-quality. 5-tier verdict (in practice WATCH or AVOID for a REIT/InvIT — never COMPOUND-TREND/CORE). - Data: BSE filings for DPU (live price via BSE code — GOOGLEFINANCE NSE will not resolve for InvITs). Barrier: every candidate has a verdict + conviction + MoS; REIT/InvIT dossiers mirror ALTIUS depth.
STAGE C — Inversion (Opus, adversarial)
For every CORE / COMPOUND-TREND candidate, a skeptic pulls disconfirming vault principles
(32_consult_brain.py --company "<trend/fund>" --model <model> --step inversion) and argues the strongest
case AGAINST: is the trend a fad / already fading? (the megatrend that everyone already owns) ·
is the wrapper structurally flawed? (synthetic replication, securities-lending counterparty, a tax trap,
chronic tracking drift, thin AUM that could close) · is the index in a bubble? (CAPE in its top decile —
a durable trend bought at a euphoric index is still a bad buy). Survive all three axes → keep the tier; else
demote (default = demote). decision-journal records the pre-mortem + kill-criteria. Desk perspectives inform
but never lift a fund into CORE/COMPOUND-TREND — the --corpus binding gate decides.
STAGE D — Buy-list + sizing (mechanical-ish)
portfolio-sizingsets Max-size (--step sizing --corpus blended): the passive base stays a disciplined CORE (the anchor, sized for life); thematic = capped satellites (Kelly-fraction / half-Kelly, conviction-scaled ceilings, concentration discipline — few bets, hold the good ones, don't over-trim winners). REIT/InvIT sized as an income sleeve, not a concentrated bet.decision-journalrecords the thesis + kill-criteria per kept fund (what we believe, the bet size, what would change our mind, the trend re-decision cadence).- Rank the WHOLE set (verdict → conviction → MoS); TOO_HARD quarantined off the buy-list. Produce the ranked, cited buy-list (is there a CORE/COMPOUND-TREND worth buying NOW at a sane valuation, vs WATCH the expensive ones).
STAGE E — Publish to the 🌍 Global & Passive Base tab (mechanical, no rework)
⚠️ READ BEFORE TOUCHING THE SHEET — the LOCKED Action Dashboard is NEVER touched ([[feedback-sheet-is-locked]]). ETFs/REITs publish ONLY to the 🌍 tab. The 🌍 tab is RE-ARCHITECTED from scratch per the plan (the old CORE-PASSIVE/ACCUMULATE 11-col sketch is a data point, NOT a template). BACK UP the 🌍 tab first; same auto-coloring / locked-format discipline as the stock dashboard; if a helper disagrees with the live tab, FIX THE HELPER, never the sheet, and never bypass a helper with raw writes for new/reordered rows.
Re-architected 🌍 tab schema (reads like the stock dashboard — a decision cockpit):
Rank · Vehicle · Trend/Exposure · Verdict · Conviction · Buy-zone (index-value) · Live NAV/price · Upside · TER · Tracking-error · Tax-bucket · Liquidity/AUM · Held? · Max-size · Why (1-line) · Sources
with a REIT / InvIT block carrying: Yield · Sustainable-yield (income-only) · NAV premium/discount · LTV · Occupancy.
- Rank key = lexicographic (verdict_tier [CORE < COMPOUND-TREND < WATCH < AVOID < TOO_HARD], −conviction, −MoS). No other tiebreakers. TOO_HARD quarantined off the buy-list rows.
- Values: conviction (capped 2 for REIT/InvIT), buy-zone = index-fair-value entry (ETF) or the
sustainable-yield-clears-required price (REIT), verdict = the 5-tier. CORE / COMPOUND-TREND → "∞ hold";
WATCH / AVOID / TOO_HARD → numeric Sell/trim + Upside% (rule 11 — never blank a non-CORE Upside).
Why= the one-line thesis from the dossier / fund brief (never an Obsidian[!info]callout). - Publish runbook: (1) BACK UP the 🌍 tab (values + grid) to a revert point. (2) Build/extend the
fund/REIT publish helper (parallels the stock
multi_insert_*/sync_dashboard_extras.jshelpers — reads the full grid, re-stamps Rank, carries any hyperlinks byte-for-byte, regenerates row-relative formulas, colors by verdict). Always--dry-runfirst. (3) Lock formatting if the layout changed. - Reindex: new REIT/InvIT dossiers →
.venv/bin/python data/scripts/26_build_lancedb_index.py --vault vault --db vault/.lancedb(auto-reloads the warm daemon; confirm/health). Remember the HEAD-WINDOW rule — a dossier correction must edit the head snapshot + one-line thesis, not just a tail append (only the ~4,000-char head vector is embedded). - Update memory ([[reference-paise-se-paisa-sheet]] / the global-trend note) with the new 🌍 order + which trends are CORE/COMPOUND-TREND-worth-buying-now vs WATCH-the-expensive, and the held-book consolidations.
KEY REGISTRY
- Publish target: the 🌍 Global & Passive Base tab (re-architected) on the Paise se Paisa sheet
(fileId
1N87younF990u-YGMOAiT8q6X-EtZ3jVovlWCF44orEY). The Action Dashboard is LOCKED and untouched. - Brain models (Phase 2,
data/scripts/32_consult_brain.py):passive-etf·commodity-etf·reit·invit— added to the 4 dicts (MODELS,MODEL_PHRASE,MOAT_HINT,MGMT_HINT); assets carrybrain_model: <slug>. Retrieval auto-applies (no STEP/corpus/weight changes). - Templates: REIT/InvIT dossier =
vault/research/dossiers/ALTIUS.md(6-filter, DPU return-ON/return-OF split, distribution-yield MoS, buy-below/sell triggers, kill criteria, conviction cap 2). ETF fund-quality =extracted/mf/_mf_methodology.md(8 subagents + 4 gates + Buffett 5-filter) +extracted/mf/_mf_rubric.md(6-factor M1–M6 rubric + verdict bands + overlap rules). - Scripts: brain consult
data/scripts/32_consult_brain.py(the BINDING gate — scoped+cited); free-form vault RAG29_vault_chat.py(ad-hoc only); index26_build_lancedb_index.py; DCF engine viacreating-financial-models/valuation-dcf-longrunway. - Data sources: INDmoney (
networth_holdings,get_indian_stocks_detailsnav/aum/ltp/sector,get_mf_funds_details,networth_allocation_breakdown,lookup_ind_keys) · WebSearch/WebFetch (TER & tracking error from mfdata.in / valueresearch; index CAPE/PE) · BSE filings (REIT/InvIT DPU; live price by BSE code) · optionally reddit / youtube MCP for live trend sentiment viaidea-researcher. - Artifacts: trend map
extracted/research/global_trend_map.md; brain consultsextracted/grilling/<CODE>_<step>.json; REIT/InvIT dossiersvault/research/dossiers/<CODE>.md. - VERDICT TIERS: CORE (≈FOREVER, the broad lowest-cost anchor, price-exempt) · COMPOUND-TREND (≈COMPOUND, durable trend at a fair index valuation) · WATCH (great trend+wrapper, expensive index → wait) · AVOID (bad wrapper OR fad/fading trend) · TOO_HARD (durability unknowable OR no clean wrapper). Rank = verdict → conviction → MoS.
- CONVICTION (1–5, judgment within gates): broad lowest-cost index → high (low cost is the moat); narrow thematic → must prove trend-durability × wrapper-quality for the same band. Gates: fad/fading trend → AVOID; no clean wrapper → TOO_HARD; REIT/InvIT → CAP 2. MoS gate exempt only for CORE.
- OUT OF SCOPE: US-via-dollar/LRS execution (kernel-deferred — a trend may still be GRADED for when the route opens, just not BUYABLE); new desk SEATS (the 8 desks gain ETF/REIT competence, no new seats); active mutual-fund onboarding (a separate book); any trade; any edit to the LOCKED Action Dashboard.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.