{
  "slug": "stock-return",
  "title": "Stock Return Calculator",
  "heading": "Stock Return Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/stock-return",
  "summary": "Total return, annualized return, and profit after fees and tax.",
  "description": "Total return includes dividends; price return does not. Comparing a dividend payer to a growth stock on price alone systematically understates the income name.",
  "formula": "CAGR = (Ending ÷ Beginning)^(1/years) − 1.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=stock-return",
  "inputs": [
    {
      "id": "buy",
      "label": "Buy price per share",
      "kind": "number",
      "hint": null,
      "default": 45,
      "unit": "$",
      "min": 0.01,
      "max": null
    },
    {
      "id": "sell",
      "label": "Sell price per share",
      "kind": "number",
      "hint": null,
      "default": 92,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "shares",
      "label": "Shares",
      "kind": "number",
      "hint": null,
      "default": 200,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "dividends",
      "label": "Dividends received per share",
      "kind": "number",
      "hint": null,
      "default": 4.5,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "years",
      "label": "Years held",
      "kind": "number",
      "hint": null,
      "default": 4,
      "unit": null,
      "min": 0.1,
      "max": null
    },
    {
      "id": "fees",
      "label": "Total fees and commissions",
      "kind": "number",
      "hint": null,
      "default": 20,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "tax",
      "label": "Capital gains tax rate",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "%",
      "min": 0,
      "max": 50
    }
  ],
  "outputs": [
    {
      "id": "totalReturn",
      "label": "Total return",
      "format": "percent",
      "hint": null,
      "primary": true
    },
    {
      "id": "cagr",
      "label": "Annualized return (CAGR)",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "gain",
      "label": "Profit before tax",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "afterTax",
      "label": "Profit after capital gains tax",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "priceReturn",
      "label": "Price-only return",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "proceeds",
      "label": "Total proceeds",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Buy price per share: 45 $",
      "Sell price per share: 92 $",
      "Shares: 200",
      "Dividends received per share: 4.5 $",
      "Years held: 4",
      "Total fees and commissions: 20 $",
      "Capital gains tax rate: 15 %"
    ],
    "outputs": [
      "Total return: 113.97%",
      "Annualized return (CAGR): 20.94%",
      "Profit before tax: $10,280.00",
      "Profit after capital gains tax: $8,738.00",
      "Price-only return: 104.44%",
      "Total proceeds: $19,300.00"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter buy price per share ($).",
      "Enter sell price per share ($).",
      "Enter shares.",
      "Enter dividends received per share ($).",
      "Enter years held.",
      "Enter total fees and commissions ($).",
      "Enter capital gains tax rate (%).",
      "Read your total return on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "buy": 27,
        "sell": 55.199999999999996,
        "shares": 120,
        "dividends": 2.6999999999999997,
        "years": 2.4,
        "fees": 10,
        "tax": 9
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "buy": 45,
        "sell": 92,
        "shares": 200,
        "dividends": 4.5,
        "years": 4,
        "fees": 20,
        "tax": 15
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "buy": 72,
        "sell": 147.20000000000002,
        "shares": 320,
        "dividends": 7.2,
        "years": 6.4,
        "fees": 30,
        "tax": 24
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "How does the stock return calculator work?",
      "a": "Total return includes dividends; price return does not. Comparing a dividend payer to a growth stock on price alone systematically understates the income name. The underlying maths is: CAGR = (Ending ÷ Beginning)^(1/years) − 1."
    },
    {
      "q": "What do I need to enter?",
      "a": "7 values: buy price per share, sell price per share, shares, dividends received per share, years held, total fees and commissions, and capital gains tax rate. Each field starts with a sensible default, so you can change one number at a time and watch the result move."
    },
    {
      "q": "What does the total return result mean?",
      "a": "It is returned as a percentage and updates live as you edit the inputs, so you can compare two or three versions of a scenario in a few seconds."
    },
    {
      "q": "Is this calculator free, and do I need an account?",
      "a": "Yes, it's free, and no account is required. Nothing you type is stored on our servers — the maths runs entirely in your browser."
    },
    {
      "q": "How accurate is the result?",
      "a": "It applies the standard formula exactly, so the arithmetic is precise. Results are estimates before tax, fees, and inflation unless an input explicitly covers them."
    },
    {
      "q": "Who is this tool for?",
      "a": "It's built for anyone comparing money scenarios before committing — budgeting a payment, sanity-checking a quote, or seeing what a change in rate or term actually costs."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/dividend-income",
    "https://www.revenuelab.fyi/toolbox/portfolio-rebalance",
    "https://www.revenuelab.fyi/toolbox/cost-basis"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Stock Return Calculator (https://www.revenuelab.fyi/toolbox/stock-return)"
}