HEDGEFUND.md

Models / Tokenized assets / tokenized_property

Property token

What would this property token pay on these numbers, which cap rate move hits its covenant, and how does a secondary discount compare with waiting in the redemption queue?

Takes a pool of properties with debt: cap rate, debt service cover, LTV, NAV per token, distribution after debt service, reserves and fees. A shock grid of cap rate moves and vacancy, per property. Quarters to get a request through a gate, and the secondary discount that equals waiting. Every number comes from the caller. Not an appraisal, a price or advice.

The paste-ready promptmodel.md

On these numbers, NAV is 35 per token with a hypothetical 3.2% distribution yield, a 25% request takes 6 quarters under the gate and costs 2.5% in present value with NAV flat, against a 12% secondary discount, and at the sent shock NAV is 20.24 with the worst LTV at 74.64%.

Hypothetical, and on made-up numbers until you replace them. Nobody traded this, and nothing here is on offer.

Readings

The numbers, with their units.

NAV per token

35

Value 80,000,000 less debt 45,000,000. Pool cap rate 6.125%.

Pool LTV

watch

56.25%

Worst property Office tower A at 60%. At the sent shock: pool 68.98%, Office tower A 74.64%. Covenant 65%.

Debt service cover

1.667x

At the sent shock 1.583x.

Distribution per token

1.12

NOI 4,900,000 less debt service 2,940,000, reserves 490,000, fee 350,000. At the sent shock 1.0471.

Hypothetical distribution yield on NAV

3.2%

At the sent discount it is 3.636% on the secondary price. Amortization of 1.457% of NAV isn't counted in this yield.

Quarters to clear a request

watch

6

Gate 5% of tokens outstanding each quarter, request 25%. Average wait 3.19 quarters.

Break-even secondary discount

watch

2.504%

At the 3.2% distribution yield with NAV flat. Sent discount 12%. With NAV at the sent shock when paid, 43.63%.

NAV per token at the sent shock

breach

20.24

42.18% under NAV now, from a value fall of 18.45%. Cap move 100 bps, vacancy 5%.

What flips it

The value of one input where the outcome changes, with the others held.

  1. cap_rate_shock_bps

    16.04bpsnow 100

    With vacancy at the sent shock, Office tower A reaches the 65% covenant at this cap rate move, the first property to do so.

  2. cap_rate_shock_bps

    59.22bpsnow 100

    With vacancy at the sent shock, the pool's LTV as a whole reaches the 65% covenant at this cap rate move.

  3. cap_rate_shock_bps

    418.84bpsnow 100

    With vacancy at the sent shock, pool equity is gone at this cap rate move: value equals debt and NAV is zero.

  4. vacancy_shock_pct

    33.12%now 5

    With the cap rate move as sent, the distribution reaches zero at this vacancy.

  5. cap_rate_shock_bps

    26.95bpsnow 100

    With no vacancy change, at this cap rate move the queue, paid at the NAV that move gives, is worth what a sale now at the sent discount brings. Above it a sale at the sent discount shows the higher present value, if a sale is allowed at all.

Flags

What went past a line, and what to read before you trust the rest.

  • breach
    At the sent shock Office tower A is at 74.64% LTV, over the 65% covenant, while the pool as a whole is at 68.98%. covenant_at_shock
  • watch
    The token may trade at any hour, but a 25% request takes 6 quarters under the gate, 3.19 quarters on average. queue_mismatch
  • watch
    The secondary discount of 12% is 9.5 points over the 2.5% that the queue costs in present value with NAV flat. A cap rate move of 26.9 bps with no vacancy change closes that gap. discount_over_queue_cost

What this leaves out

What the formula leaves out, by name.

  • Operating leverage: with fixed costs, NOI falls faster than revenue in a vacancy shock.
  • Refinancing and floating debt: a cap rate move usually comes with a rate move, and maturing loans reprice.
  • Non-recourse loans: a lender's claim here reaches the whole pool. If a loan can't reach it, a property under water costs less than shown.
  • How the pool finds cash for redemptions, and what that does to LTV. Sales, costs and new borrowing are ignored.
  • First-in-first-out queues, where a place at the back waits longer than the pro rata figure.
  • Appraisal lag and error: value is what was sent.
  • Capital spending, leasing costs, and the use of reserves.
  • Taxes at the property, the pool or the holder, and transfer costs on a secondary sale.
  • Where the secondary market's depth can absorb a sale at the sent discount.
  • Whether this holder may acquire, hold, mint, redeem, pledge, sell or transfer this token, or use any pool. Those are legal questions for counsel.
What it took as given (8)

