Stop the Blended Average Trap

Introducing Finmagine Portfolio Manager — Per-Broker Stop-Loss Discipline, Live XIRR, Index Beat & Multi-Asset Tracking in One Chrome Extension

v1.0.0 4 ASSET CLASSES 9 BROKERS

🌟 Finmagine Portfolio Manager — Now on the Chrome Web Store

Multi-broker tracker: Indian & global stocks, MFs, ETFs • Decision Journal, History Chart, Corporate Actions • Free

Install Free →
Published: February 28, 2026 | Updated: March 5, 2026 | 25 min read | Feature Introduction • Article 1 of 8

🎙 Multimedia Learning Hub

Video walkthrough, audio deep dive, and 74 interactive flashcards covering every aspect of the Blended Average Trap and portfolio discipline

What You Will Learn

Most portfolio trackers show you your blended average cost per stock. Finmagine Portfolio Manager does something different: it tracks each broker entry as a separate position with its own P&L, stop-loss, and XIRR. This article explains why that matters and what you get when every number is finally honest.

Core Concepts Covered:

🚫 The Blended Average Trap
  • Why blended cost hides risk
  • The re-entry illusion
  • What “flat” really means
📈 Per-Broker Tracking
  • 9 broker columns in Holdings
  • -5% stop-loss per position
  • Icon badge for breaches
🎯 XIRR & Index Beat
  • Annualised returns per holding
  • Nifty 50 & 500 benchmark
  • Portfolio-level XIRR
🌎 4 Asset Classes
  • Indian & Global Equities
  • Indian MFs & Global ETFs
  • Unified ₹ Overview
Finmagine Portfolio Manager is live on the Chrome Web Store. Search for "Finmagine Portfolio Manager" or visit finmagine.com/portfolio-manager.php for the direct link and full user guide.

🎥 The Blended Average Trap: Why Your Portfolio Tracker Is Lying to You

This video explains the Blended Average Trap with concrete examples, demonstrates per-broker P&L isolation, the stop-loss badge system, XIRR vs P&L%, the local-first architecture, and the full Finmagine Portfolio Manager feature set.

🎧 Why Blended Averages Hide Portfolio Losses — Full Architecture Teardown
Approx. 50 minutes • NotebookLM Audio Deep Dive

This two-host audio deep dive covers the full engineering architecture: per-broker isolation, the statutory fee engine, Newton-Raphson XIRR, the four-layer cache, stale-while-revalidate rendering, sequential 1500ms rate-limited fetches, ChartInk signal integration, the Watchlist research terminal, Journey chart mechanics, and the local-first privacy model.

Test Your Knowledge — 74 Flashcards

Click any card to reveal the answer. Search by topic to focus on a specific area.

Table of Contents

  1. The Blended Average Trap — Why One Number Lies
  2. What Is Finmagine Portfolio Manager?
  3. Four Asset Classes, One Unified View
  4. Per-Broker Tracking — The Core Innovation
  5. The Holdings Table — What Every Column Tells You
  6. Seven Tabs at a Glance
  7. XIRR & Index Beat — Are You Really Beating the Market?
  8. Charts & Visual Analytics — 12 Chart Types
  9. Local-First Architecture — Privacy by Design
  10. Getting Started in 3 Steps
  11. What’s Next in This Series

The Blended Average Trap — Why One Number Lies

It is Tuesday morning. You open your broker app and check your portfolio. TITAN is showing at ₹3,100. You bought it at a blended average of ₹3,000. You are up +3.33%. Everything looks fine. You move on.

But here is what that blended average is hiding:

Stock Broker Buy Price LTP P&L% Status
TITAN Zerodha ₹3,350 ₹3,100 -7.5% ⚠ STOP-LOSS
TITAN Groww ₹2,800 ₹3,100 +10.7% ✓ OK
Blended average +3.33% ― HIDDEN

The Zerodha position is down -7.5%. It has crossed your -5% stop-loss. It should have been exited. But the Groww position — bought lower after a re-entry — is doing beautifully at +10.7%. The blended average merges these two completely different investment decisions into one number: +3.33%. And +3.33% does not tell you to do anything.

The Blended Average Trap — illusion vs reality: a comfortable blended gain masks a breached stop-loss position
The Blended Average Trap — the comfortable blended number on the left vs. the real per-broker reality on the right. One entry is up +135%, another is down past its stop-loss. The blended view shows only the average.

This is the Blended Average Trap. It is not a failure of arithmetic. It is a failure of design. Any tracker that blends your cost across entries, brokers, or purchase dates is hiding information you need to make decisions.

The INFY Cross-Broker Scenario

