STUD.com
← Objectives

Compute · Assess & Decide · Analysis & Finance

Liquidation Preference vs Convert Election Calculator

The founder can predict, deterministically, what each preferred holder will choose at any exit value and the resulting proceeds split.

You receive: A pure function electionPayout(exitValue, investedAmount, liquidationMultiple, type, participationCapMultiple, preferredOwnershipFraction) -> { election (enum: take_preference|convert), preferredProceeds, commonProceeds } graded on hidden numeric cases. Assumes single preferred class, no debt, no option pool, residual to common is shared pro rata; preferred holds preferredOwnershipFraction of fully-converted shares.

Part of Pitch Investors

What's verified: STUD verifies the function reproduces the reference election and payout on hidden numeric cases under the stated single-class, debt-free, no-option-pool assumptions. STUD does NOT model multi-class stacks, option-pool dilution, debt seniority, or real-world tax (e.g. SEIS/EIS) effects.

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": "electionPayout",
 "expectNote": "expect is the comparison-space value (your return value goes through normalize first when one is published)",
 "hiddenCaseCount": 15,
 "hiddenCaseNames": [
  "gen0",
  "gen1",
  "gen2",
  "gen3",
  "gen4",
  "gen5",
  "gen6",
  "gen7",
  "gen8",
  "gen9",
  "gen10",
  "gen11",
  "gen12",
  "gen13",
  "gen14"
 ],
 "inputKeys": [
  "exitValue",
  "investedAmount",
  "liquidationMultiple",
  "participationCapMultiple",
  "preferredOwnershipFraction",
  "type"
 ],
 "normalizeSource": "def _normalize_liq_pref_vs_convert_election(r):\n    if not isinstance(r, dict): return r\n    return {\"election\": r.get(\"election\"),\n            \"preferredProceeds\": (None if r.get(\"preferredProceeds\") is None else round(float(r[\"preferredProceeds\"]), 2)),\n            \"commonProceeds\": (None if r.get(\"commonProceeds\") is None else round(float(r[\"commonProceeds\"]), 2))}\n",
 "returnShapes": [
  [
   "commonProceeds",
   "election",
   "preferredProceeds"
  ]
 ],
 "signature": "def electionPayout(inp):",
 "submission": "python exposing the entry function; inp is one input object; graded on held-out cases",
 "tier": "calculator",
 "visibleCases": [
  {
   "expect": {
    "commonProceeds": 8000000,
    "election": "convert",
    "preferredProceeds": 2000000
   },
   "input": {
    "exitValue": 10000000,
    "investedAmount": 1000000,
    "liquidationMultiple": 1,
    "participationCapMultiple": 3,
    "preferredOwnershipFraction": 0.2,
    "type": "non_participating"
   },
   "name": "nonpart_convert"
  },
  {
   "expect": {
    "commonProceeds": 3000000,
    "election": "take_preference",
    "preferredProceeds": 2000000
   },
   "input": {
    "exitValue": 5000000,
    "investedAmount": 1000000,
    "liquidationMultiple": 2,
    "participationCapMultiple": 3,
    "preferredOwnershipFraction": 0.2,
    "type": "non_participating"
   },
   "name": "nonpart_take"
  },
  {
   "expect": {
    "commonProceeds": 3200000,
    "election": "take_preference",
    "preferredProceeds": 1800000
   },
   "input": {
    "exitValue": 5000000,
    "investedAmount": 1000000,
    "liquidationMultiple": 1,
    "participationCapMultiple": 3,
    "preferredOwnershipFraction": 0.2,
    "type": "full_participating"
   },
   "name": "full_participating"
  },
  {
   "expect": {
    "commonProceeds": 15000000,
    "election": "convert",
    "preferredProceeds": 5000000
   },
   "input": {
    "exitValue": 20000000,
    "investedAmount": 1000000,
    "liquidationMultiple": 1,
    "participationCapMultiple": 3,
    "preferredOwnershipFraction": 0.25,
    "type": "capped_participating"
   },
   "name": "capped_convert"
  }
 ],
 "vocabulary": [
  "capped_participating",
  "commonProceeds",
  "convert",
  "election",
  "exitValue",
  "full_participating",
  "investedAmount",
  "liquidationMultiple",
  "non_participating",
  "participationCapMultiple",
  "preferredOwnershipFraction",
  "preferredProceeds",
  "take_preference",
  "type",
  "unknown preference type: "
 ]
}

Get early access to STUD the day it goes live.