1. Overview & Why It Matters
Financial analysts, acquisitions associates, and portfolio managers spend over 80% of their workday inside Microsoft Excel and Google Sheets. Traditional financial portals force analysts to manually look up SEC 10-K filings, copy-paste dividend payout ratios, and recalculate cap rates by hand.
The REITwave Spreadsheet Engine converts REITwave from a standalone website into a dynamic quantitative engine embedded inside your underwriting models. When you open your acquisition DCF or dividend income planner, formulas update instantly with fresh institutional data across 207 US REITs.
2. Google Sheets Quickstart (60 Seconds)
Google Sheets executes custom functions via Google Apps Script and REITwave's ultra-fast REST endpoints. Setup takes under a minute and requires zero browser extensions.
Step-by-Step Installation:
- Open any spreadsheet in Google Sheets.
- In the top application menu, click Extensions → Apps Script.
- Delete any sample code in the editor, paste the script below, and press Ctrl+S (or Cmd+S on Mac) to save.
- Return to your spreadsheet and type
=REITWAVE("O", "AFFO_YIELD")in any cell!
/**
* REITwave Google Sheets Custom Function Connector
* Official Formula Engine: =REITWAVE(ticker, metric, [apiKey])
*/
function REITWAVE(ticker, metric, apiKey) {
if (!ticker || !metric) return "#N/A: Missing ticker or metric";
var cleanTicker = ticker.toString().trim().toUpperCase();
var cleanMetric = metric.toString().trim().toUpperCase();
// Script cache prevents spamming API recalculations
var cache = CacheService.getScriptCache();
var cacheKey = "rw_" + cleanTicker + "_" + cleanMetric;
var cachedVal = cache.get(cacheKey);
if (cachedVal !== null) {
var num = Number(cachedVal);
return isNaN(num) ? cachedVal : num;
}
var url = "https://reitwave.com/api/sheets/quote?ticker=" + encodeURIComponent(cleanTicker) +
"&metric=" + encodeURIComponent(cleanMetric) +
(apiKey ? "&api_key=" + encodeURIComponent(apiKey) : "");
try {
var response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
if (response.getResponseCode() !== 200) {
return "#ERROR: " + response.getContentText();
}
var data = JSON.parse(response.getContentText());
var value = data.value;
// Cache result for 10 minutes (600s)
cache.put(cacheKey, value.toString(), 600);
var num = Number(value);
return isNaN(num) ? value : num;
} catch (err) {
return "#ERR: Connection failed";
}
}
/** Convenience formula for live stock price */
function REITPRICE(ticker) {
return REITWAVE(ticker, "PRICE");
}
/** Convenience formula for live AFFO yield */
function REITAFFOYIELD(ticker) {
return REITWAVE(ticker, "AFFO_YIELD");
}
3. Microsoft Excel Setup (Office.js)
Modern Excel (Microsoft 365, Excel Online, Mac, and Windows Desktop) uses Office.js Custom Functions defined by an XML manifest.
Method A: Personal Sideloading (Analyst Desks)
- Download the official REITwave Excel Manifest (.xml).
- Open Excel (Desktop or Excel Online).
- Click Insert → Add-ins → Upload My Add-in (or Manage My Add-ins).
- Select the downloaded
manifest.xmlfile. - In any cell, type
=REITWAVE("PLD", "PRICE").
Method B: Central Microsoft 365 Deployment (Brokerages & Funds)
IT Administrators can deploy the REITwave manifest centrally to all investment committee members and analysts with zero individual user configuration:
- Log in to the Microsoft 365 Admin Center (admin.microsoft.com).
- Navigate to Settings → Integrated Apps → Deploy Add-in.
- Choose Upload custom apps and provide the REITwave manifest URL:
https://reitwave.com/static/addin/manifest.xml - Assign access to your Acquisitions and Capital Markets user groups.
4. Supported Financial Metrics Reference
The =REITWAVE(ticker, metric) formula resolves over 15 key fundamental metrics. Metric names are case-insensitive.
| Metric Key | Description | Example Formula | Sample Output |
|---|---|---|---|
| AFFO_YIELD | Adjusted Funds From Operations Yield (%) | =REITWAVE("O", "AFFO_YIELD") | 7.82 |
| PRICE | Live / fallback share price in USD ($) | =REITWAVE("PLD", "PRICE") | 126.45 |
| P_AFFO | Price-to-AFFO valuation multiple (x) | =REITWAVE("O", "P_AFFO") | 12.78 |
| P_FFO | Price-to-FFO valuation multiple (x) | =REITWAVE("SPG", "P_FFO") | 11.45 |
| DIVIDEND_YIELD | Forward annualized dividend yield (%) | =REITWAVE("VICI", "DIVIDEND_YIELD") | 5.42 |
| CAP_RATE | Institutional private market benchmark cap rate (%) | =REITWAVE("EQIX", "CAP_RATE") | 6.00 |
| OCCUPANCY | Portfolio economic / physical occupancy rate (%) | =REITWAVE("O", "OCCUPANCY") | 98.80 |
| WALT | Weighted Average Lease Term (Years) | =REITWAVE("O", "WALT") | 9.40 |
| DEBT_TO_EBITDA | Net Debt to Adjusted EBITDA leverage multiple (x) | =REITWAVE("PSA", "DEBT_TO_EBITDA") | 4.10 |
| NAV | Consensus Net Asset Value per share ($) | =REITWAVE("O", "NAV") | 64.50 |
| NAV_DISCOUNT | Premium (+) or Discount (-) to Consensus NAV (%) | =REITWAVE("O", "NAV_DISCOUNT") | -11.80 |
| MARKET_CAP | Total market capitalization ($) | =REITWAVE("PLD", "MARKET_CAP") | 117250000000 |
| REITWAVE_SCORE | Proprietary quantitative quality rank (0-100) | =REITWAVE("O", "REITWAVE_SCORE") | 91 |
| SECTOR | Primary REIT property sector classification | =REITWAVE("EQIX", "SECTOR") | Data Centers |
5. Commercial Tiers & API Keys
To ensure sustainable low latency across institutional spreadsheets, REITwave formulas are tiered based on membership level:
$0
Public evaluation in the web sandbox. Up to 10 formula calls / hour without an API key.
Hobbyist / Evaluation$29 /mo
Up to 250 formula calls / month. Ideal for individual dividend growth allocators.
Individual Modelers$79 /mo
Unlimited formula calls. Real-time streaming quotes, cap rate models, and priority support.
CRE Brokers & Analysts$299 /mo
3 Analyst seats included, Central Microsoft 365 Admin deployment, and direct REST API access.
Hedge Funds & Desks6. Caching & Latency Architecture
To ensure your spreadsheet does not freeze or trigger rate limits when running 100+ formulas simultaneously, the REITwave Add-in incorporates a multi-layer caching architecture:
- Apps Script CacheService (10-minute TTL): Recalculating a spreadsheet does not re-fetch existing cells; it retrieves values directly from memory in
< 5ms. - In-Memory Universe Engine: REITwave's backend caches valuation models and live prices in memory, resolving requests in
< 15ms. - Graceful Degradation: If a non-existent ticker or metric is entered, formula returns descriptive errors (
#N/A: Ticker Not Found) rather than silent zeros.
7. Frequently Asked Questions (FAQ)
=REITWAVE("O", "AFFO_YIELD", "rw_live_xxxx").Embed REITwave in Your Models Today
Upgrade to Pro or Institutional to get unlimited spreadsheet formula access across all 207 US REITs.