What it took as given to get here.

  • Debt service for the year = debt * (debt_rate_pct + amort_pct) / 100, with interest on the opening balance.
  • The platform fee is a share of NAV, so a lower NAV means a lower fee. Reserves are a share of NOI, held back and not added to NAV. Distribution is what remains. It is floored at zero, and a deficit is flagged.
  • Distribution yield is on NAV, not on a secondary price. Amortization builds equity but isn't counted in it.
  • The shock moves each property's own cap rate, then sums. Vacancy takes the same share off NOI, with operating costs falling in step. Debt rates stay as sent.
  • The covenant is tested per property, and the pool's LTV is shown beside it. Debt is netted across the pool, floored at zero per token.
  • The gate is a share of tokens outstanding at the start of each quarter, so it shrinks as the queue is paid. Fills are pro rata and paid at quarter end. The tail stops once under 1 part in 10,000 of the request is left. The count stops at 400 quarters, and anything still unpaid then is given no value in the break-even.
  • Break-even discount: a request in the queue earns no distribution, and money out now can earn the pool's distribution yield. Quarterly compounding, NAV flat. If the queue did keep earning the distribution at that same rate, the break-even would be zero.
  • Flips on the cap rate hold vacancy at the sent shock. The flip against the secondary discount is the exception: it holds vacancy at zero, so it reads as a pure cap rate move.
NAV per token as cap rates moveNAV per token
  • No vacancy change
  • Vacancy shock 5%
2030050100150200Cap rate move, bps15.1712.16
The data

Properties

PropertyValueNOICap rate %DebtLTV %Debt serviceCover xEquity
Office tower A40,000,0002,200,0005.524,000,000601,560,0001.4116,000,000
Warehouse B30,000,0001,950,0006.515,000,00050900,0002.16715,000,000
Retail park C10,000,000750,0007.56,000,00060480,0001.5634,000,000

Shock grid, per property then summed

Cap move bpsVacancy %ValueNAVNAV per tokenPool LTV %Worst LTV %Cover xDistribution per tokenFlag
0080,000,00035,000,0003556.25601.6671.12watch
02.578,000,00033,000,0003357.6961.541.6251.0298watch
0576,000,00031,000,0003159.2163.161.5830.9395watch
50073,898,81028,898,81028.960.8965.451.6671.181breach
502.572,051,33927,051,33927.0562.4667.131.6251.0892breach
50570,203,86925,203,86925.264.168.91.5830.9975breach
100068,669,68323,669,68323.6765.5370.911.6671.2333breach
1002.566,952,94121,952,94121.9567.2172.731.6251.1402breach
100565,236,19920,236,19920.2468.9874.641.5831.0471breach
150064,136,90519,136,90519.1470.1676.361.6671.2786breach
1502.562,533,48217,533,48217.5371.9678.321.6251.1844breach
150560,930,06015,930,06015.9373.8680.381.5831.0902breach
200060,169,24715,169,24715.1774.7981.821.6671.3183breach
2002.558,665,01513,665,01513.6676.7183.921.6251.2231breach
200557,160,78412,160,78412.1678.7386.121.5831.1279breach

Break-even discount by discount rate, with NAV flat

Discount rate %Break-even discount %
3.22.504
5.24.019
7.25.497
11.28.347

The queue

QuarterFilled %Cumulative %Discount factor
120200.992063
219390.98419
318.0557.050.976379
417.1574.20.96863
516.2990.490.960942
69.5121000.953316

Hypothetical, computed from the numbers sent and any stated default, with hindsight. Nobody traded it, and costs and liquidity are only as assumed. Not a forecast, a recommendation, an offer, or a record of real trading. Don't use it to market an investment.

formula Cap rate = NOI / value. Debt service = debt * (rate + amort). Cover = NOI / debt service. LTV = debt / value. NAV = value - debt. Distribution = NOI - debt service - reserve - fee. Shocked value per property = NOI * (1 - vacancy) / (cap + shock). Queue fills = min(left, gate * tokens outstanding) each quarter. Break-even discount = 1 - sum(fill_q / (1 + y / 4)^q).

inputs_hash 2bc06d98ce9ac741

Paste it into your agent

No connection needed. This prompt carries the method, the conventions and what this site's engine gives on the made-up numbers, so your agent can check its own work before it touches real ones. Every prompt, with its hash, is listed at /prompts.json. A copy that stays fixed for this version, for a stack to point at: /v/1.0/models/tokenized_property.md.