Here is a real-world example drawn directly from a common investor situation. You hold Infosys at two different brokers. You bought a substantial lot at Zerodha a few months ago. The market shifted unfavorably and that specific Zerodha lot is bleeding — currently sitting at -5.2%. You have a strict -5% stop-loss rule. That specific lot has officially breached your threshold. It demands immediate action.

But you also bought Infosys at Groww earlier, at a significantly lower price during a major dip. That Groww lot is doing beautifully — up a healthy +10.7%. Your standard tracking app forcefully blends these two completely different realities together and presents you with a comfortable, glowing, green +3.33%.

Stock Broker Buy Price LTP P&L% Status
INFY Zerodha ₹1,620 ₹1,536 -5.2% ⚠ BREACH
INFY Groww ₹1,388 ₹1,536 +10.7% ✓ OK
What your broker app shows +3.33% ― MISLEADING
Infosys cross-broker example showing Zerodha lot breached at -5.2% masked by Groww lot at +10.7%
The INFY cross-broker scenario. A breached Zerodha lot (-5.2%) is perfectly masked by a healthy Groww lot (+10.7%). The blended result looks safe. Finmagine exposes each lot independently so the breach is never hidden.

You open your app while drinking your morning coffee. You see a green +3.33% next to the INFY ticker. Your brain registers green and you do nothing. That fictitious blended average is actively lying to your risk management. It is causing you to completely miss a critical stop-loss breach that is hiding inside the blended math.

The discipline behind the design. Finmagine Portfolio Manager is built for a specific kind of investor: one who applies strict per-broker stop-loss discipline. Each broker entry is a separate investment decision at a separate cost basis. One stock held at two brokers is two positions — each independently judged, each with its own P&L, each with its own exit trigger. The blended view is never shown because it is never meaningful.

The same trap applies when you sell a position after a stop-loss breach and later re-enter the same stock from a different broker at a new cost basis. A tracker that blends your historical trades will show you a fictitious average. Finmagine shows you exactly what you paid, when, from which broker — and compares it against the live price. No averaging. No hiding.

What Is Finmagine Portfolio Manager?

Finmagine Portfolio Manager is a Chrome extension that tracks your Indian and global investments across every broker you use, fetches live prices from Yahoo Finance and fundamentals via Finmagine's shared cache and Screener.in, computes annualised XIRR per holding, shows index beat vs Nifty 50/500, and provides on-demand charts — with a local-first architecture for core portfolio data and optional cloud backup for cross-device sync.

At a Glance

  • 4 asset classes: Indian Equities, Global Equities (US stocks), Indian Mutual Funds, and Global Funds/ETFs
  • Any broker: The extension is not connected to any broker. The broker name is a free-text label you enter yourself — use any broker, any platform, any shorthand.
  • 7 tabs: Holdings, Alloted, Consider, Add More, Watchlist, Charts, Alerts
  • Live data: Yahoo Finance (prices), Screener.in (PEG, CAGR, 18 fundamentals), ChartInk (5 signals), api.mfapi.in (MF NAV)
  • Analytics: XIRR per holding + portfolio, N50/N500 Index Beat, PEG, 3Y%/5Y% Price CAGR, Score
  • Charts: 7 chart types per asset class + 5 unified Overview charts (Composition, P&L, XIRR, Journey, Brokers/Platforms, Sector)
  • Privacy-first: All data stored in chrome.storage.local on your device
Why a Chrome extension, not a web app? The extension bypasses CORS entirely via host_permissions, enabling direct access to Screener.in (which blocks cross-origin requests from web apps) and ChartInk (which requires your live logged-in session and cannot be proxied). A web app would need server-side proxies for Screener and simply cannot replicate ChartInk signals. The extension is the only architecture that makes this data accessible without a backend.

Four Asset Classes, One Unified View

Most Indian investors hold more than just NSE stocks today. Mutual funds, US ETFs through INDMoney or Vested, direct US stocks through Fidelity or IBKR — all of these need to be tracked together to get a true picture of your portfolio. Finmagine Portfolio Manager handles all four in one place.

Pill Asset Class Ticker Format Price Source Example
🇮🇳 Indian Equities (IN_EQ) NSE:TITAN, BSE:532281 Yahoo Finance TITAN, HDFC Bank, Infosys
🌎 Global Equities (GL_EQ) US:AAPL, US:ORCL Yahoo Finance Apple, Oracle, Berkshire
🏦 Indian Mutual Funds (IN_MF) MF:119551 api.mfapi.in NAV SBI Bluechip, Mirae Emerging
🌐 Global Funds & ETFs (GL_MF) US:VOO, US:FBGRX Yahoo Finance VOO, SPY, FBGRX (Fidelity)
📊 Overview (ALL) All sources, unified ₹ Cross-AC summary + charts

