Free to embed

Embed the calculators

Put the free calculators on your own site with one iframe and a credit line each. Loan sizing runs the three lender tests at once and names which one is holding the proceeds down; the cap rate, DSCR, cash-on-cash, gross rent multiplier and debt yield tools each solve their identity in any direction; the NOI tool builds an income statement line by line and the break-even tool says at what occupancy the whole thing stops covering itself; the mortgage tool prices a quoted loan and the balance it leaves at maturity; and the IRR tool builds a hold's cash flows and solves the rate on them. There is nothing to sign up for and no advertising inside any frame.

The loan sizing calculator

<iframe
  src="https://altyst.ai/embed/loan-sizing"
  title="Commercial loan sizing calculator by Altyst"
  width="100%"
  height="1900"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/loan-sizing">Commercial loan sizing calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1900 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/loan-sizing">Commercial loan sizing calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

This is the whole thing

Below is the live embed, framed on this page exactly the way it would be framed on yours. Not a screenshot: type into it.

Commercial loan sizing calculator by Altyst

Two credit lines are visible there and they are different things. The one inside the frame, on the grey bar, is part of the tool and arrives with it. The one directly underneath, in your page's own HTML, is the line the snippet adds and the one we ask you to keep. This frame also runs the auto-height listener from the snippet above, which is why it fits its content exactly.

The cap rate calculator

Same license, same one-line install, same rules: no cookie, no advertising script, no request leaving the frame. It solves any one of NOI, value, and cap rate from the other two, and shows what the same NOI is worth at nearby cap rates.

<iframe
  src="https://altyst.ai/embed/cap-rate-calculator"
  title="Cap rate calculator by Altyst"
  width="100%"
  height="1350"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/cap-rate-calculator">Cap rate calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1350 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/cap-rate-calculator">Cap rate calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

Cap rate calculator by Altyst

The DSCR calculator

Same license, same one-line install, same rules. It solves any one of DSCR, NOI, and annual debt service from the other two, turns a loan quote into the payment, and shows how far NOI can fall before 1.00x and the common covenant levels.

<iframe
  src="https://altyst.ai/embed/dscr-calculator"
  title="DSCR calculator by Altyst"
  width="100%"
  height="1300"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/dscr-calculator">DSCR calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1300 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/dscr-calculator">DSCR calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

DSCR calculator by Altyst

The cash-on-cash calculator

Same license, same one-line install, same rules. Price, loan, NOI, rate, and closing costs in; equity, year-one cash flow, and the cash-on-cash out, re-solved 50 and 100 basis points in each direction.

<iframe
  src="https://altyst.ai/embed/cash-on-cash-calculator"
  title="Cash-on-cash return calculator by Altyst"
  width="100%"
  height="1500"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/cash-on-cash-calculator">Cash-on-cash return calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1500 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/cash-on-cash-calculator">Cash-on-cash return calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

Cash-on-cash return calculator by Altyst

The NOI calculator

Same license, same one-line install, same rules. Rent, vacancy, other income and expenses in; effective gross income, total expenses, net operating income and the expense ratio out, as a statement a reader can check line by line. Expenses go in itemized or as one total.

<iframe
  src="https://altyst.ai/embed/noi-calculator"
  title="NOI calculator by Altyst"
  width="100%"
  height="1850"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/noi-calculator">NOI calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1850 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/noi-calculator">NOI calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

NOI calculator by Altyst

The gross rent multiplier calculator

Same license, same one-line install, same rules. It solves any one of multiplier, price and annual gross rent from the other two, and then does the thing most GRM widgets do not: translates the multiplier into the going-in cap rate it implies, across a range of expense loads.

<iframe
  src="https://altyst.ai/embed/gross-rent-multiplier-calculator"
  title="Gross rent multiplier calculator by Altyst"
  width="100%"
  height="1550"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/gross-rent-multiplier-calculator">Gross rent multiplier calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1550 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/gross-rent-multiplier-calculator">Gross rent multiplier calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

Gross rent multiplier calculator by Altyst

The break-even occupancy calculator

