, , , ,

Industrial Real Estate Development Model (Updated Jun 2024)

Allow me to share my Industrial Development Model in Excel. Over the past few years, I’ve been working to add more specialty real estate models to our library. While our All-in-One model certainly has its place, oftentimes really digging into the underwriting of a deal takes a hyper-focused tool. This model has spawned sister Office Development and Retail Development models and was built based on our robust institutional-quality Apartment Development model.

This model fits the definition of a hyper-focused tool. It’s specifically built to analyze merchant-build or build-to-core, ground-up industrial development opportunities. It includes an expandable budgeting and development cash flow module, robust rent roll and operating cash flow module, and the ability to model complex partnership waterfall structures. The Cash Flow drop feature (i.e. Argus Drop) allows it to similarly be used as a Value-Add model.

Since this model was originally released, it has gone through numerous versions and updates. Recently the model was updated to v2.8. This is a major update and includes the addition of a Cash Flow Drop Module (i.e. Argus Drop module). This module required updating hundreds of formulas, writing three separate subroutines, creating six new named ranges/cells, and various formatting updates. So, if you spot a bug, please let me know and I’ll look to fix it in a subsequent version of the model.

Are you an Accelerator member? Review the Industrial Income Statement course to get the most out of this model. Not yet an Accelerator member? Consider joining the real estate financial modeling training program used by top real estate companies and elite universities to train the next generation of CRE professionals.

An industrial distribution center – one of the more popular industrial subproperty types for development today

When to Use the Industrial Development Model?

So the first question you might have is, in what scenario is it best to use this model? And when is it better to use the All-in-One model?

This model is meant to be used in scenarios where you intend to develop, lease-up, and then either sell or hold long-term an industrial property. The inputs are best suited for warehouse and distribution facilities, although other industrial sub property types are also compatible such as industrial outdoor storage (IOS) and data centers.

The model is well-suited for both merchant build (i.e. develop, lease-up, and sell) and build-to-core scenarios (i.e. develop, lease-up, and hold). It includes the option to incorporate construction financing and various forms of equity, while also including an optional Permanent Debt module that refinances the construction debt for longer term holds.

What’s Under the Hood – The A.CRE Industrial Development Model

So what’s included in the Industrial Development Model?  The model is structured similar to my Apartment Development and Self Storage Development models. So if you’ve used either of those models, you’ll be very comfortable using this model.

The main differences between the aforementioned models and this model, is in the Operating Period Cash Flow section. Given the nature of the tenant is different, the operating cash flow section is quite different. Otherwise, the other sections of the model are quite similar.

This model likely still contains errors. If you spot an error, have a feature request, or would like to make a suggestion to improve the model, please let me know.

Version Tab (Visible by default)

The model opens initially to this tab so you can see what changes have been made in the most recent version of the model. On this tab you can also find links to model tutorials, guides, support, and other information.

Underwriting Tab (Visible by default)

The Underwriting tab is where all of your primary inputs are entered. The tab is broken up into six sections, built from top to bottom. The sections can be accessed either by scrolling down to each or using the buttons along the top of the screen. The six sections are ‘Description’,  ‘Development’, ‘Operations’, ‘Reversion (Sale)’, ‘Returns’, and ‘Sensitivity’.

Summary Tab (Visible by default)

While the return metrics levered IRR, levered EMx, and Development Spread are shown shown along the top of the Underwriting tab, the bulk of the risk and return metrics are shown/visualized on the Summary tab. The summary tab also includes six charts, a strengths/weaknesses section, a frame to include a picture/map, and a summary of the investment. The Summary tab is meant to be printed, and as such the view mode is set to Print Preview by default.

Annual Cash Flows (Hidden by default)

The Annual Cash Flows tab rolls up the monthly cash flows to annual periods, so you can view high-level cash flows on one page. The report is printable. You can access the report by pressing the ‘Show’ toggle on the Summary tab within the Property Cash Flow section.

Data Tab (Hidden by default)

Some basic backend settings are housed in a Data tab. These settings are related to the s-curve development cash flow forecasting module, date and period headers, data validation lists, and may include other settings as the model evolves.

Guides and Tutorials for Using the Industrial Development Model

