STUD.com
← Objectives

Compute · Transform · Analysis & Finance

Compute the dilution impact of a pre-money option pool top-up

A function that computes the effective (pool-adjusted) price per share and the share of dilution borne by existing holders when a new option pool is created on a pre-money basis.

You receive: A pure function optionPoolShuffle(input) -> { effectivePricePerShare, poolShares, postMoneyShares, existingDilutionPct } graded on hidden cases.

Part of Pitch Investors

What's verified: STUD verifies the pool-adjusted price-per-share and dilution-incidence math is internally consistent on hidden inputs. STUD does NOT judge how big the option pool should be or whether the pre-money basis is fair to founders.

Opens soon

Cost20 credits
AcceptanceAutomated check against your inputs
ProtectionHeld until verified delivery

This objective is verified and ready. It opens soon, once sign-in and payments are live.

Deliverable interface

The exact vocabulary the automated check enforces: keys, tokens, entry points, and worked examples. Generated from the verification source.

{
 "constants": {},
 "entryName": "optionPoolShuffle",
 "expectNote": "expect is the comparison-space value (your return value goes through normalize first when one is published)",
 "hiddenCaseCount": 12,
 "hiddenCaseNames": [
  "gen0",
  "gen1",
  "gen2",
  "gen3",
  "gen4",
  "gen5",
  "gen6",
  "gen7",
  "gen8",
  "gen9",
  "gen10",
  "gen11"
 ],
 "inputKeys": [
  "amountRaised",
  "poolBasis",
  "preMoney",
  "sharesOutstandingFD",
  "targetPoolPctPostMoney"
 ],
 "normalizeSource": "def _normalize_option_pool_dilution_impact(r):\n    if not isinstance(r, dict): return r\n    def n(x, p): return None if x is None else round(float(x), p)\n    return {\"effectivePricePerShare\": n(r.get(\"effectivePricePerShare\"), 6), \"poolShares\": n(r.get(\"poolShares\"), 2),\n            \"postMoneyShares\": n(r.get(\"postMoneyShares\"), 2), \"existingDilutionPct\": n(r.get(\"existingDilutionPct\"), 6)}\n",
 "returnShapes": [
  [
   "effectivePricePerShare",
   "existingDilutionPct",
   "poolShares",
   "postMoneyShares"
  ]
 ],
 "signature": "def optionPoolShuffle(inp):",
 "submission": "python exposing the entry function; inp is one input object; graded on held-out cases",
 "tier": "calculator",
 "visibleCases": [
  {
   "expect": {
    "effectivePricePerShare": 0.875,
    "existingDilutionPct": 0.3,
    "poolShares": 1142857.14,
    "postMoneyShares": 11428571.43
   },
   "input": {
    "amountRaised": 2000000,
    "poolBasis": "pre_money",
    "preMoney": 8000000,
    "sharesOutstandingFD": 8000000,
    "targetPoolPctPostMoney": 0.1
   },
   "name": "premoney_pool"
  },
  {
   "expect": {
    "effectivePricePerShare": 2,
    "existingDilutionPct": 0.2,
    "poolShares": 0,
    "postMoneyShares": 12500000
   },
   "input": {
    "amountRaised": 5000000,
    "poolBasis": "pre_money",
    "preMoney": 20000000,
    "sharesOutstandingFD": 10000000,
    "targetPoolPctPostMoney": 0
   },
   "name": "no_pool"
  },
  {
   "expect": {
    "effectivePricePerShare": 1.625,
    "existingDilutionPct": 0.35,
    "poolShares": 2307692.31,
    "postMoneyShares": 15384615.38
   },
   "input": {
    "amountRaised": 5000000,
    "poolBasis": "pre_money",
    "preMoney": 20000000,
    "sharesOutstandingFD": 10000000,
    "targetPoolPctPostMoney": 0.15
   },
   "name": "premoney_15pct"
  },
  {
   "expect": {
    "effectivePricePerShare": 2,
    "existingDilutionPct": 0.32,
    "poolShares": 2205882.35,
    "postMoneyShares": 14705882.35
   },
   "input": {
    "amountRaised": 5000000,
    "poolBasis": "post_money",
    "preMoney": 20000000,
    "sharesOutstandingFD": 10000000,
    "targetPoolPctPostMoney": 0.15
   },
   "name": "postmoney_15pct"
  }
 ],
 "vocabulary": [
  "amountRaised",
  "effectivePricePerShare",
  "existingDilutionPct",
  "pool fraction >= 100%",
  "poolBasis",
  "poolShares",
  "postMoneyShares",
  "pre-money pool leaves no room for existing holders",
  "preMoney",
  "pre_money",
  "sharesOutstandingFD",
  "targetPoolPctPostMoney"
 ]
}

Get early access to STUD the day it goes live.