Same license, same one-line install, same rules. Expenses, reserves and debt service against gross potential income give the occupancy where the property stops covering its costs, the cushion above it in points and in dollars of rent, and coverage at every level down.

<iframe
  src="https://altyst.ai/embed/break-even-occupancy-calculator"
  title="Break-even occupancy calculator by Altyst"
  width="100%"
  height="1600"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/break-even-occupancy-calculator">Break-even occupancy calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1600 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/break-even-occupancy-calculator">Break-even occupancy calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

Break-even occupancy calculator by Altyst

The IRR calculator

Same license, same one-line install, same rules. It builds the equity cash flows of a hold from the NOI, its growth, the payment and the exit, and solves the internal rate of return on them, with the equity multiple and the present value beside it. The year-by-year series opens collapsed inside a frame so a long hold does not fill your article.

<iframe
  src="https://altyst.ai/embed/irr-calculator"
  title="Real estate IRR calculator by Altyst"
  width="100%"
  height="1300"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/irr-calculator">IRR calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1300 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/irr-calculator">IRR calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

IRR calculator by Altyst

The commercial mortgage calculator

Same license, same one-line install, same rules. Loan, rate, amortization, term and interest-only months in; the payment, the annual debt service, the mortgage constant and the balance still owed at maturity out, with the amortization schedule behind a disclosure.

<iframe
  src="https://altyst.ai/embed/commercial-mortgage-calculator"
  title="Commercial mortgage calculator by Altyst"
  width="100%"
  height="1900"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/commercial-mortgage-calculator">Commercial mortgage calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1900 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/commercial-mortgage-calculator">Commercial mortgage calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

Commercial mortgage calculator by Altyst

The debt yield calculator

Same license, same one-line install, same rules. It solves any one of debt yield, loan and NOI from the other two, shows what each conventional floor would advance, and ties the yield back to the cap rate and the loan to value.

<iframe
  src="https://altyst.ai/embed/debt-yield-calculator"
  title="Debt yield calculator by Altyst"
  width="100%"
  height="1550"
  style="border:1px solid #E6E0D2;border-radius:12px;max-width:100%"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
  allow="clipboard-write"
></iframe>
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/debt-yield-calculator">Debt yield calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

A note on that number, because guessing it is the one thing that makes an embed look broken. At a normal article width the calculator lays out in two columns and comes to about 1550 pixels. Below 720px it stacks and roughly doubles, so on a phone a fixed frame this tall scrolls inside itself. If your editor allows a script tag, the auto-height version above removes the guess entirely.

Just the credit line, if you are hand-building the markup
<p style="font:14px/1.5 system-ui,sans-serif;margin:8px 0 0"><a href="https://altyst.ai/tools/debt-yield-calculator">Debt yield calculator</a> by <a href="https://altyst.ai/">Altyst</a></p>

Debt yield calculator by Altyst

What we ask in return

Keep the credit line. That is the entire license, and it is the only thing we ask for a tool that costs nothing and carries no advertising.

  • You may restyle it, move it above the frame, change the wording so it reads naturally in your voice, and use the whole thing on a commercial site.
  • Please do not remove it, hide it with CSS or a zero-height container, repoint the links, present the calculator as your own product, or charge anyone for access to it.
  • You are welcome to add a rel="nofollow" or rel="sponsored" attribute if your site's policy calls for one. We do not ask for a followed link and we will not treat that as a breach of anything.

An honest note about links

Widget embeds are usually sold on the promise of backlinks, and that promise is mostly false as stated. A search engine attributes the links inside a frame to the framed document's own address, not to the page hosting it. So the calculator's internal credit line does nothing for us in a search index. It is there for the human who used the tool and wants to know whose it is.

The line in your page's HTML is the part a crawler reads as a link from your site. That is why the snippet ships both, and why the anchor text is the calculator's real name rather than a keyword phrase we would rather rank for. Google's guidance on links distributed through widgets is worth reading before you paste anything from anyone: it treats keyword-stuffed or hidden widget links as manipulation, and it is right to. If you would rather link without passing any signal at all, use the nofollow attribute. The reason we want the embed is that your readers use the calculator, and some of them then come and look at the rest of what we build.

Opening on your own numbers