Indian Equities (IN_EQ)

The core asset class. Full charges breakdown at trade entry (STT, exchange fee, stamp duty, SEBI turnover fee, brokerage, GST). All 9 broker columns visible. Every column from PEG to Index Beat to Signals is available. The full Watchlist tab with 23 fundamental columns is available here.

Global Equities (GL_EQ) USD

US stocks held through platforms like INDMoney, Fidelity, Schwab, or IBKR. Prices in USD, converted to ₹ at the FX rate in your settings (default ₹84/USD). Charges: ~0.03% SEC fee on sell only. Full Watchlist tab is available for GL_EQ (stockanalysis.com powers fundamentals for US stocks).

Indian Mutual Funds (IN_MF) NAV

Add any AMFI-registered direct or regular scheme by searching the fund name — the scheme code is resolved automatically. NAV fetched from api.mfapi.in. Zero charges (direct plans). Fractional units supported. Columns: Fund | NAV ₹ | P&L% | XIRR | N50 | N500 | Invested ₹ | Value ₹ | Units | Platform | Weight%.

Global Funds & ETFs (GL_MF) USD

ETFs (VOO, SPY, QQQ) and US mutual funds (FBGRX, FDIVX from Fidelity) tracked exactly like GL_EQ via Yahoo Finance. Zero charges. Fractional units supported. If you hold Vanguard ETFs at Vanguard.com, or Fidelity mutual funds at Fidelity.com, this is the asset class for them.

The Overview pill (📊) unifies everything. Switch to Overview to see a cross-asset summary table (4 rows, one per AC) and unified charts — "By Class: Now" donut (allocation by current value), "All: Journey" (total capital deployment over time), and "All: XIRR" (every holding ranked by annualised return, across all 4 ACs).
Core Innovation

Per-Broker Tracking — The Core Innovation

Every trade you enter has three key identifiers: the stock symbol, the broker, and the date. Finmagine Portfolio Manager uses all three. Specifically, it treats each stock + broker combination as a distinct position. If you hold TITAN at Zerodha and TITAN at Groww, those are two separate rows in your Holdings table — each with its own buy price, P&L%, stop-loss status, and XIRR.

The 9 Broker Columns

The Holdings table has a broker column for each of the 9 supported Indian brokers. Each column shows the P&L% for that specific stock at that specific broker. Cells are left empty if you don't hold the stock there.

Stock LTP P&L% Zerodha Groww Upstox XIRR
TITAN ₹3,100 +3.3% -7.5% ⚠ +10.7% 14.2%
HDFC Bank ₹1,720 +8.1% +8.1% 22.8%
ZOMATO ₹215 -4.2% -4.2% -6.8% ⚠ -11.4%

The red badge on TITAN's Zerodha column tells you exactly what the blended +3.3% was hiding: that position hit your stop-loss three percentage points ago.

The Five-State Color System

Each per-broker P&L cell uses one of five distinct visual states — not just red/green, but a precise traffic-light hierarchy that replaces the need for mental math entirely:

● Dark Green — ≥ +5%
Fully alloted on this entry. Position is working. No action needed.
● Neutral/White — 0% to +5%
In profit but still building the buffer. Monitor.
● Red — Below 0%
Taking a loss, but within your stop-loss tolerance. Stay alert.
▲ Amber — -4% to -5%
Approaching the stop-loss. Within 1% of the trigger. Prepare to act.
⚠ Dark Red — ≤ -5%
Stop-loss BREACHED. This is a hard exit signal. Act now.
Five-state color coding system: Dark Green (≥+5%), Neutral (0–5%), Red (loss), Amber (-4% to -5%), Dark Red (breach)
The five-state per-broker cell color system — from fully committed dark green to the unmissable dark red breach state. At a single glance, you know exactly where you stand on every individual position.

The Icon Badge — A Live Unavoidable Alarm

Finmagine does not just quietly change a cell color inside the app and hope you log in to notice. When any position crosses the -5% stop-loss threshold, the Chrome extension icon in your browser toolbar turns itself into a live, numbered red badge. If you are casually browsing, checking email, or reading news — you glance up at your toolbar and see a red “2” on the Finmagine icon. You instantly know, without opening the app, that exactly two specific isolated broker lots across your entire portfolio have breached the stop-loss and require your immediate execution.

Chrome extension icon with red badge showing live stop-loss breach count
The Chrome extension icon transforms into a live alarm. A red numbered badge appears whenever any broker position crosses the -5% stop-loss threshold — visible in your toolbar even while browsing other sites.
The -5% threshold is configurable. Go to Settings to change the stop-loss trigger level to match your personal risk tolerance. The default is -5% per broker position, which is a common discipline for momentum investors who take small positions with defined exit rules.