Below you’ll find a video for how to use the of the model. This walk through is based on the initial release version of the model. I’ve since followed up with additional videos that describe the new features that have been added to the model since the initial release.

Latest Updates to the Industrial Development Model

Below find a video where I talk through the major updates to this model from v0.1 (the initial release video above), through v2.1 where I add a Permanent Debt (i.e. long-term hold) module.

Below find a video where I talk through the major updates to this model from v2.1 , through v2.8 where I add a the Cash Flow drop module (i.e. Argus drop) module.


This version of the model is only compatible with Excel 2013, Excel 2016, and Excel 365.

Download the A.CRE Industrial Development Model

To make this model accessible to everyone, it is offered on a “Pay What You’re Able” basis with no minimum (enter $0 if you’d like) or maximum (your support helps keep the content coming – typical real estate development models sell for $100 – $300+ per license). Just enter a price together with an email address to send the download link to, and then click ‘Continue’. If you have any questions about our “Pay What You’re Able” program or why we offer our models on this basis, please reach out to either Mike or Spencer.

We regularly update the model (see version notes). Paid contributors to the model receive a new download link via email each time the model is updated.

Version Notes


  • Updated ‘Expense Growth’ section to remove unnecessary Management Expense Growth assumption and recalculate avg.


  • Added Dynamic Sensitivity Summary on ‘Summary’ tab
    • Dropdown added to ‘Summary N32’ to choose what Sensitivity variable to display
    • Added ‘Sensitivity’ summary calculation starting in row 229 of Underwriting tab, from which information on Summary tab is pulled
    • Replaced ‘Inc. Growth’ with ‘Operations Begin Month’ for ‘Sensitivity #3’
  • Misc. placeholder value updates


  • Fixed OFFSET() formula in I151:I166; the formula was erroneously starting one month prior to Reversion End Month


  • Fixed Delete Tenant, Add OpEx, and Delete OpEx buttons