Add any of these to the end of the iframe address and the calculator opens on your scenario instead of ours. Everything is optional, and a reader can change any of it. For the loan sizing tool, the copy box at the top of this page writes them for you if you would rather not hand-build the string.

The loan sizing calculator

Numbers only. Anything unreadable falls back to that field's default rather than throwing away the rest of the scenario.
ParameterWhat it setsHighest accepted
pricePurchase price or appraised value, in dollars.100,000,000,000 dollars
noiAnnual net operating income, in dollars.10,000,000,000 dollars
rateInterest rate as a decimal. 0.065 is 6.5%.1
amortAmortization period in years.50 years
termLoan term in years. The balance left at the end of it is the balloon.50 years
ioInterest-only period in months, counted from close.600 months
ltvMaximum loan to value as a decimal. 0.65 is 65%. Zero switches the test off.1.5
dscrMinimum debt service coverage, such as 1.25. Zero switches the test off.10x
dyMinimum debt yield as a decimal. 0.09 is 9%. Zero switches the test off.1

A worked example. A $4,250,000 property with $312,500 of NOI, quoted at 7.15% on a 30-year schedule with a 1.35x coverage floor:

https://altyst.ai/embed/loan-sizing?price=4250000&noi=312500&rate=0.0715&dscr=1.35

The cap rate calculator

Which figure the calculator solves for is read from which two parameters are present: price and NOI solve the cap rate, NOI and cap solve the value, price and cap solve the NOI. There is no mode word, so every parameter stays a number.
ParameterWhat it setsHighest accepted
pricePurchase price or value, in dollars.100,000,000,000 dollars
noiAnnual net operating income, in dollars.10,000,000,000 dollars
capCap rate as a decimal. 0.06 is 6%.1

The same worked deal, opening on its going-in cap rate:

https://altyst.ai/embed/cap-rate-calculator?price=4250000&noi=312500

The DSCR calculator

Which figure the calculator solves for is read from which two parameters are present: NOI and debt service solve the DSCR, debt service and DSCR solve the required NOI, NOI and DSCR solve the supportable debt service. There is no mode word, so every parameter stays a number. The loan-quote helper has no parameters: the payment it computes travels as ds once adopted.
ParameterWhat it setsHighest accepted
noiAnnual net operating income, in dollars.10,000,000,000 dollars
dsAnnual debt service, principal plus interest, in dollars.10,000,000,000 dollars
dscrDebt service coverage ratio as a multiple. 1.25 is 1.25x.100x

The same worked deal, opening on the coverage its quoted payment implies (the 65% loan at 7.15% over thirty years costs $223,897 a year):

https://altyst.ai/embed/dscr-calculator?noi=312500&ds=223897

The cash-on-cash calculator

No mode exists to encode here: the tool always computes the same result from the same six figures, so a link only carries the fields that differ from the defaults.
ParameterWhat it setsHighest accepted
pricePurchase price, in dollars.100,000,000,000 dollars
loanLoan amount, in dollars. Zero means all cash.100,000,000,000 dollars
noiAnnual net operating income, in dollars.10,000,000,000 dollars
rateInterest rate as a decimal. 0.065 is 6.5%.1
amortAmortization period in years.50 years
ccClosing costs as a decimal share of the price. 0.02 is 2%.1

The same worked deal again, at 65% leverage with 3% closing costs:

https://altyst.ai/embed/cash-on-cash-calculator?price=4250000&loan=2762500&noi=312500&rate=0.0715&cc=0.03

The NOI calculator

