Calculator overview
Inputs and outputs
This summary comes from the calculator's published input and output contract.
Inputs
- Repairs and maintenance (required)
-
Unit % Default 0.08 Range 0 to 0.5
About this input
A share of scheduled rent set aside each year for repairs and replacements.
- Selling costs (required)
-
Unit % Default 0.06 Range 0 to 0.15
About this input
Commission and fees as a share of the sale price.
- Rent growth volatility (required)
-
Unit % Default 0.02 Range 0 to 0.1
About this input
How much each year's rent growth swings around the average, as a standard deviation. 0 makes rent growth certain.
- Monthly rent in the first year (required)
-
Unit currency/month Default 2500 Range 0 to 1000000000000
About this input
The full scheduled rent per month in the first year, before vacancy.
- Expected yearly rent growth (required)
-
Unit % Default 0.03 Range -0.1 to 0.15
About this input
The average yearly change in rent. Rent in the first year is the rent you entered; growth starts in the second year.
- Vacancy in a bad year (required)
-
Unit % Default 0.08 Range 0 to 0.5
About this input
See the good-year vacancy. Enter the same value in both to remove vacancy uncertainty.
- Vacancy in a good year (required)
-
Unit % Default 0.02 Range 0 to 0.5
About this input
The simulation draws each year's vacancy evenly between this and the bad-year figure.
- Vacancy and lost rent (required)
-
Unit % Default 0.05 Range 0 to 0.5
About this input
The share of scheduled rent you expect not to collect. Used for the figures at the average assumptions.
- Property tax in the first year (required)
-
Unit currency/yr Default 3600 Range 0 to 1000000000000
About this input
Yearly property tax in the first year; it grows each year at the cost growth rate.
- Loan term (required)
-
Unit years Default 30 Range 1 to 40
About this input
Years to repay the loan. If you hold longer than the term, the loan is paid off and debt service stops.
- Mortgage interest rate (required)
-
Unit % Default 0.065 Range 0 to 0.2
About this input
The fixed yearly rate on the loan. Payments are monthly. The share of futures with a return below this rate is reported.
- Down payment (required)
-
Unit currency Default 60000 Range 0 to 1000000000000
About this input
Cash paid toward the price. The loan is the price less this. Enter the full price for a cash purchase.
- Yearly growth of property tax and insurance
-
When omitted Blank
Unit % Default Not set Range -0.1 to 0.15
About this input
How fast property tax and insurance grow each year. Leave blank to grow them at the same rate as rents.
- Closing costs paid in cash
-
When omitted Blank
Unit currency Default Not set Range 0 to 1000000000000
About this input
Fees paid at purchase that are not part of the price. They add to the money invested. Leave blank for none.
- Expected yearly appreciation (required)
-
Unit % Default 0.035 Range -0.1 to 0.15
About this input
The average yearly change in the property value, as an arithmetic mean.
- Appreciation volatility (required)
-
Unit % Default 0.08 Range 0 to 0.3
About this input
How much each year's change in value swings around the average, as a standard deviation.
- Purchase price (required)
-
Unit currency Default 300000 Range 1 to 1000000000000
About this input
What you pay for the property. The cap rate divides the first year's net operating income by this.
- Random seed
-
When omitted Blank
Default Not set Range 1 to 2147483646
About this input
The starting number of the workbook's random-number generator, a whole number from 1 to 2,147,483,646. The same seed and inputs always give the same result, so passing a result's seed again reproduces it. Leave blank for 42, the seed of the published examples. The web page does not show this input: each Simulate press first sets it to the last result's next seed.
- Property management (required)
-
Unit % Default 0.08 Range 0 to 0.5
About this input
A share of the rent actually collected. Enter 0 if you manage it yourself.
- Years you hold before selling (required)
-
Unit years Default 10 Range 1 to 30
About this input
How many years you own the property. It is sold at the end of the last year, for its value less selling costs and the loan balance.
- Insurance in the first year (required)
-
Unit currency/yr Default 1500 Range 0 to 1000000000000
About this input
Yearly insurance premium in the first year; it grows each year at the cost growth rate.
Outputs
- Next seed in the same stream
-
No unit declared
About this output
A new seed from the same generator, the start of the next unused stretch of its sequence: a run with it draws fresh futures that share no draw with these. On the web page each Simulate press first enters it as the seed, except the first press after a worked example or Reset.
- Net operating income in the first year
-
Unit currency/yr
About this output
Net operating income in the first year at the average assumptions: the rent collected less management, repairs, property tax and insurance.
- Share of futures returning less than the mortgage rate
-
Unit %
About this output
The share of the 100 simulated futures whose return is less than the mortgage rate.
- Mortgage amount (price less down payment)
-
Unit currency
About this output
The purchase price less the down payment.
- 90th-percentile return across the simulated futures
-
Unit %
About this output
The 90th percentile of the returns across the simulated futures: one future in ten returns more.
- Model Status
-
No unit declared
About this output
Whether the inputs describe a property the workbook can work out, any result to notice, or OK. The NOT VALID and CHECK reasons are listed in the methodology.
- Monthly loan payment
-
Unit currency/month
About this output
The fixed monthly payment of principal and interest.
- Share of futures with at least one year of negative cash flow
-
Unit %
About this output
The share of the simulated futures in which at least one year's cash flow is negative, so you add money that year.
- Workbook self-check
-
No unit declared
About this output
PASS when the workbook's model consistency checks hold for this result: the generator states in range, every grid complete and every future counted, the return search bracketing its root, the loan, the first-year bridge and the chart tables consistent, and the percentiles in order. FAIL means the result should not be trusted; please report it.
- Futures simulated
-
Unit trials
About this output
The number of futures this result simulated: always 100.
- Year by year at the average assumptions
-
No unit declared
About this output
Each year of the hold at the average assumptions: the scheduled rent, net operating income, debt service, cash flow, principal paid down, appreciation, loan balance and property value, with the sale proceeds in the last year.
- Seed used
-
No unit declared
About this output
The seed this result used: the seed supplied, or 42 when left blank. Pass it again with the same inputs to reproduce this result exactly.
- Share of futures where the owner pays to sell
-
Unit %
About this output
The share of the simulated futures in which the sale does not cover the loan and the selling costs, or no return above -99% a year exists; those futures show a return of -99%.
- Cash from the sale after selling costs and the loan payoff
-
Unit currency
About this output
At the average assumptions, the value at the end of the hold less selling costs and the loan balance; negative when the owner has to add money to sell.
- Sampling error of the shares of futures
-
Unit percentage points
About this output
About how far, in percentage points, these shares could sit from the shares that a very large number of futures would give: the 95 percent margin of a share estimated from this many futures, at its widest. 9.8 points at 100 futures. Two runs with different seeds are two such estimates, so the 95 percent range of their difference is wider, about 1.4 times this margin (13.9 points at 100 futures).
- Debt service coverage in the first year Conditional
-
No unit declared
About this output
Net operating income in the first year divided by debt service in the first year. Below 1, the property's income does not cover the loan payments. Not shown for a cash purchase.
- Money invested
-
Unit currency
About this output
The down payment plus the closing costs: the money the return is measured on.
- Return on the money invested (IRR, before income tax)
-
Unit %
About this output
The yearly return on the money invested, before income tax: the rate at which the down payment and closing costs equal the discounted yearly cash flows and the sale, at the average assumptions. It is searched between -99% and 300% a year.
- Debt service in the first year
-
Unit currency/yr
About this output
The twelve loan payments of the first year.
- Cap rate (first-year net operating income / price)
-
Unit %
About this output
Net operating income in the first year divided by the purchase price, before financing.
- Cash flow in the first year
-
Unit currency/yr
About this output
Cash flow in the first year at the average assumptions: net operating income less debt service.
- Cash-on-cash return in the first year
-
Unit %
About this output
Cash flow in the first year divided by the money invested.
- Highest edge of the return chart
-
Unit %
About this output
The highest edge of the return chart: the 98th percentile of the returns drawn on it, or the edge of a narrow range when they are all but equal or none is drawn.
- 10th-percentile return across the simulated futures
-
Unit %
About this output
The 10th percentile of the returns across the simulated futures: one future in ten returns less.
- 25th-percentile return across the simulated futures
-
Unit %
About this output
The 25th percentile of the returns across the simulated futures: one future in four returns less.
- 75th-percentile return across the simulated futures
-
Unit %
About this output
The 75th percentile of the returns across the simulated futures: one future in four returns more.
- Futures outside the range of the return chart
-
Unit futures
About this output
Futures whose return lies outside the range of the return chart and is not drawn there: about 4 in 100 by construction.
- Lowest edge of the return chart
-
Unit %
About this output
The lowest edge of the return chart: the 2nd percentile of the returns drawn on it, or the edge of a narrow range when they are all but equal or none is drawn.
- Return across the simulated futures, in 20 bins
-
No unit declared
About this output
The return chart as a table: each of the 20 bins with its lower and upper edge, and the futures in it below and at or above the mortgage rate.
- Median return across the simulated futures
-
Unit %
About this output
The median of the returns across the simulated futures: half the futures return less.
LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.
Methodology
Purpose and model boundary
This calculator works out the cash flow and return of one rental property bought with a fixed-rate loan, held for a number of years and sold. The main result is the return on the money invested, the internal rate of return of the down payment and closing costs, the yearly cash flows and the sale, at your average assumptions. Every figure is before income tax. The page also shows the cap rate, the cash-on-cash return and the debt service coverage of the first year. It then simulates 100 possible futures of rent growth, vacancy and property value, and reports the share of futures returning less than the mortgage rate and the share with at least one year of negative cash flow.
For the cost of owning against renting your own home, use the Rent vs Buy Calculator. For the monthly payment with tax and insurance, use the Mortgage Payment PITI Calculator, and for the costs of closing, the Closing Costs Estimator. The Monte Carlo Retirement Success Calculator simulates market returns for a retirement plan with the same seeded generator.
The model is educational. It is not a prediction of rents, prices or interest rates, and it is not financial, investment, tax or legal advice.
Inputs and units
Enter the purchase price, down payment and any closing costs paid in cash; the loan's yearly rate and its term in whole years; the monthly rent in the first year; the share of rent lost to vacancy; property tax and insurance in the first year; repairs as a share of the scheduled rent and management as a share of the rent collected; the yearly growth of rent, of property tax and insurance, and of the property value; the years you hold before selling; and selling costs as a share of the sale price. Amounts are US dollars; rates and shares are percentages.
The uncertainty inputs drive the simulation only: the volatility of rent growth and of appreciation, as standard deviations, and the vacancy in a good year and in a bad year. Closing costs may be left blank for none, and the growth of property tax and insurance blank to grow them with rent.
The workbook always runs 100 futures. Its optional seed defaults to 42 for the worked examples. On the page, Simulate uses the last result's next seed before a repeated run, while the first run after a worked example or Reset uses that example's seed. API and MCP callers can supply a seed to reproduce a run.
Governing relationships
The loan is paid monthly at the fixed rate. With the loan L, the monthly rate i, the term n in years and A(m) = (1 + i)^m − 1, the payment and the balance after t years are
payment = L × i × (1 + A(12 n)) / A(12 n)
balance(t) = L × (A(12 n) − A(12 t)) / A(12 n)
and the loan is paid off once the term is reached. A(m) is worked out from LN and EXP in Kahan's compensated forms of ln(1 + i) and e^x − 1, so a tiny positive rate keeps full accuracy instead of cancelling; a rate of exactly 0 uses the interest-free payment L / (12 n). In year t, with scheduled rent R, vacancy v, property tax and insurance F and debt service DS,
net operating income = R × (1 − v) × (1 − management) − repairs × R − F
cash flow = net operating income − DS
Rent in the first year is twelve times the monthly rent; it grows from the second year. At the end of the hold the property sells for its value less selling costs, and the loan balance is repaid; if that leaves less than nothing, the owner pays the difference. The return r is the yearly rate at which
money invested = Σ cash flow(t) / (1 + r)^t + sale / (1 + r)^years
In each simulated future, each year's rent growth is the expected growth plus the volatility times a standard normal draw, each year's vacancy is drawn evenly between the good-year and bad-year figures, and each year's appreciation is a lognormal draw whose mean and standard deviation match the expected appreciation and its volatility. Everything else follows the same arithmetic as the figures at the average assumptions.
Calculation sequence
The workbook works out the figures at the average assumptions, then calculates 100 futures and derives the percentiles, the shares and the return chart. The return is found without iteration, by halving the range from −99% to 300% a year: 48 times at the average assumptions and 32 times in each future, so it is exact to well under a hundredth of a percentage point. A repeated Simulate action uses the last result's next seed before the new run.
Outputs and interpretation
The return on the money invested is the main result. The cap rate divides the first year's net operating income by the price and ignores financing; the cash-on-cash return divides the first year's cash flow by the money invested; the debt service coverage divides the first year's net operating income by its debt service, and is not shown for a cash purchase. Below 1, the property's income does not cover its loan payments in the first year.
The first chart is a bridge of the first year: gross rent, net operating income and cash flow are bars from zero, and each reduction is a red bar below zero. The second chart shows, for each year of the hold, the cash flow, the principal paid down and the rise in value. The year table gives each of these with the loan balance and value, and the sale in the last year.
The return chart counts the simulated futures in 20 equal bins from the 2nd to the 98th percentile of their returns; red bars return less than the mortgage rate. When even a return of −99% a year cannot break even, the future shows −99% and counts as one where the owner pays to sell; a future above 300% shows 300%. Neither kind, nor the few futures outside the chart's range, is drawn, but every future counts in the shares. The shares from 100 futures carry a sampling error of about ±9.8 percentage points at worst.
Validation and status logic
The workbook evaluates the conditions below from top to bottom and returns the first matching status. This is the workbook's priority order, including warnings that may accompany a computed result.
| Priority | Condition | Returned status |
|---|---|---|
| 1 | Years held are not a whole number in the supported interval | NOT VALID: the years you hold must be a whole number from 1 to 30 |
| 2 | Loan term is not a whole number in the supported interval | NOT VALID: the loan term must be a whole number of years from 1 to 40 |
| 3 | A supplied seed is not a whole number in the supported interval; blank uses the published default 42 | NOT VALID: the random seed must be a whole number from 1 to 2,147,483,646 |
| 4 | Purchase price is outside the supported interval | NOT VALID: the purchase price must be from 1 dollar to 1 trillion dollars |
| 5 | Down payment, closing costs, rent, property tax or insurance is outside the supported amount interval | NOT VALID: the down payment, closing costs, rent, property tax and insurance must be amounts from 0 to 1 trillion dollars |
| 6 | Down payment is above the price | NOT VALID: the down payment cannot be more than the purchase price |
| 7 | Down payment and closing costs together are less than 1 dollar | NOT VALID: there is no money invested, so there is no return to measure; enter a down payment or closing costs of at least 1 dollar |
| 8 | Mortgage rate is outside the supported interval | NOT VALID: the mortgage rate must be between 0% and 20% a year |
| 9 | A vacancy, repairs or management share is outside the supported interval | NOT VALID: vacancy, the good-year and bad-year vacancy, repairs and management must each be between 0% and 50% |
| 10 | Good-year vacancy is above bad-year vacancy | NOT VALID: the good-year vacancy cannot be higher than the bad-year vacancy |
| 11 | Rent growth or cost growth is outside the supported interval | NOT VALID: rent growth and cost growth must be between -10% and 15% a year |
| 12 | Appreciation is outside the supported interval | NOT VALID: appreciation must be between -10% and 15% a year |
| 13 | Selling costs are outside the supported interval | NOT VALID: selling costs must be between 0% and 15% of the sale price |
| 14 | A volatility is outside its supported interval | NOT VALID: rent growth volatility must be between 0% and 10% a year, and appreciation volatility between 0% and 30% a year |
| 15 | The 100-future simulation did not complete | NOT VALID: the simulation did not complete; this is a defect in the workbook, please report it |
| 16 | The workbook's self-check fails | CHECK: the self-check of the workbook failed for this result, so do not rely on it; please report it |
| 17 | At the average assumptions no return above −99% a year breaks even | CHECK: at the average assumptions the owner has to add money to sell, so no return above -99% a year exists and the return shows -99% |
| 18 | At the average assumptions the return is above 300% a year | CHECK: at the average assumptions the return is above 300% a year, the top of the range searched, so it shows 300% |
| 19 | The vacancy entered lies outside the good-year to bad-year range | CHECK: the vacancy you entered is outside the good-year to bad-year range, so the simulated futures centre on a different vacancy than the figures at the average assumptions |
| 20 | Both volatilities are zero and the two vacancy figures are equal | CHECK: nothing is uncertain (both volatilities are 0 and the two vacancy figures are equal), so every simulated future is the same |
| 21 | None of the preceding conditions applies | OK |
NOT VALID is a refusal, not a numeric answer. CHECK may accompany a computable result but calls for the stated review. The self-check is separately reported as arithmetic-integrity evidence; it does not replace this ordered status chain. A negative cash flow or a debt service coverage below 1 is a result, not a warning.
Assumptions and limitations
Every figure is before income tax: the model does not include depreciation, its recapture, tax on the gain at sale or the deductibility of interest, which shape the after-tax return of most rentals. Each year is one period, and the loan has a fixed rate with no refinancing. Rent growth, vacancy and appreciation are drawn independently, so a future with weak rents is no more likely to have weak prices; vacancy in one year does not carry into the next. Capital spending such as a new roof, homeowner association fees and any cost not entered are not modelled. A cash flow pattern that changes sign more than once can have more than one return; the search returns the one within its range. Amounts are nominal.
Restrictions and non-computing states
This calculator enforces its numeric limits before it accepts a result. An optional input left blank takes its stated default; a retained seed remains part of every simulation.
Errors and warnings
A request rejected by the page's input limits is not a computed result. A transport or service failure cannot establish a fresh workbook answer. Review the workbook's References and Disclaimer, and check rents, costs and financing for a real property with a qualified professional before using a result for a real decision.
References
Sources and further reading
The model's prices, rents, costs, rates and growth assumptions come from the inputs, not market data. The workbook's References sheet identifies the calculation sources. The links below explain the methods; they do not endorse this calculator.
- S. K. Park and K. W. Miller, “Random number generators: good ones are hard to find,” Communications of the ACM 31(10), 1988, and the Park–Miller–Stockmeyer 1993 correspondence describe the generator family. The workbook uses multiplier 48,271 and modulus 2³¹ − 1.
- The NIST/SEMATECH e-Handbook's lognormal distribution section describes the distribution behind the appreciation draws, and Microsoft Support's NORM.S.INV and PERCENTILE.INC documentation the workbook functions used for the draws and the percentiles.
- Microsoft Support's IRR documentation defines the internal rate of return the workbook finds by bisection.
This is an educational estimate, not financial, investment, tax or legal advice. Rents, costs, values and financing differ from property to property; check them with a qualified professional.
Found a problem, or have an idea?
Tell us if a result looks wrong, a label is unclear, or something is missing. We read every message.