Case Research Portfolio: Performance Methodology

Executive Summary

The Case Research Portfolio is a live, transparent portfolio tracker displaying real-time holdings, performance metrics, and benchmark comparisons. This document explains the methodology, calculations, data sources, and indexing approach used to measure and display portfolio performance.

Table of Contents

  1. Overview

  2. Indexing Methodology

  3. Time-Weighted Return (TWR)

  4. Performance Metrics Explained

  5. Data Sources & Frequency

  6. Benchmark Comparisons

  7. Portfolio Construction & Holdings

  8. Calculation Examples

  9. Limitations & Disclaimers

  10. Technical Implementation

Overview

Purpose

The portfolio tracker serves three primary objectives:

  1. Show Conviction: Demonstrate commitment by publicly tracking a real-money portfolio

  2. Education: Provide transparency into portfolio management decisions and performance

  3. Retrospective Use: Document performance for future reference in an emerging investment strategy (arbitrage investing)

Portfolio Details

  • Account Type: IBKR Individual Brokerage Account

  • Base Currency: GBP (British Pounds)

  • Inception Date: January 28, 2025

  • Initial Capital: £xxx

  • Investment Strategy: Global equities and commodities with focus on deep value and special situations

Indexing Methodology

What Is an Index?

An index normalizes portfolio value to a base number (typically 100) at inception, making performance easy to interpret visually.

Formula:

Index Value = (Current Portfolio NAV / Inception NAV) × 100

Example

Date: Jan 28th 2025

Portfolio NAV: £xxx

Index Value: 100

Interpretation

Starting point

Feb 13, 2026

£xxx

635.0

535% total gain (6.35x)

Why 100?

  • Industry standard (FTSE 100, S&P 500 charts often use base 100)

  • Easy mental math: Index of 150 = 50% gain

  • Allows direct visual comparison with benchmarks on same scale

Reading the Chart

  • Flat line at 100: No gain or loss

  • Above 100: Positive returns

  • Below 100: Losses

  • Slope: Rate of return (steeper = faster gains)

Time-Weighted Return (TWR)

What TWR Measures

Time-Weighted Return isolates investment performance from the timing and size of cash flows (deposits and withdrawals).

Key Question Answered: "How well did the investments perform, regardless of when I added or removed money?"

Why TWR vs. Money-Weighted Return?

Time-Weighted Return (TWR):

  •  Removes impact of investor cash flow decisions

  • Measures portfolio manager skill

  • Used by mutual funds, pension funds, professional managers

  • Allows fair comparison between portfolios

  • GIPS (Global Investment Performance Standards) compliant

Money-Weighted Return (MWR / IRR):

  • Measures investor's personal dollar-weighted return

  • Heavily influenced by deposit/withdrawal timing

  • Can be misleading: large deposit before a loss = bad MWR even if manager performed well

  • Better for measuring personal outcomes, not skill

The TWR Calculation Process

Step 1: Identify Sub-Periods Break the timeline into segments between cash flows (deposits/withdrawals).

Step 2: Calculate Each Period's Return

Period Return = (Ending NAV - Beginning NAV) / Beginning NAV

Step 3: Chain the Returns

TWR = [(1 + R₁) × (1 + R₂) × (1 + R₃) × ... × (1 + Rₙ)] - 1

Step 4: Annualize (for CAGR)

CAGR = [(1 + TWR)^(1/Years)] - 1

Worked Example

Timeline:

  • Jan 28, 2025: Start with £xxx

  • Mar 15, 2025: Portfolio grows to £xxx (no cash flows)

  • Mar 16, 2025: Deposit £xxx (total now £xxx)

  • Feb 13, 2026: Portfolio grows to £xxx

Calculations:

Period 1 (Jan 28 - Mar 15):

R₁ = (£xx - £xx) / £6xxx = 0.25 = 25%

Period 2 (Mar 16 - Feb 13):

Beginning NAV after deposit: £xx

Ending NAV: £xx

R₂ = (£xx - £xx) / £xx = 0.20 = 20%

Total TWR:

TWR = [(1.25) × (1.20)] - 1 = 1.50 - 1 = 0.50 = 50%

Result: 50% time-weighted return, regardless of deposit timing.

Compare to Money-Weighted: If you had invested all £xx on Day 1 at the same average return, you'd have different MWR. TWR isolates manager skill from cash flow timing.

Performance Metrics Explained

INDEX

Current Value: Displayed at top of tracker (e.g., 635.0)

Meaning: Portfolio value relative to inception baseline of 100.

