$RENT on Pons. Contract address: launch soon Follow @rentdayxyz for the address
Rentday
CAsoon

Share price

One vRENT is worth the vault's USDG divided by the vRENT outstanding, and only new USDG changes that ratio.

The formula

The price of one vRENT is the USDG the vault holds divided by the vRENT outstanding. Both numbers live on chain: totalAssets() returns the vault's USDG balance and totalSupply() returns the vRENT in existence. No appraisal, oracle or operator input enters the calculation.

To read the price, the site calls convertToAssets(1e18) on the vault. The argument is one whole vRENT, since vRENT has 18 decimals, and the answer is its value in USDG base units, since USDG has 6. The site multiplies that answer by 1,000,000 and shows it with 12 decimals, the same scale the Roll and the RollRegistry use.

The chain truncates its answer to whole USDG base units (0.000001 USDG), so the last six of the twelve decimals on the live price are always zeros. A Roll calculates its closing price from its own figures and fills all twelve.

ReadingValue (sample figures)
convertToAssets(1e18) returns1017995
In USDG1.017995
As the site shows it1.017995000000
price_close in sample Roll S41.017995143292

OpenZeppelin's version of the formula adds a small virtual offset to both numbers as a defence against inflation attacks. The Contracts page explains it.

What moves the price

The price rises when USDG enters the vault without new vRENT being minted. Two sources do that:

  • Net rent, settled on rent day. The operator transfers the month's rent minus every cost line through addCapital.
  • $RENT token fees. 1% of $RENT trading accrues in ETH. The operator claims it, swaps it to USDG and settles the USDG on the same day.

Anyone can call addCapital, and a plain USDG transfer to the vault has the same effect. USDG added either way raises the price for every holder in proportion to their vRENT.

What does not move the price

EventEffect on priceReason
A depositNoneNew USDG and new vRENT arrive together at the current price, so the ratio holds. Rounding favours the vault, so any dust nudges the price up.
A cash-outNoneUSDG leaves and vRENT is burned at the current price. Rounding can leave up to 0.000001 USDG behind, which nudges the price up.
An appraisalNoneA new valuation changes the base for property tax and insurance from the next month. No USDG moves.
Rent owed but unpaidNone until paidA late apartment adds nothing. When the tenant pays, the money appears as recovered rent in that month's Roll and reaches the vault on the next rent day.

Why operations cannot lower it

The vault has no path for USDG to leave except a holder redeeming, and a redemption takes out USDG and burns vRENT at the same price. The operator has no way to charge a bad month to the vault after the fact.

When a month's costs exceed its rent, the operator sends nothing for that month. The gap is recorded in the Roll as a shortfall and carried forward. Later rent repays the shortfall first, and only what is left after that reaches the vault. Apart from token fees, the price stalls during those months, and it resumes rising once the shortfall is repaid.

The sample Rolls include such a month. In sample month 4 a boiler replacement cost 41,500 USDG, net rent came to -14,508.380450 USDG, and the operator settled nothing. In sample month 5 net rent was 27,478.790373 USDG: the first 14,508.380450 repaid the shortfall and the remaining 12,970.409923 went to the vault. These are sample figures, not results.

Token fees sit outside the shortfall and still reach the vault in a shortfall month. That is why the sample price went from 1.017362244168 to 1.017995143292 in month 4 with no rent settled.

This protection covers operations only. The price is counted in USDG, so a problem with USDG itself would not show in it. The Risks page covers that case.

Rounding

Every division in the close engine truncates toward zero. USDG amounts stop at 6 decimals, vRENT at 18 and prices at 12, and anything past the last digit is dropped. The dropped fractions stay in the vault and belong to every holder.

You can see this in the Rolls. The seven cost lines in sample month 1 add up to 15,664.489999 USDG, because property tax, insurance and the performance fee were each cut at the sixth decimal.

On chain, ERC-4626 rounding also favours the vault: a deposit mints vRENT rounded down and a cash-out pays USDG rounded down. A deposit followed at once by a cash-out can return up to 0.000001 USDG less than went in.

Opening price

The vault opens at 1.000000 USDG per vRENT. At that price one USDG buys one vRENT (10^12 vRENT base units for each USDG base unit), and the deployment script checks that convertToAssets(1e18) returns 1,000,000 after its seed deposit. From then on, each settlement adds the USDG settled divided by the vRENT outstanding at that moment, and the price is 1.000000 plus the sum of those additions.