Two entry choices are encoded rather than named, so every parameter stays a number. Vacancy is read as dollars when vacamt is present and vac is not. Expenses are read as one figure when opex is present, and line by line when it is not. Reserves keep their own parameter in both cases, because a statement that omitted them is the case the tool exists for.
ParameterWhat it setsHighest accepted
gprGross potential rent, annual, in dollars.10,000,000,000 dollars
oiOther income, annual, in dollars.10,000,000,000 dollars
vacVacancy and credit loss as a decimal share of gross potential rent. 0.05 is 5%.1
vacamtVacancy and credit loss in dollars. Present without vac, the tool reads vacancy as dollars.10,000,000,000 dollars
opexOne operating expense total, in dollars. Present, the tool reads expenses as a single figure instead of line by line.10,000,000,000 dollars
taxReal estate taxes, in dollars.10,000,000,000 dollars
insInsurance, in dollars.10,000,000,000 dollars
utilUtilities the owner pays, in dollars.10,000,000,000 dollars
rmRepairs and maintenance, in dollars.10,000,000,000 dollars
ooxOther operating expenses: payroll, general and administrative, marketing.10,000,000,000 dollars
mgmtManagement fee as a decimal share of effective gross income. 0.03 is 3%.1
resReplacement reserves, annual, in dollars.10,000,000,000 dollars
unitsUnit count, for the per-unit figures. Zero leaves them out.1,000,000 units
areaRentable area in square feet, for the per-foot figures. Zero leaves them out.1,000,000,000 square feet

The same worked deal, built from the top with the expenses collapsed into one figure:

https://altyst.ai/embed/noi-calculator?gpr=560000&oi=25000&vac=0.06&opex=228900&units=24&area=21000

The gross rent multiplier calculator

Which figure the calculator solves for is read from which two of the three triangle parameters are present: price and rent solve the multiplier, rent and multiplier solve the price, price and multiplier solve the rent. load sits outside the triangle, feeds only the cap-rate comparison, and never changes the direction.
ParameterWhat it setsHighest accepted
pricePrice or value, in dollars.100,000,000,000 dollars
rentAnnual gross rent at full occupancy, in dollars.10,000,000,000 dollars
grmGross rent multiplier: price over annual gross rent. 10 is ten years of gross rent.1,000x
loadShare of gross rent lost to vacancy and expenses, as a decimal. 0.4 is 40%.1

The same worked deal screened on its gross rent, with the share lost to vacancy and expenses set to what its $312,500 of NOI implies:

https://altyst.ai/embed/gross-rent-multiplier-calculator?price=4250000&rent=560000&load=0.442

The break-even occupancy calculator

No mode exists to encode here: the tool always computes the same result from the same five figures, so a link only carries the fields that differ from the defaults. Its loan-quote helper, like the DSCR page's, has no parameters at all.
ParameterWhat it setsHighest accepted
gpiGross potential income, annual, at full occupancy, in dollars.10,000,000,000 dollars
opexOperating expenses, annual, before debt service and reserves, in dollars.10,000,000,000 dollars
resReplacement reserves funded from operations, annual, in dollars.10,000,000,000 dollars
dsAnnual debt service, principal plus interest, in dollars. Zero for an unlevered deal.10,000,000,000 dollars
occThe occupancy being underwritten, as a decimal. 0.95 is 95%.1

The same worked deal again, under the loan the DSCR example quotes:

https://altyst.ai/embed/break-even-occupancy-calculator?gpi=585000&opex=228900&res=10000&ds=223897&occ=0.94

The IRR calculator

Seven numbers, and the hold is the one with teeth: it is the loop bound on the cash flow table, so it is clamped before anything is built.
ParameterWhat it setsHighest accepted
eqEquity invested at close, in dollars.10,000,000,000 dollars
noiYear-one net operating income, in dollars.10,000,000,000 dollars
gAnnual NOI growth as a decimal. 0.03 is 3%. It compounds from year two. Negative is accepted for a shrinking NOI, down to -1.1
dsAnnual debt service, principal plus interest, in dollars. Zero gives the unlevered IRR.10,000,000,000 dollars
nHold period in whole years. The sale lands at the end of the last one.40 years
saleNet sale proceeds to the equity, after selling costs and the loan payoff. Negative is accepted.100,000,000,000 dollars
discDiscount rate for the present value column, as a decimal. 0.08 is 8%.1

A five-year hold on the same worked deal:

https://altyst.ai/embed/irr-calculator?eq=3700000&noi=600000&g=0.03&ds=480000&n=5&sale=5463000&disc=0.08

The commercial mortgage calculator