One Stock, Multiple Entries, Multiple Chapters

Consider this realistic scenario: You bought ZOMATO at ₹230 in Zerodha in December. It fell to ₹200 and you exited (stop-loss triggered). In January, the setup looked good again, so you re-entered from Groww at ₹185. The price is now ₹215.

The Brokerage Fee Engine — True Cost, Not Raw Price

A strict -5% stop-loss rule is fundamentally useless if it is being calculated against a raw, inaccurate buy price. Most investors simply enter the exchange price they paid. But ₹1,000 per share is not your real cost. To solve this, Finmagine built an obsessive fee engine that calculates your exact true entry cost down to the paisa, factoring in the entire statutory environment before applying the stop-loss rule.

Charge Rate Applies On Notes
STT (Securities Transaction Tax) 0.1% Buy & Sell Government tax on equity delivery turnover
NSE Exchange Fee 0.00297% Buy & Sell Zerodha: capped at ₹20/trade (dynamically adjusted)
BSE Exchange Fee 0.00375% Buy & Sell Applied when ticker is BSE-listed
Stamp Duty 0.015% BUY only ✓ Never applied on sell side — most calculators get this wrong
SEBI Turnover Fee 0.0001% Buy & Sell Mandatory regulatory fee
Brokerage — Zero-Brokerage ₹0 Most modern discount brokers — ₹0 on delivery. Any unrecognised broker also defaults to ₹0.
Brokerage — Traditional 0.50% – 0.55% Buy & Sell Traditional full-service brokers. Pre-configured for popular ones; any other broker defaults to zero-brokerage.
GST 18% On services Applied on: Brokerage + Exchange fee + SEBI fee (not on STT or stamp duty)
The “Sell Above” price. The fee engine does not just look backward at the capital already deployed. It projects forward: for every position it computes a Sell Above price — the minimum price at which you can exit without a net loss after all sell-side taxes (STT on sell, exchange fee, SEBI fee, GST). If a stock is at ₹1,002 but your real breakeven including sell charges is ₹1,005, the app shows that clearly. You cannot hide from your true economics.
Statutory fee stack for Indian equity delivery trades: STT, exchange fee, stamp duty (buy only), SEBI fee, brokerage, GST
The complete statutory charge stack for Indian equity delivery trades. Stamp duty applies only on the buy side — a detail most calculators get wrong. The fee engine routes zero-brokerage brokers and percentage-brokerage brokers through separate logic paths automatically.

The Holdings Table — What Every Column Tells You

The Indian Equities Holdings table is the densest and most information-rich view in the extension. Here is a reference for every column:

Column What It Shows Source
StockNSE/BSE symbol + company name (truncated)
LTPLast traded price in ₹Yahoo Finance
P&L%Overall P&L% across all broker entries for this stockComputed
XIRRAnnualised return accounting for timing of all buy tradesxirr.js (Newton-Raphson)
PEGP/E ratio ÷ 3-Year Price CAGR. Valuation relative to growth.Screener.in (24h cache)
3Y% / 5Y%3-year and 5-year compounded price CAGRScreener.in (90d cache)
N50Nifty 50 return since your earliest purchase date for this stockYahoo Finance (permanent cache)
N500Nifty 500 return since your earliest purchase dateYahoo Finance (permanent cache)
ScoreCount of momentum signals (0–5). Higher = more screeners agree.ChartInk
SignalsBadges for each passing signal: S2 (Stage 2), NH (Near 52W High), HV (High Volume), VCP (VCP Breakout), IPO (IPO Breakout)ChartInk
Invested ₹Total ₹ deployed in this stock across all brokers (net of charges)Computed
[9 Broker Cols]Per-broker P&L% for this stock. Dark red = breach, amber = approaching, dark green = fully committed.Computed
Buy QtyHow many shares you can buy at LTP given the invest amount you set in the sticky calculatorComputed

Every column is sortable. Click a column header once to sort descending, again to sort ascending. Sorting by Score and then by N50 is a powerful two-pass filter for stocks that are both technically strong and have genuinely beaten the index since your entry date.

The Stats Strip

Above the Holdings table sits a compact stats strip that answers the five most common quick questions about your portfolio:

Finmagine Portfolio Manager Holdings tab — live P&L%, XIRR, Score, Signals, Index Beat, and 9 per-broker columns
The Holdings tab — every column at a glance: LTP, P&L%, XIRR, PEG, 3Y%/5Y%, N50/N500 Index Beat, Score, Signals, Invested, and per-broker P&L% columns.

