STUD.com
← Objectives

Compute · Transform · Analysis & Finance

Compute required ownership and present value from a target exit

A function that, from a projected exit value, holding period, and target return, computes the required present ownership fraction and the implied present value of the position.

You receive: A pure function exitDiscountValuation(input) -> { requiredOwnershipPct, presentValueOfStake, exitValueOfStake, grossMultiple, impliedIRR } graded on hidden cases.

Part of Pitch Investors

What's verified: STUD verifies the discounting, required-ownership, multiple, and IRR math on hidden inputs. STUD does NOT validate the exit projection, the comparables, or whether the target return is achievable.

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": "exitDiscountValuation",
 "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": [
  "dilutionFactor",
  "holdingYears",
  "investmentAmount",
  "ownershipToday",
  "projectedExitValue",
  "targetGrossIRR"
 ],
 "normalizeSource": "def _normalize_exit_discounted_valuation(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 {\"requiredExitValueOfStake\": n(r.get(\"requiredExitValueOfStake\"), 2), \"requiredOwnershipPctAtExit\": n(r.get(\"requiredOwnershipPctAtExit\"), 6),\n            \"requiredOwnershipPctToday\": n(r.get(\"requiredOwnershipPctToday\"), 6), \"presentValueOfStake\": n(r.get(\"presentValueOfStake\"), 2),\n            \"exitValueOfStake\": n(r.get(\"exitValueOfStake\"), 2), \"grossMultiple\": n(r.get(\"grossMultiple\"), 6),\n            \"impliedIRR\": n(r.get(\"impliedIRR\"), 6)}\n",
 "returnShapes": [
  [
   "exitValueOfStake",
   "grossMultiple",
   "impliedIRR",
   "presentValueOfStake",
   "requiredExitValueOfStake",
   "requiredOwnershipPctAtExit",
   "requiredOwnershipPctToday"
  ]
 ],
 "signature": "def exitDiscountValuation(inp):",
 "submission": "python exposing the entry function; inp is one input object; graded on held-out cases",
 "tier": "calculator",
 "visibleCases": [
  {
   "expect": {
    "exitValueOfStake": 31500000,
    "grossMultiple": 6.3,
    "impliedIRR": 0.584292,
    "presentValueOfStake": 5000000,
    "requiredExitValueOfStake": 25312500,
    "requiredOwnershipPctAtExit": 0.16875,
    "requiredOwnershipPctToday": 0.200893
   },
   "input": {
    "dilutionFactor": 0.84,
    "holdingYears": 4,
    "investmentAmount": 5000000,
    "ownershipToday": 0.25,
    "projectedExitValue": 150000000,
    "targetGrossIRR": 0.5
   },
   "name": "book_example"
  },
  {
   "expect": {
    "exitValueOfStake": 30000000,
    "grossMultiple": 3,
    "impliedIRR": 0.245731,
    "presentValueOfStake": 10000000,
    "requiredExitValueOfStake": 44840334.38,
    "requiredOwnershipPctAtExit": 0.448403,
    "requiredOwnershipPctToday": 0.448403
   },
   "input": {
    "dilutionFactor": 1,
    "holdingYears": 5,
    "investmentAmount": 10000000,
    "ownershipToday": 0.3,
    "projectedExitValue": 100000000,
    "targetGrossIRR": 0.35
   },
   "name": "high_irr"
  },
  {
   "expect": {
    "exitValueOfStake": 9000000,
    "grossMultiple": 4.5,
    "impliedIRR": 0.650964,
    "presentValueOfStake": 2000000,
    "requiredExitValueOfStake": 5488000,
    "requiredOwnershipPctAtExit": 0.10976,
    "requiredOwnershipPctToday": 0.121956
   },
   "input": {
    "dilutionFactor": 0.9,
    "holdingYears": 3,
    "investmentAmount": 2000000,
    "ownershipToday": 0.2,
    "projectedExitValue": 50000000,
    "targetGrossIRR": 0.4
   },
   "name": "short_hold"
  },
  {
   "expect": {
    "exitValueOfStake": 25312500,
    "grossMultiple": 5.0625,
    "impliedIRR": 0.5,
    "presentValueOfStake": 5000000,
    "requiredExitValueOfStake": 25312500,
    "requiredOwnershipPctAtExit": 0.16875,
    "requiredOwnershipPctToday": 0.16875
   },
   "input": {
    "dilutionFactor": 1,
    "holdingYears": 4,
    "investmentAmount": 5000000,
    "ownershipToday": 0.16875,
    "projectedExitValue": 150000000,
    "targetGrossIRR": 0.5
   },
   "name": "full_survival"
  }
 ],
 "vocabulary": [
  "dilutionFactor",
  "exitValueOfStake",
  "grossMultiple",
  "holdingYears",
  "impliedIRR",
  "investmentAmount",
  "ownershipToday",
  "presentValueOfStake",
  "projectedExitValue",
  "requiredExitValueOfStake",
  "requiredOwnershipPctAtExit",
  "requiredOwnershipPctToday",
  "targetGrossIRR"
 ]
}

Get early access to STUD the day it goes live.