Interpretation:

  • 100 = Break-even

  • 150 = 50% gain

  • 635 = 535% gain (6.35x initial capital)

Note: This is a gross return figure before taxes and expressed in base currency (GBP).

DAY

Current Value: Daily percentage change (e.g., +2.29%)

Calculation:

Day Return = (Today's NAV - Yesterday's NAV) / Yesterday's NAV × 100

Use: Shows short-term volatility and daily portfolio movement.

TWR (Time-Weighted Return)

Current Value: Cumulative return since inception (e.g., +45.57%)

Meaning: Total investment performance adjusted for cash flows.

Interpretation:

  • Positive TWR = Portfolio outperformed cash

  • Compare to benchmarks (S&P 500, etc.) to assess relative performance

  • Does NOT account for personal dollar-weighting of deposits

CAGR (Compound Annual Growth Rate)

Current Value: Annualized return (e.g., +264.33%)

Formula:

CAGR = [(Ending Index / Beginning Index)^(1/Years)] - 1

Meaning: Average annual return if performance were smooth/consistent.

Note: For periods under 1 year, CAGR can be volatile and misleading. It's most useful for multi-year performance evaluation.

Current CAGR Context:

  • Portfolio is ~1 year old

  • Large gain concentrated in January 2026 (61.94% monthly return)

  • CAGR will stabilize as portfolio ages

Data Sources & Frequency

Primary Data Source: Interactive Brokers (IBKR)

Holdings Data:

  • Source: IBKR Client Portal API (live positions endpoint)

  • Frequency: Updated daily

  • Includes: Symbol, quantity, market value, cost basis, unrealized P&L, currency

Transaction History:

  • Source: IBKR Activity Statements (exported CSV)

  • Frequency: Updated when new trades occur

  • Includes: Date, ticker, side (buy/sell), quantity, price, commission, net amount

Performance Data:

  • Source: IBKR Portfolio Analyst (Daily Performance Report)

  • Frequency: Exported daily as CSV

  • Includes: Daily NAV, equity value, cash balance, deposits/withdrawals

  • Method: IBKR's own TWR calculation (GIPS-compliant)

Benchmark Data: Twelve Data API

Benchmarks Tracked:

  • SPY (S&P 500 ETF)

  • QQQ (Nasdaq-100 ETF)

  • DIA (Dow Jones ETF)

  • IWM (Russell 2000 Small-Cap ETF)

  • ISF.L (iShares FTSE 100 - UK)

  • URTH (MSCI World Index)

  • BRK-B (Berkshire Hathaway - as alternative benchmark)

Data Points:

  • Daily closing prices

  • Historical price series

  • Automatically indexed to 100 at portfolio inception date

Update Schedule

Daily Update Workflow:

  1. Export IBKR Performance Report (CSV) at market close

  2. Log into IBKR Gateway (authenticates API access)

  3. Run update script (fetches live holdings + caches data)

  4. Portfolio tracker refreshes with new data

  5. Squarespace embed displays updated tracker

Typical Update Time: After market close (4:00 PM ET / 9:00 PM GMT)

Cache Duration: Data displayed is from most recent update (timestamp shown)

Benchmark Comparisons

Why Benchmarks?

Benchmarks provide context for portfolio performance. Absolute returns don't indicate skill—relative returns do.

Example:

  • Portfolio: +10% return

  • S&P 500: +15% return

  • Result: Underperformed by 5 percentage points (despite positive return)

Benchmark Selection

SPY (S&P 500): Primary benchmark

  • Represents US large-cap equity market

  • Most common professional benchmark

  • Highly liquid, low-cost passive alternative

Other Benchmarks:

  • QQQ: Tech-heavy exposure (Nasdaq)

  • DIA: Blue-chip industrials (Dow)

  • IWM: Small-cap exposure

  • ISF.L: UK market (matches portfolio base currency)

  • URTH: Global diversification

  • BRK-B: Active management alternative (Buffett)

How Benchmarks Are Indexed

All benchmarks are indexed to 100 on January 28, 2025 (portfolio inception date).

Formula:

Benchmark Index = (Current Benchmark Price / Inception Benchmark Price) × 100

This allows:

  • Direct visual comparison on same chart

  • Clear outperformance/underperformance assessment

  • Fair comparison despite different starting prices

Interpreting Benchmark Charts

Portfolio line above benchmark: Outperformance Portfolio line below benchmark: Underperformance Lines converging: Relative performance narrowing Lines diverging: Relative performance widening

Portfolio Construction & Holdings

Asset Allocation