Seven Tabs at a Glance

Beyond Holdings, six more tabs each answer a specific portfolio management question:

Tab Question It Answers Filter Logic
Holdings What do I own and how is it performing? All active positions
Alloted Which positions am I fully committed to? (all entries ≥ +5%) Every broker entry for the stock is ≥ +5% P&L
Consider Where am I under-allocated by conviction? Total invested < ₹3,00,000 threshold (configurable)
Add More Where could I add at a better average? At least one broker entry is < +5% P&L (room to add)
Watchlist How do my holdings and research list compare on fundamentals? Holdings auto-included + manually added tickers; 23 Screener.in columns
Charts What does my portfolio look like visually? On-demand: Composition, P&L, XIRR, Journey, Brokers, Sector charts
Alerts Which positions need my immediate attention? Stop-loss breaches (< -5%) and approaching positions (within 1%)
Alloted → Consider → Add More: a three-tab conviction discipline. These three tabs are designed to be used together. After you are fully alloted in a stock (all broker entries ≥ +5%), it disappears from Add More. Stocks you are still building a position in stay in Add More. Stocks where you haven't hit your full planned allocation appear in Consider. This is a lightweight position-sizing framework built into the tab structure.
Three-tab conviction discipline: Alloted, Consider, Add More — a capital allocation framework built into the navigation
The three-tab discipline: Alloted (all entries performing), Consider (under-allocated by conviction), Add More (room to build the position). The tabs act as a funnel for capital allocation decisions.
Finmagine Portfolio Manager Alloted tab — positions where every broker entry is ≥ +5% P&L
The Alloted tab — only positions where every broker entry is ≥ +5% P&L appear here. These are your fully committed, performing positions.
Finmagine Portfolio Manager Consider tab — stocks under the minimum invested threshold
The Consider tab — stocks where your total invested amount is below the configured threshold (default ₹3,00,000). A prompt to review whether you are under-allocating your high-conviction names.
Finmagine Portfolio Manager Alerts tab — stop-loss breaches and approaching positions
The Alerts tab — stop-loss breaches (per-broker P&L below −5%) shown in red, positions approaching the threshold shown in amber. Act before a small loss becomes a large one.

The Watchlist Tab

The Watchlist tab is a 23-column fundamental comparison table. All of your Holdings are automatically included (tagged with a HOLD badge). You can manually add any additional stock you are researching. Columns include:

LTP | Score | Signals | PEG | P/E | P/B | P/S | EV/EBITDA | ROCE | ROE | D/E | Current Ratio | Interest Coverage | OPM% | NPM% | Sales Growth% | EPS Growth% | FCF | Pledging% | Promoter% | FII%

Each metric is color-coded (green/yellow/orange/red) based on sector-appropriate thresholds from Screener.in. Trend badges (↑/↓/→) appear on OPM%, NPM%, Sales%, and EPS% to show direction over the past year. Everything is sortable, cached for 90 days, and loaded lazily on first tab click.

Watchlist tab — 23-column fundamental comparison with traffic-light color coding and trend badges
The Watchlist as a research terminal. Holdings are auto-included with a HOLD badge. Every fundamental metric is color-coded by quality threshold — green is strong, red is a warning. Trend badges show if margins are accelerating or stalling.
Finmagine Portfolio Manager Watchlist tab — 23 Screener.in fundamental columns
The Watchlist tab — 23 columns of Screener.in fundamentals for every holding plus any stocks you are researching. Color-coded thresholds and trend badges make the comparison instant.
Analytics

XIRR & Index Beat — Are You Really Beating the Market?

P&L% tells you how much you made. XIRR tells you how fast you made it. A +30% return over 5 years is very different from a +30% return over 18 months. XIRR normalises all of this into an annualised percentage, making every holding comparable regardless of when you bought it.

XIRR Per Holding

For each stock, the extension takes every buy trade as a cash outflow (negative) on its purchase date, and the current market value as a hypothetical sell (positive) on today's date. It then solves for the discount rate that makes the net present value of all cash flows equal to zero — this is the XIRR. The algorithm used is Newton-Raphson iteration, running through dozens of iterative calculations in milliseconds. The engine maps out a precise timeline: every buy is a negative cash flow on its historical date, today's market value is a positive hypothetical cash flow. The algorithm constantly adjusts until it finds the exact annualised discount rate that balances the entire cash flow timeline to zero.

What a good XIRR looks like. Nifty 500 has historically compounded at roughly 12–14% p.a. over long periods. An XIRR above 18% on a holding is meaningfully outperforming the broad market. An XIRR of 5% on a stock you've held for 3 years is a clear signal that the capital would have served you better in an index fund.

