Presenting Financial Data in Substack Newsletters
Financial newsletters are among the most subscribed and highest-revenue publications on Substack. Readers pay for timely analysis, clear data presentation, and actionable insights. But Substack’s editor wasn’t built for financial data — there are no native tables, no spreadsheet embeds, and no built-in charting tools.
This creates a real problem. Financial analysis without properly formatted data is like a recipe without measurements. You need tables for earnings comparisons, charts for trend visualization, and formatted numbers for quick scanning.
Here’s how to present financial data effectively in Substack, using techniques that work in both email and web.
Types of Financial Data in Newsletters
Financial newsletters typically include several categories of data:
Earnings and Revenue Data
Quarterly or annual financial results, typically in tabular format:
- Revenue, net income, EPS comparisons
- Year-over-year and quarter-over-quarter growth rates
- Analyst estimates vs. actual results (beat/miss tracking)
Market Data
Stock prices, indices, and market-level metrics:
- Daily/weekly market performance summaries
- Sector performance comparisons
- Valuation multiples (P/E, EV/EBITDA, etc.)
Portfolio and Position Data
For investment-focused newsletters:
- Current holdings and allocations
- Entry prices, current prices, and returns
- Risk metrics and position sizing
Economic Indicators
Macro data for economics-focused newsletters:
- GDP, inflation, employment data
- Central bank rate decisions
- Leading indicators and trend data
Each data type has specific formatting needs. Let’s cover the best approaches.
Formatting Financial Tables
The Image Table Approach
The most reliable way to present financial tables in Substack is as images. This guarantees consistent rendering across email clients and devices.
For a quarterly earnings comparison:
| Metric | Q3 2025 | Q3 2024 | YoY Change |
|-----------------|-----------|-----------|------------|
| Revenue | $24.9B | $21.5B | +15.8% |
| Operating Income| $7.2B | $5.8B | +24.1% |
| Net Income | $6.1B | $4.9B | +24.5% |
| EPS (diluted) | $1.82 | $1.46 | +24.7% |
| Free Cash Flow | $8.3B | $6.7B | +23.9% |
Write your table in markdown, then convert it to a hosted image using a tool like DownStack. The result is a clean, formatted table that renders perfectly in every email client.
Financial Table Design Principles
Right-align numbers. Financial data should be right-aligned so decimal points line up. This makes comparisons across rows instantly readable:
Revenue $24.9B (right-aligned)
Operating Income $7.2B (right-aligned)
Use consistent decimal places. If one number shows two decimal places, all numbers in that column should:
- Good: $1.82, $1.46, $2.03
- Bad: $1.82, $1.5, $2
Include units in column headers, not every cell. Instead of repeating ”$” or ”%” in every cell, put the unit in the header:
| Metric | Revenue ($B) | Growth (%) |
Highlight key figures. Use bold or color to draw attention to the most important numbers — typically the headline metric or the biggest change.
Show direction. Include + or - signs on change columns, and consider color coding (green for positive, red for negative) if your table is an image.
Handling Large Financial Datasets
A common challenge: you have 20 data points but only room for 5-7 in a readable table. Strategies:
Split into multiple tables. Instead of one massive table, use focused tables:
- Table 1: Revenue breakdown by segment
- Table 2: Profitability metrics
- Table 3: Cash flow summary
Each table appears alongside the relevant analysis paragraph rather than dumping all data in one block.
Create summary tables with detail below. Lead with a 3-5 row summary table showing headline numbers, then offer the full breakdown in subsequent tables for readers who want depth.
Use sparkline-style context. In image-based tables, you can include mini trend indicators (▲ ▼ or small arrows) to show direction without adding extra columns.
Presenting Market Performance Data
Daily/Weekly Market Summaries
Market roundup newsletters need to convey a lot of data quickly. The most effective format combines a compact table with brief commentary.
Example market summary table:
| Index | Close | Change | % Change | YTD |
|----------|-----------|---------|----------|---------|
| S&P 500 | 5,842.31 | +38.72 | +0.67% | +12.4% |
| Nasdaq | 18,491.65 | +127.34 | +0.69% | +15.2% |
| Dow | 42,156.83 | +201.45 | +0.48% | +8.7% |
| Russell | 2,187.42 | -12.56 | -0.57% | +3.2% |
Design tips for market tables:
- Include the closing value, daily change, percentage change, and a longer-term reference (YTD or 52-week)
- Color-code gains and losses (green/red) in image tables
- Keep the table compact — readers want to scan this in seconds
- Place it at the top of the newsletter for daily market publications
Sector Performance
For sector comparisons, a horizontal bar chart (as an image) often communicates more clearly than a table:
- Technology: +1.2%
- Healthcare: +0.8%
- Financials: +0.5%
- Energy: -0.3%
- Utilities: -0.7%
Create this as a simple chart image in your preferred tool (Google Sheets, Datawrapper, or even a simple design tool), export, and embed.
Presenting Earnings Analysis
Earnings season is when financial newsletters shine. Here’s how to structure earnings data effectively.
Beat/Miss Format
The most common earnings presentation: comparing actual results against analyst expectations.
| Metric | Estimate | Actual | Surprise |
|----------|----------|---------|----------|
| Revenue | $24.5B | $24.9B | +1.6% |
| EPS | $1.75 | $1.82 | +4.0% |
| Guidance | $25.2B | $25.8B | +2.4% |
Key principles:
- Always cite the source of consensus estimates
- Show the surprise magnitude (not just beat/miss)
- Include forward guidance if available — it often moves the stock more than the quarter’s results
- Note the stock’s after-hours reaction if relevant
Multi-Quarter Trend Tables
Showing several quarters of data reveals trends that single-quarter snapshots miss:
| Metric | Q1 2025 | Q2 2025 | Q3 2025 | Q4 2025E |
|----------|---------|---------|---------|----------|
| Revenue | $22.1B | $23.4B | $24.9B | $25.8B |
| Margins | 28.2% | 29.1% | 28.9% | 29.5% |
| Users | 412M | 428M | 441M | 455M |
Use “E” to clearly mark estimates/projections. Some writers use italics or a different color for estimated figures in image tables.
Peer Comparison Tables
Comparing companies within a sector is extremely valuable for readers:
| Company | P/E | Revenue Growth | Margin | Market Cap |
|------------|-------|---------------|--------|------------|
| Company A | 32.5x | +18% | 29% | $245B |
| Company B | 28.1x | +12% | 24% | $180B |
| Company C | 45.2x | +31% | 35% | $420B |
| Sector Avg | 34.8x | +19% | 28% | — |
Including a sector average row gives readers an immediate reference point.
Charts for Financial Newsletters
When to Use Charts vs. Tables
Use tables when:
- Readers need exact numbers (earnings, prices, allocations)
- You’re comparing specific data points across categories
- The data has many attributes per item (multiple columns)
Use charts when:
- You want to show trends over time (line charts)
- You want to show relative proportions (bar charts, pie charts)
- You want to make a visual argument (“look how this line goes up”)
- The pattern matters more than exact values
Creating Financial Charts
Google Sheets is the most accessible option:
- Enter your data in a spreadsheet
- Select the data range and insert a chart
- Customize colors, labels, and formatting
- Download as PNG (right-click chart → Save image)
Datawrapper produces the cleanest charts for newsletters:
- Paste or import your data
- Choose a chart type
- Customize styling (Datawrapper’s defaults are already clean)
- Export as PNG for email, or embed the URL for web
Python (matplotlib/plotly) for programmatic chart generation:
If you’re pulling data from APIs, generating charts programmatically ensures consistency. Save as PNG and upload to Substack.
Chart Design for Email
Financial charts in email need extra care:
- Use high contrast — subtle color differences can disappear in email rendering
- Label directly — don’t rely on separate legends; label lines and bars directly on the chart
- Include a title — the chart should be understandable without reading the surrounding text
- Add source and date — “Source: Company filings, Q3 2025” at the bottom
- Keep it simple — one main message per chart; don’t cram five series into one line chart
Number Formatting Conventions
Consistent number formatting makes your newsletter look professional and aids scanning.
Currency
- Use currency symbols: $24.9B, €15.2M, £8.7B
- Abbreviate large numbers: $24.9B (not $24,900,000,000)
- Be consistent with abbreviations: always use M for millions, B for billions
- Specify currency if not obvious: “Revenue of ¥2.4T ($16.1B)“
Percentages
- Include the % sign: 15.8% (not 0.158 or 15.8)
- Show direction: +15.8% or -3.2%
- One decimal place is standard for most financial metrics
- Basis points (bps) for small changes: “rates rose 25bps” rather than “rates rose 0.25%“
Dates and Time Periods
- Quarters: Q3 2025, Q3’25, or 3Q25 — pick one format and use it consistently
- Fiscal vs. calendar years: specify “FY2025” when the fiscal year differs from calendar
- Trailing twelve months: “TTM revenue of $95B” — common abbreviation, define it on first use if your audience is general
Estimates and Projections
- Clearly mark: “E” suffix (Q4 2025E), italic text, or a footnote
- Cite source: “Consensus estimates per Bloomberg” or “Management guidance”
- Date the estimates: consensus changes rapidly; readers need to know when estimates were pulled
Building a Financial Data Workflow
For writers publishing financial data regularly, efficiency matters. A repeatable workflow saves hours each week.
Recommended Workflow
- Data collection: pull data from your sources (financial APIs, SEC filings, broker platforms)
- Analysis: process in your tool of choice (Excel, Python, R)
- Draft in markdown: write your analysis with embedded table syntax
- Convert tables: use DownStack to convert markdown tables to clean, hosted images
- Generate charts: export from your charting tool as optimized PNGs
- Compose in Substack: paste text, insert table/chart images, add captions
- Review: check all numbers, sources, and formatting
- Test: send a test email to verify rendering
- Publish: send to subscribers
Automating Data Collection
If you publish market data daily or weekly, consider:
- Google Sheets + API connectors (e.g., Google Finance functions) for automated data pulls
- Python scripts to fetch data from financial APIs (Alpha Vantage, Yahoo Finance, FRED)
- Zapier/Make.com to pipe data into a spreadsheet on a schedule
The less manual your data collection, the more time you have for analysis — which is what readers actually pay for.
Common Pitfalls
Pitfall 1: Too Much Data, Not Enough Analysis
A table of 50 stocks with 10 metrics each isn’t analysis — it’s a data dump. Readers want your interpretation. Include only the data that supports your argument, and explain what it means.
Pitfall 2: Stale Data Without Timestamps
Always date your data. “The P/E ratio is 32x” means nothing without knowing when that was measured. Markets move fast; yesterday’s data can be misleading today.
Pitfall 3: Inconsistent Formatting Across Issues
If your weekly market summary uses different table formats every week, readers have to relearn how to read it each time. Establish templates and stick with them.
Pitfall 4: Ignoring Mobile Readers
Financial tables with 8+ columns are unreadable on phone screens. If your data requires many columns, split it into multiple focused tables or use charts for the mobile-friendly summary.
Pitfall 5: Missing Source Citations
Financial data without sources lacks credibility. Always cite where your numbers come from, even if it’s your own calculations. “Source: Author calculations based on company SEC filings” is perfectly valid.
Key Takeaways
- Financial newsletters need clean data presentation but Substack has no native data tools
- Image-based tables are the most reliable approach for email delivery
- Right-align numbers, use consistent decimal places, and include units in headers
- Split large datasets into focused tables paired with analysis
- Use charts for trends and patterns; use tables for exact figures
- Establish consistent number formatting (currency, percentages, dates, estimates)
- Build a repeatable workflow: collect → analyze → draft in markdown → convert tables → compose → publish
- Always cite data sources and timestamp your data
- Design for mobile first — keep tables to 5-7 columns maximum
- Tools like DownStack convert markdown tables to hosted images, streamlining the financial newsletter workflow