Five numbers. The term is the loop bound on the schedule, which is why its ceiling is the one that matters.
ParameterWhat it setsHighest accepted
loanLoan amount at close, in dollars.100,000,000,000 dollars
rateInterest rate as a decimal. 0.065 is 6.5%.1
amortAmortization period in years. The payment is computed on this.50 years
termLoan term in years. The balance left at the end of it is the balloon.50 years
ioInterest-only months from close. It does not shorten the amortization.600 months

The loan the worked deal is financed with, with two years of interest only:

https://altyst.ai/embed/commercial-mortgage-calculator?loan=6300000&rate=0.065&amort=30&term=10&io=24

The debt yield calculator

Four numbers, and no mode among them: which figure is solved travels as which two of the three triangle parameters are present.
ParameterWhat it setsHighest accepted
noiAnnual net operating income as the lender underwrites it, in dollars.10,000,000,000 dollars
loanLoan amount, in dollars.100,000,000,000 dollars
dyDebt yield as a decimal. 0.09 is 9%.10
valuePurchase price or value, in dollars. Zero leaves the loan to value and cap rate figures out.100,000,000,000 dollars

The same deal again. Leaving loan out is what tells it to solve the proceeds a 9% floor allows rather than the yield on a loan you already have:

https://altyst.ai/embed/debt-yield-calculator?noi=600000&dy=0.09&value=10000000

There is no parameter for a heading, a label, a color, a logo, or a link, and there will not be one. A free-text parameter on an embeddable route means anyone can publish arbitrary words on an altyst.ai address inside a frame under our name, which is a defacement surface and a phishing surface at the same time. Numbers are the whole vocabulary, every one is coerced through Number(), and every one is clamped at the ceiling in the tables above.

What you are putting on your page

If you run a site with a real audience you should be suspicious of any third-party frame, so here is everything the embed does, and what stops it doing more.

It cannot call anything, including us

The embed route is served with its own Content-Security-Policy, and that policy sets connect-src 'none'. There is no analytics call, no error report, no beacon, no API request. The browser enforces it, so this is not a promise about our intentions: even if the frame tried, the request would not leave. form-action 'none' and an img-src that names no external host close the other two ways a page can quietly send a value somewhere.

No third-party code runs inside it

Our site can carry advertising conversion tags on its own pages. They are suppressed on the embed routes, and the embed policy names no external script origin, so nothing of ours drags a vendor onto your page. There is no font from a font host and no image from an image host either. Every file the frame fetches is served from altyst.ai.

It holds nothing worth stealing

The framed document reads no session, no cookie, and no browser storage. The code that knows how to talk to our API is not in the bundle it loads, because the route imports the calculator and the solver and nothing else. The frame is also a different origin from your page, and the browser's same-origin rule cuts both ways: your page cannot read into the frame, and the frame cannot read out of your page.

Every input is a number

The parameters in the tables above are the only thing each route accepts, each is parsed to a number or discarded, and each is clamped. The clamps exist because a loop bound in a query string is a way to hang the tab of whoever is reading your article: without a ceiling, a term of half a million years would build six million rows of amortization schedule inside your page and the freeze would be blamed on you.

Framing rules

Only the /embed/ routes may be framed. The rest of altyst.ai keeps frame-ancestors 'self' and its clickjacking header, so nobody can frame a signed-in screen and dress it up as their own. That separation lives in the site configuration rather than in a convention somebody has to remember, and a test in our build matches real paths against both rules on every change, because a rule like that widening by one character is exactly the sort of mistake nobody notices by looking.

One thing we have not done yet and will say so plainly: the embed routes are served from the same hostname as the application. Serving them from a separate origin would put a browser-enforced wall between a framed document and everything the app stores, which is the stronger arrangement. It is on the list. Nothing above depends on it, because the framed document holds no state to wall off.

Where these earn their place

The loan sizing calculator answers one question well: a lender runs loan to value, minimum coverage, and minimum debt yield, funds the smallest answer, and the useful fact is which of the three produced it. A tool that solves one of the three and stops is right only when that test happens to be the binding one, and it cannot tell you whether it was. So the embed belongs under writing where that distinction is the point.

  • A post about why proceeds shrank when rates moved. Coverage is the test that moves with the coupon, and a reader can watch it happen instead of taking your word for it.
  • A brokerage or lender resource page, next to a term sheet explainer, so a borrower can put their own quote in.
  • A course or a syllabus module on debt sizing. The tool names the binding constraint, which is the thing students get wrong.
  • A newsletter archive page. The embed is not fetched until someone scrolls to it, so an archive full of them costs nothing to load.