A Tale of Two Investments

Consider two ₹5 lakh investments. P&L% looks at them one way. XIRR reveals the truth:

🐢 Investment A — The Slow Compounder

  • Deployed: ₹5,00,000
  • Holding period: 5 years
  • P&L%: +35% — looks great!
  • XIRR: 6.1% p.a.

Once you factor in inflation (~5% p.a.), this capital is barely growing in real terms. The 35% headline masked 5 years of opportunity cost.

🐊 Investment B — The Fast Compounder

  • Deployed: ₹5,00,000
  • Holding period: 6 months
  • P&L%: +25% — looks smaller
  • XIRR: 45.3% p.a.

Lower P&L%, dramatically higher XIRR. Capital is compounding aggressively. Simple P&L would have ranked this as the inferior investment.

XIRR exposes the truth: Investment B is vastly superior, and that is where your capital is actually accelerating. Without XIRR, you might deprioritise the wrong holding. The extension enforces a one-year minimum rule — XIRR is suppressed (shown as —) for any holding under 365 days old, because annualising a short-term return can inflate the figure to thousands of percent, creating a completely misleading signal.

XIRR vs P&L%: Tale of two investments — 35% P&L over 5 years = 6.1% XIRR vs 25% P&L over 6 months = 45.3% XIRR
The XIRR shock. A 35% gain held for 5 years is just 6.1% annualised — barely beating inflation. A 25% gain in 6 months is 45.3% annualised — hyper-efficient capital deployment. P&L alone would have ranked them backwards.

Index Beat (N50 / N500)

The N50 and N500 columns answer a question P&L% cannot: did I beat the benchmark from my specific entry date? For each holding, the extension looks up the Nifty 50 and Nifty 500 index level on the exact date of your earliest trade in that stock, and computes what those indices returned from that date to today.

Example: You bought IREDA at ₹180 on January 15, 2024. LTP today is ₹210. Your P&L% is +16.7%. But Nifty 50 returned +11.2% and Nifty 500 returned +13.8% from that same date. So your Index Beat is +16.7% − 13.8% = +2.9% over N500. That is real alpha — not impressive alpha, but real.

Index data is fetched once from Yahoo Finance and cached permanently per date. Once you have the Nifty level for a specific date, you never fetch it again. The Index Beat calculation is instant from then on.

Portfolio XIRR (All ACs, Unified ₹)

The stats strip shows a single Portfolio XIRR computed across all trades in all four asset classes. USD trades are converted to ₹ at the FX rate in your settings. This gives you one honest answer to the hardest portfolio question: what is my actual annualised return, accounting for the timing of every rupee I deployed?

Visual Analytics

Charts & Visual Analytics — 12 Chart Types

The Charts tab is not a generic pie chart. It is a purpose-built visualization engine with 12 specialized chart types available on demand. When you are analyzing a specific asset class, seven charts are available. When you switch to the Overview pill, five additional cross-asset charts unlock.

Chart Type What It Shows Available In
Composition (Donut)Portfolio allocation by current value — which stocks dominatePer AC
P&L (Horizontal Bar)Absolute winners and losers in ₹ termsPer AC
XIRR (Horizontal Bar)Best and worst compounders by annualised returnPer AC
Journey (Area)Cumulative invested ₹ over time vs current valuePer AC
Brokers (Grouped Bar)Invested vs current value per broker platformPer AC
Sector: Now (Donut)Current value allocation by sectorPer AC
Sector: Invested (Donut)Capital deployed by sector — cost basis viewPer AC
By Class: NowAllocation across all 4 ACs by current value in ₹Overview only
By Class: CostCapital deployed across all 4 ACs in ₹Overview only
All: P&LP&L ranking across all holdings in all 4 ACsOverview only
All: XIRRXIRR ranking across all holdings in all 4 ACsOverview only
All: JourneyTotal capital deployment timeline across all 4 ACsOverview only
ChartInk signal badges: S2 (Stage 2 uptrend), NH (Near 52W High), HV (High Volume), VCP (Volatility Contraction), IPO (IPO Breakout)
ChartInk integration brings five momentum signal badges into every Holdings row. The Score column (0–5) aggregates them into a sortable ranking — stocks with the strongest setups bubble to the top automatically.
Charts tab — composition donut chart showing portfolio allocation by current value per asset class
The Composition chart — portfolio allocation by current value. Instantly shows which positions dominate your portfolio and where concentration risk lies.

The Journey Chart — An Important Caveat