prompt.md
# Property token: a prompt from hedgefund.mdPaste this into your AI agent. It needs no connection to hedgefund.md. An agent that can run code should write and run it, and shouldn't work a long series by hand.**Question.** What would this property token pay on these numbers, which cap rate move hits its covenant, and how does a secondary discount compare with waiting in the redemption queue?## MethodCap rate = NOI / value. Debt service = debt * (rate + amort). Cover = NOI / debt service. LTV = debt / value. NAV = value - debt. Distribution = NOI - debt service - reserve - fee. Shocked value per property = NOI * (1 - vacancy) / (cap + shock). Queue fills = min(left, gate * tokens outstanding) each quarter. Break-even discount = 1 - sum(fill_q / (1 + y / 4)^q).## Conventions- Debt service for the year = debt * (debt_rate_pct + amort_pct) / 100, with interest on the opening balance.- The platform fee is a share of NAV, so a lower NAV means a lower fee. Reserves are a share of NOI, held back and not added to NAV. Distribution is what remains. It is floored at zero, and a deficit is flagged.- Distribution yield is on NAV, not on a secondary price. Amortization builds equity but isn't counted in it.- The shock moves each property's own cap rate, then sums. Vacancy takes the same share off NOI, with operating costs falling in step. Debt rates stay as sent.- The covenant is tested per property, and the pool's LTV is shown beside it. Debt is netted across the pool, floored at zero per token.- The gate is a share of tokens outstanding at the start of each quarter, so it shrinks as the queue is paid. Fills are pro rata and paid at quarter end. The tail stops once under 1 part in 10,000 of the request is left. The count stops at 400 quarters, and anything still unpaid then is given no value in the break-even.- Break-even discount: a request in the queue earns no distribution, and money out now can earn the pool's distribution yield. Quarterly compounding, NAV flat. If the queue did keep earning the distribution at that same rate, the break-even would be zero.- Flips on the cap rate hold vacancy at the sent shock. The flip against the secondary discount is the exception: it holds vacancy at zero, so it reads as a pure cap rate move.## Step 1: check your method on these made-up numbersThe numbers and names below are made up. They aren't market levels, typical values or anyone's real figures.```json{  "properties": [    {      "name": "Office tower A",      "value": 40000000,      "noi": 2200000,      "debt": 24000000,      "debt_rate_pct": 5.5,      "amort_pct": 1    },    {      "name": "Warehouse B",      "value": 30000000,      "noi": 1950000,      "debt": 15000000,      "debt_rate_pct": 5,      "amort_pct": 1    },    {      "name": "Retail park C",      "value": 10000000,      "noi": 750000,      "debt": 6000000,      "debt_rate_pct": 6,      "amort_pct": 2    }  ],  "tokens_outstanding": 1000000,  "platform_fee_bps": 100,  "reserve_pct_of_noi": 10,  "cap_rate_shock_bps": 100,  "vacancy_shock_pct": 5,  "ltv_covenant_pct": 65,  "gate_pct_per_quarter": 5,  "redemption_request_pct": 25,  "secondary_discount_pct": 12}```Work them out with the method above. Yours should match these within 0.5%.- NAV per token: 35- Pool LTV: 56.25 %- Debt service cover: 1.667 x- Distribution per token: 1.12- Hypothetical distribution yield on NAV: 3.2 %- Quarters to clear a request: 6- Break-even secondary discount: 2.504 %- NAV per token at the sent shock: 20.2362Where the outcome flips, with the other inputs held:- cap_rate_shock_bps at 16.04: With vacancy at the sent shock, Office tower A reaches the 65% covenant at this cap rate move, the first property to do so.- cap_rate_shock_bps at 59.22: With vacancy at the sent shock, the pool's LTV as a whole reaches the 65% covenant at this cap rate move.- cap_rate_shock_bps at 418.84: With vacancy at the sent shock, pool equity is gone at this cap rate move: value equals debt and NAV is zero.- vacancy_shock_pct at 33.1239: With the cap rate move as sent, the distribution reaches zero at this vacancy.- cap_rate_shock_bps at 26.95: With no vacancy change, at this cap rate move the queue, paid at the NAV that move gives, is worth what a sale now at the sent discount brings. Above it a sale at the sent discount shows the higher present value, if a sale is allowed at all.If yours differ, stop and tell the person which ones and by how much. Don't go on to real numbers until they match, or until the person has seen the difference. These values come from one engine and can be wrong too.## Step 2: run it on the person's numbersReplace every input with the person's own. Ask for any number you don't have, and don't invent one.## Step 3: reportGive one sentence beginning "On these numbers,", then the values, then where the outcome flips. Always add what this leaves out:- Operating leverage: with fixed costs, NOI falls faster than revenue in a vacancy shock.- Refinancing and floating debt: a cap rate move usually comes with a rate move, and maturing loans reprice.- Non-recourse loans: a lender's claim here reaches the whole pool. If a loan can't reach it, a property under water costs less than shown.- How the pool finds cash for redemptions, and what that does to LTV. Sales, costs and new borrowing are ignored.- First-in-first-out queues, where a place at the back waits longer than the pro rata figure.- Appraisal lag and error: value is what was sent.- Capital spending, leasing costs, and the use of reserves.- Taxes at the property, the pool or the holder, and transfer costs on a secondary sale.- Where the secondary market's depth can absorb a sale at the sent discount.- Whether this holder may acquire, hold, mint, redeem, pledge, sell or transfer this token, or use any pool. Those are legal questions for counsel.## LimitsResults are hypothetical: arithmetic on the numbers given, prepared with hindsight. Nobody achieved them, and costs and liquidity are only as assumed. They aren't a forecast, a recommendation, an offer or a record of real trading. Don't say what to buy, sell or hold, and don't use them to market an investment. Whether a person may hold or trade an instrument is a legal question for counsel.Provided as is, at your own risk, by hedgefund.md, which is not a fund and isn't anyone's adviser. Version 1.0. Source: https://hedgefund.md/models/tokenized_property/prompt.md. Terms: https://hedgefund.md/terms