The cap rate calculator belongs under writing about pricing rather than debt: a piece explaining what a listing's asking price implies about its income, a valuation explainer, or a market letter where the working figures should be checkable. The nearby-caps table is the part worth embedding, because it turns a basis-point argument into dollars in front of the reader.

The DSCR calculator belongs under writing about covenants and credit: a piece on what happens when coverage tightens, a term sheet explainer, or a course module on lender tests, because its cushion table turns the covenant into dollars of income in front of the reader. The cash-on-cash calculator belongs under writing about what a buyer actually earns in year one, and its rate table is the honest version of the "rates ate my returns" story: the same deal, re-solved at the coupons being argued about.

The NOI calculator belongs under anything about reading an operating statement, because its statement view is the artifact the argument is actually about, and under any piece where a reader is likely to be holding a seller's numbers. The gross rent multiplier calculator belongs under beginner and screening material, where its table does the teaching a paragraph cannot: the same multiplier, three points of yield apart. The break-even occupancy calculator belongs under downside and risk writing, because it converts a covenant into units emptying, which is the form a reader remembers.

If there is a calculation you keep rebuilding in a spreadsheet and would embed if it existed, write to support@altyst.ai and say what it is. That is how the next one gets chosen.

Questions

Do I need an account or an API key?

No. The embed is a plain iframe pointing at a public URL. There is no key to request, no domain to register, no dashboard, and nothing that can expire and break your page later. Paste the code and it works.

Does the embed track my readers?

No. The framed document sets no cookie and reads no storage, and once its own files have loaded it makes no further request. Its Content-Security-Policy sets connect-src to none, so the browser blocks any fetch, beacon, or socket the frame might attempt, including one back to us; form-action is none and img-src names no external host, which closes the other two ways a page can quietly send a value somewhere. No advertising or analytics tag runs inside it. The one thing the frame does send is a message to your page containing its own pixel height, which your page ignores unless you pasted the auto-height snippet.

What am I required to keep?

The credit line under the iframe, linking to the calculator and to Altyst. You can restyle it, move it, or change the wording so it reads naturally on your site. What you may not do is remove it, hide it with CSS, or point the links somewhere else. The calculator inside the frame also carries its own credit line, and that one is part of the tool rather than something you install.

Will it slow my page down?

The snippet sets loading to lazy, so the frame is not fetched until a reader scrolls near it. The document is statically generated and served from a CDN with a long edge cache. It loads no third-party script, no font from an external host, and no image: an HTML document, its stylesheet, its JavaScript, and a self-hosted font, every one of them from altyst.ai.

Can I preset a calculator to my own deal?

Yes. Each calculator takes a short list of numeric parameters on the iframe address, nine for loan sizing, three each for the cap rate and DSCR tools, four each for the gross rent multiplier and debt yield, five each for break-even occupancy and the commercial mortgage, six for cash-on-cash, seven for the IRR tool and fourteen for NOI, so it opens on your figures rather than the defaults. A reader can still change anything. The parameters are listed further down this page, along with why every one of them is a number and none of them is text.

What happens if you change the calculator?

Your embed updates, because it points at a URL rather than a copy. We have no plan to retire the tool or move it, and if that ever changed the address would redirect rather than break, because a dead frame on someone else's page is our problem and not theirs. If a calculation convention changes, the tool page says which convention it follows and why, and the arithmetic is tested case by case against the same engine that runs inside the product.

Can I use it on a commercial site?

Yes, including a brokerage site, a course, a newsletter, or a lender's resource page. What is not allowed is charging for access to the calculator itself, presenting it as your own tool, or wrapping it in something that makes it look like your reader is giving their figures to you.

What the frame is a slice of

The calculator asks you to type an NOI. Working that figure out from the rent roll and the T-12, and then carrying it through leasing, exit, and an Excel workbook, is what the rest of Altyst does. The sample deal is the shortest way to see whether that is worth a link from you.