The Journey chart is an area chart that plots your cumulative cost basis (blue wave) alongside your current value (green line). It is a beautiful and informative view of how you have deployed capital over your investing lifetime. However, there is a critical architectural caveat you must understand before interpreting it.

⚠ The Journey chart does NOT show a true historical daily portfolio value. If you look at the data point for January 2023, that dot does not tell you what your total net worth was in January 2023. That would require a server logging your portfolio value every single day for years — impossible in a local-first extension.

Instead, the chart calculates backward from today. It plots the current real-time market value of investments that were physically executed by that historical date. So the January 2023 data point shows the current value of all trades made on or before that date — not what those trades were worth in January 2023. The expanding gap between the green and blue lines represents your unrealized P&L on those historical cohorts of capital.

Journey chart — area chart showing cumulative invested (blue) vs current value (green) over time
The Journey chart — blue area is capital deployed over time, green line is the current value of those same cohorts of investment today. A widening gap means your historical purchases are appreciating. A steep blue ramp marks a period of heavy buying.

The Overview Pill — Unified Cross-Asset View

When you switch to the 📊 Overview pill, the extension applies live FX normalization across all four asset classes. US stocks and ETFs are converted to ₹ at your configured exchange rate (default ₹84/USD) in real time. The result is a single unified portfolio view — every holding speaking the same currency.

Overview pill — cross-asset unified view with FX-normalized ₹ values across all four asset classes
The Overview pill unifies all four asset classes into ₹ terms. Indian equities, US stocks, mutual funds, and global ETFs are all normalized at the configured FX rate — giving you one honest view of your total wealth.
Architecture

Local-First Architecture — Privacy by Design

Core portfolio data — trade history, holdings, net worth calculations — stays in chrome.storage.local on your device. No account required for core tracking. Live prices come directly from Yahoo Finance. Fundamental data is served from Finmagine's shared cache for speed, and cloud sync (optional, requires a Finmagine account) lets you back up and restore your portfolio across devices.

The CORS Bypass — How It Accesses Screener and ChartInk

Think of Screener.in as an exclusive nightclub. If you build a standard portfolio tracking website and program it to fetch data from Screener, the browser immediately blocks the request. This is CORS (Cross-Origin Resource Sharing) — a core web security feature. Traditional financial apps are forced to build an expensive central server to proxy all data requests.

Finmagine sidesteps this completely because it is a Chrome extension using Manifest V3 host_permissions. This gives the extension a VIP all-access pass. It acts exactly like you, the authenticated user. When the extension reaches out to Screener.in or ChartInk, those platforms do not see a third-party app. They see you — the verified user — requesting data from your own browser session. ChartInk signals work because the extension piggybacks on your live logged-in ChartInk session. No backend. No proxies. No server costs.

The Four-Layer Cache

With this power comes the risk of overwhelming external servers with requests. To handle all incoming data without rate-limiting bans, Finmagine employs a structured four-layer cache stack organized by data volatility:

● Permanent Index history (Nifty 50/500 per date) & AMFI scheme IDs Fetched once, never again. Instant lookup forever.
● 90 Days Screener.in fundamentals: ROCE, ROE, D/E, OPM%, sector, 3Y%/5Y% Quarterly metrics. Fetched in background once per quarter.
● 24 Hours PEG ratio (price-dependent, updates daily) Refreshed once per day based on closing prices.
● 15 Minutes Live LTP (Yahoo Finance) & ChartInk momentum signals The live heartbeat. Dumps and refetches every 15 min.
Local-first architecture: chrome.storage.local, host_permissions CORS bypass, direct access to Yahoo Finance, Screener.in, ChartInk
The local-first architecture — core portfolio data lives in chrome.storage.local on your device. Live prices flow directly from Yahoo Finance. Fundamentals are served from Finmagine's shared cache for speed. Cloud sync is opt-in. The host_permissions VIP pass bypasses the CORS bouncer for Screener.in and ChartInk entirely.
Four-layer cache pyramid: Permanent (index/AMFI) → 90-day (fundamentals) → 24-hour (PEG) → 15-minute (prices/signals)
The four-layer cache pyramid organized by data volatility. The deeper the layer, the more stable the data, the longer the cache. This architecture prevents rate-limiting bans while keeping the UI fast.

Stale-While-Revalidate

When you open the Watchlist, the extension instantly renders the interface using whatever cached data it already holds in local storage. The visual experience is perfectly smooth and lag-free. Meanwhile, completely invisibly in the background, a sequential background fetch is quietly updating metrics one by one. As fresh data trickles in, the cells update without ever interrupting your workflow. You get the blazing speed of a native desktop app with the data depth of an institutional terminal.

Sequential 1500ms Fetch — Protecting Screener.in