Call it

The same code answers on this page, over HTTP, over MCP and on your own machine, and the same inputs give the same bytes. No key, and nothing is stored. Send positions by POST or run the library, because a URL can land in a server log. model.md holds all of this for your agent.

POST the inputs to /api/v1/tokenized_property.

terminal
curl -s https://hedgefund.md/api/v1/tokenized_property \  -H 'content-type: application/json' \  -d '{"properties":[{"name":"Office tower A","value":40000000,"noi":2200000,"debt":24000000,"debt_rate_pct":5.5,"amort_pct":1},{"name":"Warehouse B","value":30000000,"noi":1950000,"debt":15000000,"debt_rate_pct":5,"amort_pct":1},{"name":"Retail park C","value":10000000,"noi":750000,"debt":6000000,"debt_rate_pct":6,"amort_pct":2}],"tokens_outstanding":1000000,"platform_fee_bps":100,"reserve_pct_of_noi":10,"cap_rate_shock_bps":100,"vacancy_shock_pct":5,"ltv_covenant_pct":65,"gate_pct_per_quarter":5,"redemption_request_pct":25,"secondary_discount_pct":12}' \  | jq '{summary, flags, flips, not_modeled, inputs_hash}'

Inputs

InputTypeRangeRequiredWhat it is
propertiesarray1 to 50 itemsyesThe properties in the pool. Up to 50.
properties[].namestringyesA label, such as Office tower A.
properties[].valuenumberover 0 to 1000000000000yesCurrent value.
properties[].noinumberover 0 to 100000000000yesNet operating income a year. The cap rate is noi / value.
properties[].debtnumber0 to 1000000000000yesDebt outstanding. 0 if none.
properties[].debt_rate_pctnumber0 to 50yesInterest rate on the debt. 5 means 5%.
properties[].amort_pctnumber0 to 50yesPrincipal repaid a year, as a share of the debt. 1 means 1%.
tokens_outstandingnumberover 0 to 10000000000000yesTokens outstanding.
platform_fee_bpsnumber0 to 2000yesPlatform fee a year on NAV. 100 means 1%.
reserve_pct_of_noinumber0 to 100yesShare of NOI held back as reserves. 10 means 10%.
cap_rate_shock_bpsnumber0 to 2000yesRise in each property's cap rate in the shock. 100 means 1 point.
vacancy_shock_pctnumber0 to 95yesFall in NOI from vacancy in the shock. 5 means NOI falls 5%.
ltv_covenant_pctnumberover 0 to 200yesLoan covenant: the highest LTV allowed, tested per property. 65 means 65%.
gate_pct_per_quarternumber0 to 100yesShare of tokens outstanding that can leave each quarter. 0 means redemptions are shut.
redemption_request_pctnumber0 to 100yesShare of all tokens asking out, shared pro rata under the gate.
secondary_discount_pctnumber0 to 100yesThe discount to NAV you say a sale would take now. Whether a sale is allowed isn't checked.

Hypothetical, and on made-up numbers until you replace them. Nobody traded this, and nothing here is on offer.

1.0Use at your own risk: hedgefund.md is not a fund, not an offer of any security, token or fund interest, and not advice. Results are hypothetical, may be wrong, and are not a record of real trading. Don't use them to market an investment. See the terms.