Portfolio Analysis with Claude:
- Grover Grafton
- Jun 2
- 9 min read

Over time ones performance is determined by the fundemental characteristics of ones portfolio. Similarly, outperformance is determined by the relative outperformance of those fundementals relative to ones next best option. For me, the next best option is the S&P 500 index, representing a broad low cost bet on America and its multinationals.
To monitor these fundementals I use claude to index, weight, and summarize them relative to the S&P 500 once a year. This keeps me honest and ensures portfolio decisions are adding to my portfolios weighted advantage, realised only over the longterm, based on fundemental outperformance.
My Key Fundemental Perfomance Indicators:
1. Revenue Growth (5-Year Average)
Formula: [(Current Year Revenue / Revenue 5 Years Ago)^(1/5) - 1] × 100%
Business Meaning: Measures the compound annual growth rate of sales over 5 years. Indicates market demand, competitive position, and management's ability to expand the business.
2. Payout Ratio
Formula: (Dividends per Share / Earnings per Share) × 100%
Business Meaning: Shows what percentage of profits are paid to shareholders vs. reinvested.
3. Free Cash Flow (FCF) Yield
Formula: (Free Cash Flow / Market Capitalization) × 100%
Business Meaning: Measures actual cash generation relative to company value.
4. Return on Invested Capital (ROIC)
Formula: Net Operating Profit After Tax / (Total Debt + Total Equity)
Business Meaning: Shows how efficiently a company uses investor capital to generate profits.
5. Return on Equity (ROE)
Formula: Net Income / Shareholders' Equity × 100%
Business Meaning: Measures profitability relative to shareholder investment.r.
6. Return on Capital Employed (ROCE)
Formula: EBIT / (Total Assets - Current Liabilities) × 100%
Business Meaning: Evaluates efficiency of capital utilization in operations.
7. Net Margin
Formula: (Net Income / Revenue) × 100%
Business Meaning: Shows what percentage of revenue becomes profit after all expenses.
8. Interest Coverage Ratio
Formula: EBIT / Interest Expense
Business Meaning: Measures ability to pay debt obligations. .
9. Cash Conversion Rate
Formula: (Operating Cash Flow / Net Income) × 100%
Business Meaning: Shows how well companies convert accounting profits into actual cash. nt.
What Claude can do for you:
Using Claude, a photo with portfolio weightings and positions, and the above list of metrics I was able to create the below analysis of my portfolios weighted fundementals relative to the S&P 500. Instructions:
Paste the code file below the graphic, a photo with portfolio weightings and positions, and the above list of metrics into clude.
Prompt Claude with: "Using the code please update the portfolio positions and weightings with those in the photo"
Nudge as needed to attain required result.
Ask Caude to Audit the results to ensure accuracy.
Note: I do pay for Claudes Opus Model to analyze all positions, their free model can handle your top 8-10 positions. If your portfolio is has more than 10 positions you can do it piece meal and stitch code together.
Code for Interactive Graphic:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Financial Metrics Table</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
margin: 20px;
background-color: #f8f9fa;
}
.container {
max-width: 1400px;
margin: 0 auto;
background: white;
border-radius: 12px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
overflow: hidden;
}
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 20px;
text-align: center;
}
.header h1 {
margin: 0;
font-size: 1.8rem;
font-weight: 600;
}
.header p {
margin: 8px 0 0 0;
opacity: 0.9;
font-size: 0.9rem;
}
.table-container {
overflow-x: auto;
padding: 20px;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
th {
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
color: white;
padding: 15px 12px;
text-align: center;
font-weight: 600;
font-size: 0.9rem;
border-right: 1px solid rgba(255, 255, 255, 0.2);
}
th:first-child {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
text-align: left;
font-size: 1rem;
}
td {
padding: 12px;
text-align: center;
border-bottom: 1px solid #e9ecef;
border-right: 1px solid #e9ecef;
font-size: 0.85rem;
}
td:first-child {
background: #f8f9fa;
font-weight: 600;
text-align: left;
color: #495057;
font-size: 0.9rem;
}
.company-cell {
display: flex;
align-items: center;
gap: 8px;
}
.company-symbol {
background: #007bff;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 600;
}
.positive { color: #28a745; font-weight: 600; }
.negative { color: #dc3545; font-weight: 600; }
.neutral { color: #6c757d; }
.metric-value {
font-weight: 500;
}
.na-value {
color: #6c757d;
font-style: italic;
}
.note {
margin: 20px;
padding: 15px;
background: #fff3cd;
border: 1px solid #ffeaa7;
border-radius: 8px;
color: #856404;
font-size: 0.85rem;
}
.update-time {
text-align: center;
color: #6c757d;
font-size: 0.8rem;
margin-top: 10px;
}
.portfolio-summary {
margin: 20px;
padding: 25px;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
border-radius: 12px;
border: 1px solid #dee2e6;
}
.portfolio-summary h2 {
color: #495057;
margin: 0 0 20px 0;
text-align: center;
font-size: 1.5rem;
font-weight: 600;
}
.summary-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 15px;
margin-bottom: 25px;
}
.summary-card {
background: white;
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
border-left: 4px solid #007bff;
transition: transform 0.2s ease;
}
.summary-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.portfolio-total {
border-left-color: #28a745 !important;
background: linear-gradient(135deg, #f8fff9 0%, #e8f5e8 100%);
}
.summary-metric {
display: flex;
flex-direction: column;
gap: 8px;
}
.summary-label {
font-size: 0.85rem;
color: #6c757d;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.summary-value {
font-size: 1.4rem;
font-weight: 700;
}
.benchmark-comparison {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
padding-top: 10px;
border-top: 1px solid #e9ecef;
}
.portfolio-value {
text-align: left;
}
.sp500-value {
text-align: right;
font-size: 0.9rem;
color: #6c757d;
}
.sp500-label {
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 3px;
}
.outperform {
color: #28a745;
}
.underperform {
color: #dc3545;
}
.portfolio-insights {
background: white;
padding: 20px;
border-radius: 10px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.portfolio-insights h3 {
color: #495057;
margin: 0 0 15px 0;
font-size: 1.2rem;
font-weight: 600;
}
.insight-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 15px;
}
.insight-item {
padding: 15px;
background: #f8f9fa;
border-radius: 8px;
border-left: 3px solid #17a2b8;
font-size: 0.9rem;
line-height: 1.5;
}
.correction-note {
background: #fff5f5;
border-left-color: #dc3545;
color: #721c24;
}
@media (max-width: 768px) {
.table-container {
padding: 10px;
}
th, td {
padding: 8px 6px;
font-size: 0.75rem;
}
.company-symbol {
font-size: 0.65rem;
padding: 2px 4px;
}
.summary-grid {
grid-template-columns: 1fr;
}
.benchmark-comparison {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}
.sp500-value {
text-align: left;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>Financial Metrics Analysis</h1>
<p>Key Performance Indicators for Selected Companies vs S&P 500</p>
</div>
<div class="portfolio-summary">
<h2>Position Weighted Portfolio Metrics</h2>
<div class="summary-grid">
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">Revenue Growth (5yr Avg)</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">6.5%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="neutral" style="font-weight: 600;">6.5%</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">Payout Ratio</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value neutral">26.2%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="outperform" style="font-weight: 600;">31.2%</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">FCF Yield</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">5.9%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="underperform" style="font-weight: 600;">3.8%</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">ROIC (5yr Avg)</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">15.8%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="underperform" style="font-weight: 600;">12.1%</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">ROE (5yr Avg)</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">19.1%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="underperform" style="font-weight: 600;">15.8%</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">ROCE (5yr Avg)</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">16.5%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="underperform" style="font-weight: 600;">13.4%</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">Net Margin</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">17.7%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="underperform" style="font-weight: 600;">12.1%</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">Interest Coverage</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">24.6x</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="underperform" style="font-weight: 600;">8.2x</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-metric">
<span class="summary-label">Cash Conversion</span>
<div class="benchmark-comparison">
<div class="portfolio-value">
<span class="summary-value positive">88.5%</span>
<div style="font-size: 0.7rem; color: #6c757d; margin-top: 2px;">Your Portfolio</div>
</div>
<div class="sp500-value">
<div class="sp500-label">S&P 500</div>
<span class="underperform" style="font-weight: 600;">76.3%</span>
</div>
</div>
</div>
</div>
<div class="summary-card portfolio-total">
<div class="summary-metric">
<span class="summary-label">Total Portfolio Value</span>
<span class="summary-value" style="color: #007bff;">$71,560.58</span>
</div>
</div>
</div>
<div class="portfolio-insights">
<h3>Portfolio vs S&P 500 Analysis</h3>
<div class="insight-grid">
<div class="insight-item">
<strong>Profitability Excellence:</strong> Your portfolio significantly outperforms the S&P 500 in profitability metrics, with net margins of 17.7% vs 12.1% and ROIC of 15.8% vs 12.1%.
</div>
<div class="insight-item">
<strong>Revenue Growth Parity:</strong> Portfolio matches S&P 500's 5-year revenue growth at 6.5%, reflecting balanced exposure between high-growth tech and mature consumer names.
</div>
<div class="insight-item">
<strong>Balanced Dividend Policy:</strong> Lower payout ratio (26.2% vs 31.2%) suggests companies are retaining more earnings for reinvestment while still providing income.
</div>
<div class="insight-item">
<strong>Superior Cash Generation:</strong> FCF yield of 5.9% vs S&P 500's 3.8% demonstrates excellent cash generation relative to market value.
</div>
<div class="insight-item">
<strong>Quality Premium:</strong> ROE of 19.1% vs 15.8% and ROCE of 16.5% vs 13.4% confirm portfolio's focus on high-quality, efficiently managed companies.
</div>
<div class="insight-item">
<strong>Financial Strength:</strong> Exceptional interest coverage of 24.6x vs S&P 500's 8.2x shows strong debt management and financial stability across portfolio companies.
</div>
<div class="insight-item">
<strong>Efficient Operations:</strong> Cash conversion rate of 88.5% vs 76.3% indicates superior working capital management and ability to convert earnings to cash.
</div>
<div class="insight-item">
<strong>Risk Consideration:</strong> Outperformance comes with concentration risk in tech (META/GOOGL) and emerging markets (China exposure), requiring monitoring.
</div>
</div>
</div>
</div>
<div class="table-container">
<table>
<thead>
<tr>
<th>Company</th>
<th>Portfolio Weight</th>
<th>5yr Rev. Growth</th>
<th>Payout Ratio</th>
<th>FCF Yield</th>
<th>5yr ROIC</th>
<th>5yr ROE</th>
<th>5yr ROCE</th>
<th>Net Margin</th>
<th>Interest Coverage</th>
<th>Cash Conversion</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">META</span>
Meta Platforms Inc
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">18.11%</td>
<td class="metric-value positive">15.2%</td>
<td class="metric-value neutral">0%</td>
<td class="metric-value positive">4.8%</td>
<td class="metric-value positive">24.1%</td>
<td class="metric-value positive">26.7%</td>
<td class="metric-value positive">25.3%</td>
<td class="metric-value positive">29.1%</td>
<td class="metric-value positive">45.2x</td>
<td class="metric-value positive">92.1%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">GOOGL</span>
Alphabet Inc Class A
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">11.93%</td>
<td class="metric-value positive">12.8%</td>
<td class="metric-value neutral">0%</td>
<td class="metric-value positive">3.9%</td>
<td class="metric-value positive">18.4%</td>
<td class="metric-value positive">19.2%</td>
<td class="metric-value positive">18.8%</td>
<td class="metric-value positive">23.7%</td>
<td class="metric-value positive">38.7x</td>
<td class="metric-value positive">89.3%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">BABA</span>
Alibaba Group Holding
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">10.93%</td>
<td class="metric-value negative">-2.1%</td>
<td class="metric-value neutral">25.8%</td>
<td class="metric-value positive">8.2%</td>
<td class="metric-value positive">12.7%</td>
<td class="metric-value positive">14.9%</td>
<td class="metric-value positive">13.8%</td>
<td class="metric-value positive">11.4%</td>
<td class="metric-value positive">15.3x</td>
<td class="metric-value positive">87.6%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">BTI</span>
British American Tobacco
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">9.44%</td>
<td class="metric-value negative">-3.4%</td>
<td class="metric-value negative">67.2%</td>
<td class="metric-value positive">9.1%</td>
<td class="metric-value positive">8.9%</td>
<td class="metric-value positive">31.2%</td>
<td class="metric-value positive">12.1%</td>
<td class="metric-value positive">12.8%</td>
<td class="metric-value positive">4.8x</td>
<td class="metric-value positive">84.2%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">YUMC</span>
Yum China Holdings
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">8.36%</td>
<td class="metric-value positive">4.2%</td>
<td class="metric-value positive">41.3%</td>
<td class="metric-value positive">6.7%</td>
<td class="metric-value positive">15.8%</td>
<td class="metric-value positive">18.9%</td>
<td class="metric-value positive">16.4%</td>
<td class="metric-value positive">8.9%</td>
<td class="metric-value positive">12.6x</td>
<td class="metric-value positive">91.4%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">TCEHY</span>
Tencent Holdings ADR
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">8.23%</td>
<td class="metric-value positive">6.8%</td>
<td class="metric-value positive">34.7%</td>
<td class="metric-value positive">4.1%</td>
<td class="metric-value positive">16.2%</td>
<td class="metric-value positive">17.8%</td>
<td class="metric-value positive">16.9%</td>
<td class="metric-value positive">22.3%</td>
<td class="metric-value positive">28.9x</td>
<td class="metric-value positive">86.7%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">AMZN</span>
Amazon.com Inc
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">6.03%</td>
<td class="metric-value positive">18.7%</td>
<td class="metric-value neutral">0%</td>
<td class="metric-value positive">5.2%</td>
<td class="metric-value positive">12.4%</td>
<td class="metric-value positive">14.1%</td>
<td class="metric-value positive">13.2%</td>
<td class="metric-value positive">7.8%</td>
<td class="metric-value positive">18.4x</td>
<td class="metric-value positive">83.5%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">DJCO</span>
Daily Journal Corp
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">5.38%</td>
<td class="metric-value negative">-1.2%</td>
<td class="metric-value neutral">0%</td>
<td class="metric-value na-value">N/A</td>
<td class="metric-value positive">8.1%</td>
<td class="metric-value positive">3.7%</td>
<td class="metric-value positive">8.1%</td>
<td class="metric-value positive">15.2%</td>
<td class="metric-value positive">42.1x</td>
<td class="metric-value positive">95.3%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">EL</span>
Estée Lauder Companies
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">5.15%</td>
<td class="metric-value positive">3.9%</td>
<td class="metric-value positive">38.4%</td>
<td class="metric-value positive">4.3%</td>
<td class="metric-value positive">14.7%</td>
<td class="metric-value positive">16.8%</td>
<td class="metric-value positive">15.2%</td>
<td class="metric-value positive">9.6%</td>
<td class="metric-value positive">21.7x</td>
<td class="metric-value positive">88.9%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">KVUE</span>
Kenvue Inc
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">5.02%</td>
<td class="metric-value na-value">N/A*</td>
<td class="metric-value positive">68.9%</td>
<td class="metric-value positive">5.8%</td>
<td class="metric-value na-value">N/A*</td>
<td class="metric-value positive">12.4%</td>
<td class="metric-value positive">11.8%</td>
<td class="metric-value positive">15.7%</td>
<td class="metric-value positive">14.2x</td>
<td class="metric-value positive">86.1%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">BFB</span>
Brown-Forman Corp Class B
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">4.17%</td>
<td class="metric-value positive">2.8%</td>
<td class="metric-value positive">44.2%</td>
<td class="metric-value positive">4.9%</td>
<td class="metric-value positive">16.9%</td>
<td class="metric-value positive">18.7%</td>
<td class="metric-value positive">17.6%</td>
<td class="metric-value positive">21.4%</td>
<td class="metric-value positive">11.3x</td>
<td class="metric-value positive">93.8%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">KHC</span>
Kraft Heinz Company
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">3.72%</td>
<td class="metric-value negative">-1.8%</td>
<td class="metric-value positive">52.3%</td>
<td class="metric-value positive">7.2%</td>
<td class="metric-value positive">9.4%</td>
<td class="metric-value positive">12.7%</td>
<td class="metric-value positive">10.1%</td>
<td class="metric-value positive">13.6%</td>
<td class="metric-value positive">8.7x</td>
<td class="metric-value positive">82.1%</td>
</tr>
<tr>
<td>
<div class="company-cell">
<span class="company-symbol">OGN</span>
Organon & Co
</div>
</td>
<td class="metric-value" style="background: #e3f2fd; font-weight: 700;">3.53%</td>
<td class="metric-value na-value">N/A*</td>
<td class="metric-value positive">43.1%</td>
<td class="metric-value positive">8.9%</td>
<td class="metric-value na-value">N/A*</td>
<td class="metric-value positive">16.2%</td>
<td class="metric-value positive">14.8%</td>
<td class="metric-value positive">18.4%</td>
<td class="metric-value positive">6.3x</td>
<td class="metric-value positive">79.6%</td>


Comments