When the extension needs to update the 90-day fundamental cache, it does not grab everything at once. A burst of 50 simultaneous requests to Screener.in would trigger their DDoS detection and permanently ban your home IP. Instead, the extension initiates a background sequence that fetches pages one by one, with a hard-coded 1500ms delay between every single network request. It behaves like a polite user slowly clicking through pages — entirely respecting the rate limits and security protocols of the host servers.

Getting Started in 3 Steps

Finmagine Portfolio Manager is available on the Chrome Web Store. Getting started takes about 5 minutes from install to your first live portfolio view.

1

Install & Open

Click the extension icon (or find it in your Chrome toolbar). The full-page portfolio manager opens as a Chrome tab. Select your asset class pill (start with 🇮🇳 Indian Equities).

2

Add Your First Trade

Click "Add Trade". Enter: Stock (e.g. NSE:TITAN), Broker (e.g. Zerodha), Buy Price, Quantity, and Date. The charges breakdown computes automatically. Click Save.

3

Refresh Prices

Click ⟳ Refresh. Three parallel fetches fire: Yahoo Finance prices, ChartInk signals, and Nifty index prices. Your holdings table populates with live P&L%, XIRR, N50, N500, and Score within seconds.

⏳ Why Does a New Stock Take a Few Minutes to Show Full Stats?

Data for each stock is fetched from three independent sources on a staggered schedule. Here is exactly what happens after you add a new stock and hit ⟳:

What appears Source Timing
Trade row (invested, qty)Local storageInstant
LTP, P&L%, XIRRYahoo Finance3–5 seconds after ⟳
PEG ratioScreener.in (P/E chart API)5–15 seconds after ⟳
Score, Signals (S2, NH, VCP…)ChartInk screener5–10 seconds after ⟳
N50 / N500 index beatYahoo Finance (historical)~10 seconds (first time only, then cached forever)
ROCE, ROE, sector, P/B (Charts)Screener.in (full page parse)45 seconds → 2 minutes (background, auto)

The Screener.in full-page fetch is the slow one — it parses the entire company HTML page to extract 15+ metrics, and is intentionally rate-limited (sequential, 1500ms delay per stock) to avoid overloading Screener. Once fetched, all fundamentals are cached for 90 days — on every subsequent open the data appears instantly. Only brand-new stocks trigger the 1–2 minute wait, and only once.

Or: Import Your Existing Trades via CSV

If you already have your trade history in a broker export, use the Import feature. Supported formats:

Tip: Start with one broker. Import your Zerodha tradebook first, verify the P&L%s look correct against what you see in the Zerodha app, then add the remaining brokers. This catches any date format issues before you have too many trades to eyeball.

Settings Worth Configuring First

Before your first price refresh, visit the Settings tab and set:

Finmagine Portfolio Manager Settings — USD/INR rate, stop-loss threshold, Consider threshold, broker configuration
The Settings panel — configure your USD/INR FX rate, stop-loss threshold, Consider threshold, and per-broker invest defaults before your first price refresh.
☁ Back Up Your Data — Don’t Skip This

All your trades and portfolio data are stored in browser storage only (chrome.storage.local). This means:

  • Clearing Chrome cache or browsing data → all trades permanently deleted
  • Uninstalling the extension → data gone
  • Switching to a new laptop or Chrome profile → no data

Scroll down in Settings to the ☁ Cloud Backup section. Log in with your finmagine.com account and click Push after every batch of trades you add. Pull on a new device to restore. Takes 2 seconds — do it now before you forget.

What’s Next in This Series

This is article 1 of 8 in the Finmagine Portfolio Manager series. Each article goes deep on one aspect of the extension.

📚 Finmagine Portfolio Manager — 8-Article Series

Finmagine Portfolio Manager →

Finmagine Portfolio Manager

Per-broker stop-loss discipline, live prices, XIRR, Index Beat, Charts — for Indian Equities, US Stocks, Mutual Funds & Global ETFs. Local-first portfolio tracking, optional cloud backup.

Learn More about Portfolio Manager →

Also From Finmagine

📈 Introducing Finmagine Trader

The one-click NSE momentum scanner — Stage 2, Near High, VCP, IPO Breakout across every NSE stock in seconds.

📊 Four Lenses on the Same Data

Display Modes, Period Filters, CSV Export & Chart Type Flexibility in Finmagine Chart Builder v2.6.0 & v2.7.0.

🇺🇸 US Stock Analysis with Finmagine

Altman Z-Score, Piotroski F-Score, ROIC-WACC, Analyst Outlook — all US-exclusive Chart Builder features explained.

← Back to Portfolio Manager Hub
← Back to Blog Hub