Lesson 06 · 5 min

Equity: Paying Performance

PerformancePayout turns valuations into cashflows. Price vs total return, and the funding leg you already know.

The deal on the desk

Pershing Square wants exposure to Apple without buying a single share: no custody, no voting, just the economics. Goldman Sachs offers an equity swap: Goldman pays Pershing Square whatever the stock returns on USD 10,000,000, and Pershing Square pays SOFR plus 40 basis points as funding. The new leg is PerformancePayout, and the funding leg is, once again, the same rates engine. By now you can predict the shape before you see it.

AAPL · US0378331005initial2026-06-15interimquarterlyfinal2027-06-15valuationDates sample the path,determinationMethod: ClosingPriceperformance =final vs initialmeanwhile:funding leg: SOFR + 40bp quarterly, interestRatePayout againTotal return would add dividends (dividendReturnTerms)
Key ideas
  • Performance is a difference between valuations

    valuationDates is required: an initial valuation sets the baseline, optional interim valuations mark the path, and a final valuation settles the score. Each carries a determinationMethod like ClosingPrice, because "the price" is not a single fact.

  • returnTerms picks what counts as return

    priceReturnTerms.returnType is a two-value enum: Price tracks the share price alone, Total adds dividends via dividendReturnTerms. The same structure also hosts variance, volatility, and correlation branches.

  • The underlier is observed, not owned

    Unlike the swaption, this underlier takes the observable branch: an equity security identified by ISIN. Pershing Square never holds it; the leg just watches its price.

  • The funding leg is InterestRatePayout again

    Third appearance: the swap's floating leg, then the CDS premium, now equity funding, all one InterestRatePayout. The model's own documentation lists all three jobs.

The performance leg, on the wire

{} performancePayout, price return on AAPL, trimmed
{  "payerReceiver": {    "payer": "Party2",    "receiver": "Party1"  },  "valuationDates": {    "finalValuationDate": {      "determinationMethod": "ClosingPrice",      "valuationDate": {        "adjustableDate": {          "unadjustedDate": "2027-06-15"        }      }    }  },  "paymentDates": {    "paymentFrequency": {      "periodMultiplier": 3,      "period": "M"    }  },  "returnTerms": {    "priceReturnTerms": {      "returnType": "Price"    }  },  "underlier": {    "observable": {      "asset": {        "instrument": {          "security": {            "instrumentType": "Equity",            "identifier": [              {                "identifier": "US0378331005",                "identifierType": "ISIN"              }            ],            "issuer": {              "value": "Apple Inc"            }          }        }      }    }  },  "priceQuantity": {    "resolvedQuantity": {      "value": 10000000,      "unit": {        "currency": "USD"      }    }  }}
The product's second leg is the funding: interestRatePayout, floating branch, USD-SOFR with a 0.004 spread. Two legs, mirrored payers, and the equity swap is complete.

Price return or total return

If Apple pays a dividend during the swap, who gets it? With returnType: Price, nobody: the leg tracks price moves only. With Total, dividend amounts flow to the performance receiver, specified through dividendReturnTerms: which periods count, whether amounts are gross or net, reinvestment treatment. Synthetic ownership only fully replicates holding the stock on a total return swap, which is why the two get different qualified names.

Why the names run long

Qualify_EquitySwap_PriceReturnBasicPerformance_SingleName reads the whole story at once: a performance payout with price return terms, a single-name equity observable underneath, and the funding leg alongside. Switch returnType to Total and the TotalReturnBasicPerformance sibling claims it instead. Swap the single share for an index or a basket and the family of qualifiers keeps up. The names are long because they are derived coordinates, not labels.

Try itOpen the price return qualifier in the Playground, run the example, then change returnType to Total. One enum value, different product name: derived classification, demonstrated.
◆ Checkpoint

01How does a performance payout compute what it owes?

1 / 3