The portfolio invests in:

  • Equities: Primarily small-cap, deep value, and special situations

  • Geographies: Canada, UK, US, Europe, Japan, Mexico (global)

  • Sectors: Basic Materials (mining/commodities focus), Energy, Industrials

  • Cash: Maintains minimal cash for transaction flexibility

Position Sizing

Current Approach:

  • Concentrated positions (top 3 holdings = ~65% of portfolio)

  • High conviction in undervalued situations

  • Willingness to hold through volatility

Top Holdings (as of last update):

  1. EML (Emmerson PLC) - 32.8%

  2. ZEN (Zenith Energy) - 16.4%

  3. CNC (Canada Nickel) - 15.4%

Industry Breakdown

Displayed on tracker:

  • Visual bar chart showing sector weightings

  • Helps assess concentration risk

  • Typical concentration: Basic Materials (mining/resources) 60-80%

Transaction Log

Full transparency:

  • All buys and sells displayed

  • Shows entry/exit prices

  • Commission costs included

  • Allows independent verification of performance

Calculation Examples

Example 1: Simple TWR (No Cash Flows)

Scenario:

  • Start: £1,000

  • End: £1,500

  • No deposits or withdrawals

Calculation:

Return = (£1,500 - £1,000) / £1,000 = 0.50 = 50%

Index = 100 × 1.50 = 150

Example 2: TWR with Deposit

Scenario:

  • Day 1: Start with £1,000

  • Day 30: Grow to £1,200 (20% gain)

  • Day 31: Deposit £1,000 (NAV now £2,200)

  • Day 60: Grow to £2,420 (10% gain on £2,200)

Calculations:

Period 1 (Days 1-30):

R₁ = (£1,200 - £1,000) / £1,000 = 0.20 = 20%

Period 2 (Days 31-60):

R₂ = (£2,420 - £2,200) / £2,200 = 0.10 = 10%

Total TWR:

TWR = [(1.20) × (1.10)] - 1 = 1.32 - 1 = 0.32 = 32%

Index = 100 × 1.32 = 132

Note: The £1,000 deposit doesn't inflate the return—TWR correctly shows 32% investment performance.

Example 3: TWR with Withdrawal

Scenario:

  • Start: £10,000

  • After 6 months: £12,000 (20% gain)

  • Withdraw: £5,000 (NAV now £7,000)

  • After 12 months: £8,400 (20% gain on £7,000)

Calculations:

Period 1:

R₁ = (£12,000 - £10,000) / £10,000 = 0.20 = 20%

Period 2:

R₂ = (£8,400 - £7,000) / £7,000 = 0.20 = 20%

Total TWR:

TWR = [(1.20) × (1.20)] - 1 = 1.44 - 1 = 0.44 = 44%

Index = 100 × 1.44 = 144

Note: Even though you withdrew half your capital, TWR shows true investment performance (44%) independent of the withdrawal.

Example 4: CAGR Calculation

Scenario:

  • TWR over 3 years: 100% (doubled money)

  • What's the annualized return?

Formula:

CAGR = [(1 + 1.00)^(1/3)] - 1

CAGR = [2.00^0.333] - 1

CAGR = 1.2599 - 1 = 0.2599 = 25.99%

Interpretation: A 100% return over 3 years equals ~26% per year compounded.

Limitations & Disclaimers

Data Accuracy

Sources:

  • Holdings data: Live from IBKR API (updated daily)

  • Performance data: IBKR Portfolio Analyst (GIPS-compliant calculations)

  • Benchmark data: Twelve Data API (third-party market data provider)

Potential Issues:

  • Data delays: Updates typically 1 business day behind

  • Price discrepancies: Closing prices may differ slightly between data sources

  • Corporate actions: Dividends, splits, spinoffs may cause temporary data mismatches

Performance Reporting

What's Included:

  • Trading commissions

  • Forex conversion costs

  • Market price movements

  • Dividends received

What's NOT Included:

  • Personal taxes (varies by jurisdiction)

  • Opportunity cost of time

  • Risk-adjusted metrics (Sharpe ratio, max drawdown)

Important Notes:

  • Past performance does not guarantee future results

  • Returns are gross of taxes

  • High concentration = high volatility

  • Small-cap equities carry elevated risk

Survivorship & Selection Bias

Potential Biases:

  • Portfolio started in 2025 (may not represent full market cycle)

  • Selection of specific small-cap stocks (high risk/return profile)

  • No track record of performance in bear markets

Transparency:

  • All transactions visible (no cherry-picking)

  • Real money portfolio (not paper trading)

  • Public accountability

Benchmark Limitations