v2.8 (Major Update)

  • Built a new Cash Flow Drop module (i.e. Argus cash flow drop feature) into the Operating Cash Flow section
    • Allows the user to drop in operating cash flows (NOI, leasing costs, and CapEx) modeled in third-party software (i.e. Argus) rather than use the Operating Cash Flow module
    • Added ‘Enable/Disable CF Drop’ button in H83:I83
    • Added new VBA module: CF_Drop
    • Wrote three macros (ie subroutines) to run this CF Drop feature
    • Added a new Cash Flow drop section where the user can drop in NOI, Leasing Costs, and CapEx modeled externally
    • Added five named ranges that hide/unhide depending on whether the feature is enabled/disabled
    • Updated various formulas in Operating Cash Flow section to accommodate the CF Drop
    • Updated various formulas in Reversion Cash Flow section to accommodate the CF Drop
    • Updated various formulas Annual Cash Flow report to accommodate the CF Drop
    • Used ChatGPT to help write the subroutines (see that conversation here: https://chat.openai.com/share/e/d7c136d1-a3cf-4cbf-8094-c1cfdef698cf)
  • Updated various placeholder values
  • Updated various macros to allow the user to change worksheet names without breaking the macro
  • Used ‘A.CRE Code Helper for Financial Models GPT’ to add code comments in all subroutines in the following modules to help users understand the code:
    • Budget
    • General
    • Operating
    • PermDebt
    • Retail
    • Returns
    • Sensitivity
  • Used ‘A.CRE Code Helper for Financial Models GPT’ to improve efficiency of code
  • As hundreds of code changes were made, tested each macro individually
  • Updated various placeholder values
  • Misc. formatting updates/fixes


  • Fixed ‘Sgl Promote’ and ‘Dbl Promote’ buttons
  • Built a ‘Rent Step’ module to allow rent growth at a frequency other than Annual
    • Added a ‘Rent Step’ frequency input starting in cell K92
    • Renamed heading in cell G92 to ‘Rent Growth %’
    • If the ‘Rent Growth %’ is set to 10% and the ‘Rent Steps’ is set to ‘Every 5 Years’, rent will increase 10% every 5 years for that tenant.
  • Updated various placeholder values
  • Misc. formatting updates


  • Created Add/Delete OpEx line item logic
    • Includes two new buttons: Add OpEx and Delete OpEx
    • Only adds/deletes new OpEx beyond the standard four (CAM, Management, Insurance, Property Tax)
    • Wrote four new subroutines (i.e. Macros): Add_OpEx, Delete_OpEx, Add_OpEx_Annual and Delete_OpEx_Annual to perform add and delete functions
    • Minor changes to the Annual Cash Flow tab to support adding the new lines on that worksheet as well
  • Misc. formatting updates


  • Removed superfulous IRR Error Check in row 178 in backend
  • Removed old Catch Up label from backend that is no longer used


  • Added ‘Assumption Notes’ section to Underwriting tab; open/close using the [+] / [-] button at the top of column O; use notes to support inputs on each row
    • Included various placeholder notes for reference
  • Misc. placeholder values and formatting updates



  • Created a Residual Land Value tool
    • Used OpenAI’s GPT-3 to write the macro
    • Created named cells for Development Spread and Land Cost
    • Added button to the Summary tab to run the tool
  • Added ‘Per Land SF/M2’ metric to the Land Cost section of the Investment Cash Flow section (Underwriting tab)
  • Updated ‘Best Practices’ link text on Version tab
  • Updated various placeholder values


  • Added AUM Fee module added to ‘Partnership Cash Flow’ module
    • New inputs added to row 290 of the Underwriting tab: AUM Fee type, AUM Fee %, and AUM Fee start month
    • Renamed the ‘Developer Fee to GP’ label to ‘Developer Fee to GP + AUM Fee’ (ET213)
    • Updated Levered Cash Flow line available to distribute to partners to reduce by the amount of AUM fee (starting at ET198 on the Underwriting tab)
    • Updated the formula logic in row 213 (starting at ET213) to include the AUM fee to GP


  • Fixed issue where Construction Debt, in case of no PermDebt, was paying off prior to the analysis end
  • Added an “Exit Mo.” output in the quick returns row at top of Underwriting tab for quick reference
  • Added ‘Project Cost’ output to Reversion Cash Flow section (F168) for quick reference
  • Renamed ‘Stabilized’ heading to ‘Stabilized (Untrended)’ for clarification
  • Misc placeholder value updates
  • Misc. formatting fixes


  • Fixed issue where Operating Expenses on Summary tab were being added, rather than subtracted, from income
  • Fixed issue where Capital Expenditures on Summary tab were being added, rather than subtracted, from income
  • Misc placeholder value updates


  • Fixed Permanent Debt DSCR calculation in cell H79 of the Underwriting Tab
  • Fixed Permanent Debt Service payment formula in Pro Forma (cell I130 of Underwriting tab)
  • Added Debt Yield calculation at Permanent Loan funding (G80:I80 of Underwriting tab)

v2.1 (Major Update)

  • Added Permanent Debt Module
    • Created ‘PermDebt’ VBA module
    • Wrote ‘PermDebt_Activate’ macro to turn on the Permanent Debt module
    • Wrote ‘PermDebt_Deactivate’ macro to turn off the Permanent Debt module
    • Created ‘Permanent Debt’ section in Investment Cash Flows starting in row 74
    • Added Perm Debt buttons to activate and deactivate module (H74 and I74 of Underwriting tab)
    • Added Permanent Debt Service and Cash Flow after Financing lines to the Operating Cash Flow section
    • Updated Debt Payoff line in Reversion Cash Flow to use either Permanent Debt, or Construction Debt
    • Updated Summary tab Equity Proceeds from Sale calculation to use either Permanent Debt or Construction Debt
    • Added ‘Permanent Loan’ funding, ‘Permanent Loan Debt Service’, and ‘Permanent Loan Payoff’ lines to the Returns section
    • Updated backend construction interest calc to account for Permanent Loan funding
  • Increased font for ‘Sale Date’ month (Underwriting – H13)
  • Minor update to dummy input values

v2.0 (Major Update)

  • Added ‘Mezzanine Loan’ tranche to Construction Debt (Underwriting tab)
    • Construction debt consists of 1. Construction Loan and 2. Mezzanine Loan
    • Added ‘Construction Loan’ and ‘Mezzanine Loan’ assumptions (rows 60-63)
    • Added variable interest rate line for Mezzanine Debt
    • Updated Variable Rate logic to include Mezzanine Loan
    • Added Mezzanine Loan and Construction Loan calculation module (ET62:JX62 and EP75:JX76)
    • Replaced ‘Annual Rate’ calculation in cell E57 with a Blended Rate calculation between the two forms of construction debt
    • Added ‘Funding by Construction Debt Type’ cash flows to rows 56:58
  • Updated ‘SOURCES’ section of Summary tab to include Mezzanine Loan
  • Added functionality to fund Construction + Mezzanine Debt pari passu (at the same time)
    • Updated label for ‘Funding Order’ to make identifying the input value (D62) easier
    • Added drop-down menu to cell D62, whereby user can change order for second tranche of debt to ‘One’ – this results in secondary debt funding pari passu
    • Updated formulas in rows 57 and 58 to fund debt pari passu when both debt tranches ‘Funding Order’ are set to ‘One’
  • Added Error Check to cell K71
  • Minor update to dummy input values
  • Misc. formatting enhancements


  • Added Steady Growth option to development cash flow forecast method
    • Updated drop-down menu in cells F24:F42 to include ‘Steady Growth’ option
    • Created ‘Steady Growth’ backend section starting in column JZ
    • Updated formulas in cells L24:EN42 to accommodate the Steady Growth option
  • Added Steady Decline option to development cash flow forecast method
    • Updated drop-down menu in cells F24:F42 to include ‘Steady Decline’ option
    • Created ‘Steady Decline’ backend section starting in column JZ
    • Updated formulas in cells L24:EN42 to accommodate the Steady Decline option


  • Added IFERROR logic to General Partner return metrics to accommodate 0% contribution by GP
  • Fixed header on Annual Cash Flow tab – “ANALYSIS START” (cell R4) output was not dynamic
  • Minor update to dummy input values
  • Replaced ‘Analysis Date’ with ‘Period Ending’ label on ‘Annual Cash Flow’ tab
  • Added input (F48) to choose percentage of lease-up income to use for interest; unpaid construction interest accrues to interest reserve


  • Removed the beta label
  • Fixed issue where in certain cases the Add Tenant macro would error out
  • Added Leasing Cost, CapEx Reserve, and Total CapEx as percentage of NOI metric
  • Fixed issue where Rentable/SF(M2) metric wasn’t calculating correctly
  • Misc. formatting enhancements

Beta v0.3

  • Fixed header on Summary tab (‘Analysis Month’ changed to ‘Analysis Year’)
  • Added variability to expense line items
    • % Fixed assumption added to each expense line item
    • 100% fixed means expenses are static, regardless of occupancy; 0% Fixed means expenses are tied to occupancy
  • Added option to “phase-in” taxes
    • Updated Property Tax calculation to use % by year, rather than occupancy % to determine tax amount
    • Added ‘PROPERTY TAX PHASE IN (% OF FULL TAX BY OPERATING YEAR)’ assumptions in cells F72:I74
  • Misc. formatting enhancements and fixes

Beta v0.2

  • Fixed issue where GP2 was not appearing when Dbl. Promote was toggled
  • Removed ‘Units’ from Summary tab; replaced with # of Buildings
  • Minor changes to dummy values
  • Misc. formatting enhancements

Beta v0.11

  • Fixed ‘/NRA/YR’ calculation for Management Fee in Operating Period Cash Flow section
  • Fixed mislabeling of CapEx Reserve in Reversion Pro Forma
  • Added mill rate metric to Operating Period Cash Flow and Reversion Cash Flow sections
  • Misc. updates to dummy values
  • Misc. formatting updates and enhancements

beta v0.1

  • Initial release

About the Author: Born and raised in the Northwest United States, Spencer Burton has over 20 years of residential and commercial real estate experience. Over his career, he has underwritten $30+ billion of commercial real estate at some of the largest institutional real estate firms in the world. He is currently President and member of the founding team at Stablewood. Spencer holds a BS in International Affairs from Florida State University and a Masters in Real Estate Finance from Cornell University.