Not a Perfect Comparison:

  • S&P 500 is large-cap US; portfolio is global small-cap

  • Different risk profiles (small-cap more volatile)

  • Different liquidity profiles

  • Different fee structures (ETF fees vs. direct stock ownership)

Better Comparison:

  • Small-cap value index (Russell 2000 Value)

  • International small-cap index

  • Or: Accept that comparisons are imperfect and focus on absolute returns

Technical Implementation

Architecture Overview

Frontend:

  • Single-page HTML/JavaScript widget

  • Charts: Chart.js library

  • Styling: Custom CSS (blue theme matching Case Research branding)

  • Hosted on: Railway (cloud platform)

  • Embedded in: Squarespace via iframe

Backend:

  • Python FastAPI framework

  • IBKR Client Portal Gateway (local Java application for API authentication)

  • Data storage: JSON cache + SQLite database

  • Update mechanism: Daily manual trigger after market close

Data Flow:

  1. IBKR Gateway authenticates API access (runs on local machine)

  2. Backend fetches live positions from IBKR API

  3. Backend parses IBKR Performance Report CSV for TWR data

  4. Backend fetches benchmark prices from Twelve Data API

  5. All data cached in JSON file

  6. Railway backend serves cached data to public URL

  7. Squarespace iframe embeds Railway URL

  8. Visitors see live tracker on Case Research website

Daily Update Process

Manual Steps (5 minutes):

  1. Log into IBKR Client Portal

  2. Generate & download Daily Performance Report (CSV)

  3. Save as performance_report.csv in project folder

  4. Log into IBKR Gateway at https://localhost:5000

  5. Run update script: curl -X POST http://localhost:8000/update

  6. Commit & push updated cache.json to GitHub

  7. Railway auto-deploys (2-3 minutes)

  8. Tracker updates on Squarespace

Why Daily Updates?

  • Portfolio values change daily

  • IBKR Gateway session expires every 24 hours (security requirement)

  • Manual process ensures data quality control

Code Repository

GitHub: [Portfolio-Tracker repository]

  • Open-source codebase

  • Full transparency into calculations

  • Version control for all changes

Technologies:

  • Python 3.12

  • FastAPI 0.115

  • Chart.js 4.4

  • IBKR Client Portal API

  • Twelve Data API

Frequently Asked Questions

Why not use real-time data?

IBKR Gateway sessions expire every 24 hours and require manual re-authentication. Keeping it running 24/7 is impractical and unreliable. Daily updates provide sufficient granularity for long-term investment tracking.

Why index to 100 instead of showing dollar values?

Privacy and focus on performance. Showing "£xxx" reveals exact capital; showing "635 index" reveals only the return (535% gain). Also makes it easier to compare with benchmarks visually.

How do you handle dividends?

Dividends are automatically included in the NAV calculation (they're cash in the account). IBKR's TWR calculation properly accounts for dividend income as part of investment return.

What about currency effects?

Portfolio is measured in GBP (base currency). Foreign holdings (CAD, USD, etc.) are converted to GBP at daily exchange rates. Currency gains/losses are included in total return.

Can I replicate this portfolio?

All transactions are publicly visible. However:

  • Most holdings are illiquid small-caps (difficult to buy in size)

  • Timing matters (prices change)

  • Not investment advice (DYOR)

Why such high concentration?

This is a high-conviction, research-intensive approach. Concentrated portfolios amplify both gains and losses. Risk tolerance is personal—this suits the portfolio manager's style.

What happens if the tracker goes down?

Data is cached daily and stored in multiple locations (GitHub, Railway, local machine). Even if live updates stop, historical data remains accessible. All source code is open-source and portable.

Conclusion

The Case Research Portfolio tracker provides full transparency into investment performance using industry-standard TWR methodology. By indexing to 100, using IBKR's GIPS-compliant calculations, and comparing against established benchmarks, the tracker offers clear, interpretable performance data.

Key takeaways:

  • TWR isolates investment skill from cash flow timing

  • Indexing makes performance easy to visualize

  • Daily updates provide near-real-time transparency

  • Benchmark comparisons contextualize absolute returns

  • Full disclosure includes all transactions and holdings

This methodology ensures the tracker serves its three purposes: demonstrating conviction, educating viewers, and documenting performance for retrospective analysis.

Document Information

Version: 1.0
Last Updated: February 16, 2026
Author: Case Research
Contact: Info@Casersrch.onmicrosoft.com
Website: Case Research

Disclaimer: This document is for educational purposes only. It does not constitute investment advice, a recommendation to buy or sell securities, or an offer of advisory services. Past performance does not guarantee future results. Investing involves risk, including possible loss of principal.