
Cre Investment Analysis
- 1 installs
- Updated August 3, 2026
- agentic-assets/agent-skills
cre-investment-analysis is a Claude Code skill that underwrites commercial real estate with DCF/IRR modeling and produces institutional-grade investment memos.
About
cre-investment-analysis is a Claude Code skill for commercial real estate investment analysis and business-plan development. A developer or analyst uses it to underwrite properties with DCF, IRR, NPV and cash-on-cash returns, model revenue and operating expenses, and evaluate REITs with FFO/AFFO metrics. It includes Python scripts for DCF and sensitivity/Monte Carlo analysis and produces investment memorandums with institutional underwriting standards.
- Underwrites commercial real estate with DCF, IRR, NPV and cash-on-cash modeling
- Covers multifamily, office, retail, industrial, mixed-use and REIT analysis
- Runs sensitivity and Monte Carlo scenario analysis and produces investment memos
Cre Investment Analysis by the numbers
- 1 all-time installs (skills.sh)
- Ranked #909 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
cre-investment-analysis capabilities & compatibility
- Capabilities
- dcf valuation · financial modeling · sensitivity analysis · reit analysis
- Works with
- excel
- Use cases
- data analysis · documentation
- Pricing
- Free
What cre-investment-analysis says it does
Use when analyzing commercial properties, creating investment memorandums, performing DCF/IRR analysis, evaluating REIT investments, or developing CRE business plans with institutional-grade underwrit
**Financial Modeling**: DCF, IRR, NPV, cash-on-cash returns, equity multiples, yield metrics
**REIT Analysis**: FFO/AFFO metrics, same-store NOI growth, leverage ratios, dividend coverage
npx skills add https://github.com/agentic-assets/agent-skills --skill cre-investment-analysisAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| Last updated | August 3, 2026 |
| Repository | agentic-assets/agent-skills ↗ |
What it does
Underwrite commercial real estate with DCF/IRR modeling and produce institutional-grade investment memos.
Who is it for?
Analysts underwriting multifamily, office, retail or industrial deals and producing investment memorandums for lenders or equity partners.
Skip if: Residential single-family home valuation, since the skill targets commercial property types and institutional underwriting.
When should I use this skill?
The user is analyzing commercial properties, creating investment memos, performing DCF/IRR analysis, or evaluating REITs.
What you get
The skill produces defensible, audit-ready CRE analyses and business plans with DCF, IRR and sensitivity tables.
- investment memorandum
- dcf and sensitivity analysis
- excel pro forma templates
By the numbers
- 14 frontmatter triggers including CRE, DCF analysis, IRR, REIT
- 3 valuation approaches: income, sales comparison, cost
Files
Commercial Real Estate Investment Analysis & Business Plan
Professional-grade commercial real estate investment analysis combining academic rigor with institutional underwriting standards. This skill produces defensible, audit-ready analyses suitable for lenders, equity partners, institutional investors, and academic research.
Core Capabilities
Investment Analysis
- Property Types: Multifamily, office, retail, industrial, mixed-use, land development
- Financial Modeling: DCF, IRR, NPV, cash-on-cash returns, equity multiples, yield metrics
- Underwriting: Institutional-grade assumptions, sensitivity analysis, scenario modeling
- Market Analysis: Supply/demand dynamics, comparable sales/leases, submarket positioning
- Risk Assessment: Systematic risk factors, mitigation strategies, probability-weighted outcomes
Business Plan Development
- Executive Summary: Investment thesis, value proposition, target returns
- Market Overview: Demographics, economic drivers, competitive landscape, barriers to entry
- Property/Portfolio Description: Physical characteristics, tenant mix, lease analysis, capital needs
- Financial Projections: 5-10 year pro formas, capital structure, waterfall distributions
- Operations Strategy: Property management, value-add initiatives, repositioning plans
- Exit Strategy: Hold period rationale, exit assumptions, multiple disposition scenarios
Analytical Frameworks
- Acquisition Analysis: Purchase price justification, sources & uses, closing adjustments
- Development Feasibility: Land basis, hard/soft costs, construction timeline, lease-up assumptions
- Disposition Strategy: Hold vs. sell analysis, 1031 exchange considerations, tax implications
- Portfolio Optimization: Correlation analysis, geographic diversification, risk-adjusted returns
- REIT Analysis: FFO/AFFO metrics, same-store NOI growth, leverage ratios, dividend coverage
Methodology
1. Property & Market Assessment
Physical Analysis
- Site characteristics (location, access, visibility, topography)
- Building specifications (square footage, age, condition, systems)
- Unit mix and layouts (for multifamily)
- Parking ratios and amenities
- Deferred maintenance assessment
- Required capital expenditures
Market Positioning
- Submarket definition and boundaries
- Competitive set identification
- Market rent analysis (asking vs. effective)
- Occupancy trends and absorption rates
- New supply pipeline
- Economic and demographic drivers
- Transportation and infrastructure
2. Financial Underwriting
Revenue Modeling
- In-place vs. market rents (roll-to-market analysis)
- Lease expiration schedule
- Renewal probability and rent escalations
- Vacancy and collection loss assumptions (market-based)
- Ancillary income (parking, laundry, pet fees, etc.)
- Percentage rent (for retail)
Operating Expense Projection
- Property taxes (actual + projected reassessment)
- Insurance (property, liability, flood if applicable)
- Utilities (tenant vs. landlord responsibility)
- Repairs and maintenance (% of EGI or per-unit/SF)
- Property management (% of EGI, typically 3-5%)
- Administrative costs
- Payroll (on-site staff if applicable)
- Contract services (landscaping, security, etc.)
- Replacement reserves ($/unit or $/SF annually)
Capital Structure
- Debt: LTV ratio, interest rate, amortization, IO period, prepayment penalties
- Equity: Preferred vs. common, promote structure, waterfall tiers
- Total project costs: Acquisition, closing, renovation, lease-up reserves
- Sources and uses statement
Cash Flow Analysis
- Levered vs. unlevered returns
- Before-tax vs. after-tax analysis
- Free cash flow to equity
- Promote/carry calculations
- Sensitivity to key variables (rent, occupancy, exit cap)
3. Valuation Methods
Income Approach
- Direct capitalization: NOI / cap rate
- Discounted Cash Flow (DCF): NPV of cash flows + reversion
- Terminal value calculation (exit cap rate or cap rate compression/expansion)
Sales Comparison Approach
- Price per unit (multifamily)
- Price per square foot (office, retail, industrial)
- Adjustments for condition, location, size, vintage
- Recent comparable transactions analysis
Cost Approach (primarily for new construction)
- Land value + replacement cost - depreciation
- Developer's profit and entrepreneurial incentive
4. Risk & Sensitivity Analysis
Scenario Modeling
- Base case (most likely)
- Downside case (conservative assumptions)
- Upside case (optimistic but achievable)
Sensitivity Tables
- Two-way tables (e.g., exit cap vs. rental growth)
- Monte Carlo simulation for complex portfolios
- Stress testing (recession scenario, interest rate shock)
Key Risk Factors
- Market risk (supply/demand imbalance)
- Lease-up risk (new construction or major repositioning)
- Interest rate risk (floating rate debt, refinance risk)
- Operational risk (management, deferred maintenance)
- Liquidity risk (ability to exit on timeline)
- Regulatory/political risk (rent control, zoning changes)
5. Business Plan Components
Executive Summary (2-3 pages)
- Investment highlights
- Property/market overview
- Financial summary (purchase price, NOI, returns)
- Value creation strategy
- Risk factors and mitigants
- Recommendation
Market Analysis (5-10 pages)
- Economic overview (MSA and submarket)
- Demographics and employment
- Supply and demand fundamentals
- Competitive analysis
- Market rent and occupancy trends
- Outlook and growth drivers
Property Description (5-10 pages)
- Location and access
- Site and improvements
- Unit/space mix
- Rent roll analysis
- Physical condition assessment
- Required capital improvements
Financial Analysis (10-15 pages)
- Operating pro forma (5-10 years)
- Capital budget
- Cash flow projections
- Return metrics (IRR, equity multiple, cash-on-cash)
- Sensitivity analysis
- Comparison to investment hurdles
Operational Strategy (3-5 pages)
- Property management approach
- Leasing strategy
- Capital improvement plan
- Value-add initiatives
- Timeline and milestones
Exit Strategy (2-3 pages)
- Hold period rationale
- Exit assumptions (cap rate, NOI)
- Disposition process
- Alternative exit scenarios
Appendices
- Detailed rent roll
- T-12 operating statements
- Property tax assessment
- Environmental Phase I
- Property condition assessment
- Market comparables
- Detailed financial model
Working with Input Documents
Commercial real estate analysis frequently requires extracting data from various document types. This skill works seamlessly with Claude's official document processing skills to analyze input materials.
Common Document Types in CRE Analysis
Financial Documents
- Excel Spreadsheets (.xlsx, .xlsm, .csv): Operating statements, rent rolls, financial models, budgets
- PDF Files (.pdf): Offering memorandums, appraisal reports, environmental reports, property condition assessments, tenant estoppels, title reports
Presentation Materials
- PowerPoint (.pptx): Investment presentations, market studies, board presentations
- Word Documents (.docx): Business plans, market reports, legal documents, LOIs, PSAs
Required Skills for Document Processing
To analyze documents as inputs, you need the official Claude document skills:
- `pdf` - Extract text/tables from PDFs, read offering memos, appraisals
- `xlsx` - Read/analyze spreadsheets, extract rent rolls, operating statements
- `docx` - Read Word documents, extract text from reports
- `pptx` - Analyze presentation content, extract market data
Installing Official Document Skills
If you already have these skills: Skip this section - they're already available in your environment.
If you need to install them:
Option 1: Claude.ai Users
- These skills are built-in and automatically available
- No installation needed
Option 2: Claude Code Users
- Skills are located at
/mnt/skills/public/in your environment - Available skills:
pdf,xlsx,docx,pptx - These load automatically when needed
Option 3: Manual Installation (if needed)
# Download from Anthropic's official skills repository
git clone https://github.com/anthropics/skills.git
cd skills/skills/
# Copy the skills you need to your Claude skills directory
cp -r docx ~/.claude/skills/
cp -r xlsx ~/.claude/skills/
cp -r pdf ~/.claude/skills/
cp -r pptx ~/.claude/skills/Or visit: https://github.com/anthropics/skills
Document Processing Workflows
Workflow 1: Analyzing an Offering Memorandum (PDF)
User provides: PDF offering memorandum for a property
Processing steps: 1. Use pdf skill to extract text and tables from the offering memo 2. Identify key data points: purchase price, NOI, rent roll, cap rate, property details 3. Use cre-investment-analysis skill to validate assumptions and create independent analysis 4. Cross-reference extracted data with market standards 5. Generate investment recommendation
Example prompt:
I have an offering memorandum PDF for a multifamily property. Please:
1. Extract all financial data and property information
2. Using the cre-investment-analysis skill, validate the sponsor's assumptions
3. Perform independent DCF analysis
4. Provide investment recommendationWorkflow 2: Analyzing Operating Statements (Excel)
User provides: T-12 operating statement in Excel
Processing steps: 1. Use xlsx skill to read and analyze the spreadsheet 2. Extract revenue, expense, and NOI data 3. Validate expense ratios against industry benchmarks (from references/underwriting-standards.md) 4. Identify unusual line items or inconsistencies 5. Use extracted data for pro forma projections
Example prompt:
Analyze this T-12 operating statement (Excel file) for a 200-unit apartment property:
1. Extract all revenue and expense data
2. Calculate operating expense ratio and compare to industry standards
3. Identify any red flags or unusual expenses
4. Use the cre-investment-analysis skill to project stabilized NOIWorkflow 3: Creating Investment Presentations (PowerPoint)
User wants: PowerPoint presentation for investment committee
Processing steps: 1. Use cre-investment-analysis skill to perform complete analysis 2. Generate key findings, financial projections, risk analysis 3. Use pptx skill to create professional presentation 4. Include market data, financial tables, sensitivity analysis 5. Format according to institutional standards
Example prompt:
Create an investment committee presentation using:
1. cre-investment-analysis skill to analyze this acquisition
2. pptx skill to create a 15-slide PowerPoint with:
- Executive summary
- Market overview
- Property details
- Financial analysis
- Risk assessment
- RecommendationWorkflow 4: Creating Professional Excel Financial Models
User wants: Professional CRE financial model in Excel
Processing steps: 1. Use cre-investment-analysis to define model structure and calculations 2. Use xlsx skill to create Excel workbook with professional formatting 3. Apply industry-standard color coding and formulas 4. Organize tabs logically (Summary, Assumptions, Pro Forma, etc.) 5. Ensure all calculations use formulas and cell references (no hardcoding)
Example prompt:
Create a professional multifamily acquisition model in Excel:
Property Details:
- 180 units, purchase price $27M
- Current NOI $1.65M
- 70% LTV financing at 6.0%
Model Requirements:
1. Summary tab with all key metrics
2. Assumptions tab (color-coded inputs)
3. 10-year operating pro forma
4. Debt amortization schedule
5. Cash flow waterfall
6. Sensitivity tables (IRR vs. exit cap and rent growth)
CRITICAL: Use formulas and cell references throughout - no hardcoded values except in Assumptions tab. Follow professional CRE formatting standards.Professional Excel Standards (using xlsx skill):
- Blue text: All assumption inputs (growth rates, cap rates, costs)
- Black text: All formulas and calculated values
- Green text: Cell references to other worksheets
- Yellow highlights: Key assumptions requiring attention
- No hardcoding: Every number except assumptions must be a formula
- Cell references: Use absolute ($B$5) and relative (B5) references appropriately
- Consistent formulas: Copy formulas across periods - no manual entry
- Zero formatting: Display zeros as "-" for cleaner presentation
- Currency format: Use $#,##0 with units in headers ("Revenue ($000s)")
Workflow 5: Extracting Rent Roll Data (Excel + Analysis)
User provides: Rent roll spreadsheet
Processing steps: 1. Use xlsx skill to read rent roll data 2. Calculate weighted average rent, occupancy, lease expiration schedule 3. Identify roll-to-market opportunities 4. Use cre-investment-analysis to project rental income with lease-up assumptions 5. Generate value-add analysis
Example prompt:
I have a rent roll Excel file. Please:
1. Extract all unit-level data (unit #, beds/baths, SF, current rent, lease expiration)
2. Calculate weighted average rent and occupancy
3. Compare to market rents (Austin, TX - Class B multifamily)
4. Using cre-investment-analysis skill, project stabilized income after roll-to-market
5. Estimate value creation from rent growthWorkflow 6: Analyzing Appraisal Reports (PDF + Word)
User provides: Appraisal report (PDF) and supplementary docs (Word)
Processing steps: 1. Use pdf skill to extract appraisal conclusions, comparable sales, income approach 2. Use docx skill to read supplementary market reports 3. Validate appraiser's assumptions against market data 4. Use cre-investment-analysis to perform independent valuation 5. Identify discrepancies or areas of concern
Example prompt:
Review this appraisal report (PDF) and market study (Word doc):
1. Extract the appraiser's value conclusion and methodology
2. Extract comparable sales and income approach assumptions
3. Using cre-investment-analysis skill, perform independent analysis
4. Compare results and identify any material differences
5. Provide assessment of appraisal qualityIntegration Best Practices
Excel Model Creation (CRITICAL) When using xlsx skill to create CRE financial models: 1. NO HARDCODING: Use formulas with cell references - never hardcode values in calculation cells 2. Color Coding: Blue text = inputs, Black text = formulas, Green text = cross-sheet references 3. Cell References: All calculations must reference Assumptions tab (e.g., =Assumptions!$B$5) 4. Consistent Formulas: Copy formulas across periods - don't manually enter values 5. Professional Formatting: Currency as $#,##0, zeros as "-", negatives as (123) 6. Zero Errors: Deliver models with NO #REF!, #DIV/0!, #VALUE!, or #N/A errors 7. Documentation: Source all blue assumption inputs in adjacent cells or comments
Example of CORRECT formula structure:
❌ WRONG: =1450 * 180 * 12 * 1.03
✅ CORRECT: =Assumptions!$B$8 * Assumptions!$B$5 * 12 * (1 + Assumptions!$B$9)Data Extraction Priority 1. Always extract and validate source data before creating analysis 2. Cross-reference multiple documents when available (e.g., rent roll vs. offering memo) 3. Flag discrepancies between documents 4. Document all data sources in final output
Quality Control 1. Verify extracted numbers match source documents 2. Check for data entry errors or OCR mistakes (especially with PDFs) 3. Validate calculations independently 4. Compare extracted assumptions to market standards 5. Excel Models: Test that changing any assumption flows through entire model
Common Document Combinations
- Acquisition package: Offering memo (PDF) + T-12 (Excel) + Rent roll (Excel) + Photos
- Due diligence: Appraisal (PDF) + PCA (PDF) + Phase I Environmental (PDF) + Title report (PDF)
- Underwriting: Financial model (Excel) + Market study (Word/PDF) + Comp set (Excel)
- Investment committee: Analysis memo (Word) + Financial model (Excel) + Presentation (PowerPoint)
Handling Common Document Issues
Scanned PDFs (Non-searchable)
- The
pdfskill includes OCR capabilities for scanned documents - May require additional processing time
- Verify extracted data accuracy due to OCR errors
Protected/Encrypted PDFs
- The
pdfskill can handle password-protected files if password is provided - Some restrictions may prevent text extraction
Complex Excel Models
- Focus on extracting key inputs and outputs
- Validate formulas when possible
- Note assumptions and limitations
Legacy File Formats
.docfiles: Convert to.docxbefore processing.xlsfiles: Usually can be read byxlsxskill- Older formats may require conversion
Example: Complete Acquisition Analysis from Documents
User provides:
- Offering memorandum (PDF)
- T-12 operating statement (Excel)
- Rent roll (Excel)
- Market study (PDF)
Complete workflow:
Please analyze this multifamily acquisition opportunity:
STEP 1: Extract data from all documents
- PDF offering memo: Property details, asking price, seller's pro forma
- Excel T-12: Actual historical financials
- Excel rent roll: Unit-level data, lease expirations
- PDF market study: Market rents, occupancy, new supply
STEP 2: Validate and cross-reference
- Compare seller's pro forma to actual T-12
- Compare in-place rents to market rents
- Identify discrepancies or red flags
STEP 3: Perform independent analysis using cre-investment-analysis skill
- Create base case pro forma with conservative assumptions
- Develop 3 scenarios (base/downside/upside)
- Calculate IRR, equity multiple, cash-on-cash returns
- Perform sensitivity analysis
STEP 4: Create deliverables
- Investment memo (Word doc using docx skill)
- Financial model (Excel using xlsx skill)
- IC presentation (PowerPoint using pptx skill)
All deliverables should follow institutional formatting standards.Output Standards
Professional Formatting
- Executive summary suitable for board presentation
- Tables and charts with institutional-quality formatting
- Color-coding: Green for actuals, yellow for key assumptions, blue for headers
- Clear labeling of units ($/SF, $/unit, %, basis points)
- Footnotes for key assumptions and data sources
Analytical Rigor
- All assumptions clearly stated and defensible
- Market data sourced from credible providers (CoStar, REIS, LoopNet, CBRE, JLL)
- Conservative underwriting where uncertainty exists
- Explicit treatment of risk factors
- Sensitivity to institutional investor requirements
Academic Standards
- Proper citations for market data and research
- Methodology transparency
- Replicable analysis
- Peer-reviewed frameworks (e.g., Geltner & Miller, Real Estate Principles)
- Alignment with NCREIF, NAREIT, or ULI standards where applicable
Key Metrics & Benchmarks
Return Metrics
- IRR: Target 15-20% for value-add, 8-12% for core
- Equity Multiple: Typically 1.5x - 2.5x over 5-7 years
- Cash-on-Cash Return: Year 1 typically 6-10%
- Yield on Cost: Development projects target 7-9%
Underwriting Assumptions
- Vacancy: Market rate + 200-300 bps for stabilized properties
- Rent Growth: Inflation + 0-200 bps depending on market
- Operating Expense Ratio: 35-45% of EGI (varies by property type)
- Management Fee: 3-5% of EGI
- Replacement Reserves: $250-400/unit annually (multifamily)
- Exit Cap Rate: Entry cap + 25-50 bps (compression risk)
Leverage Parameters
- Core: 50-65% LTV
- Value-Add: 60-75% LTV
- Development: 70-80% LTV (with mezz or pref equity)
- DSCR: Minimum 1.25x (typical lender requirement)
Usage Instructions
For Acquisition Analysis
Provide: Address/location, property type, purchase price, current NOI, unit/SF count, market data Output: Complete investment memo with DCF, sensitivity analysis, and recommendation
For Development Feasibility
Provide: Location, proposed use, site size, development program, estimated costs Output: Feasibility study with pro forma, yield analysis, and risk assessment
For Business Plan Creation
Provide: Investment strategy, target market, property type, capital structure Output: Full business plan suitable for equity raise or lender presentation
For REIT Analysis
Provide: REIT ticker, property types, geographic focus Output: Investment analysis with FFO/AFFO projections, comp set comparison, buy/sell recommendation
Quality Assurance
- Cross-check all calculations
- Verify units and conversions
- Ensure internal consistency (e.g., sources = uses)
- Validate assumptions against market data
- Check formulas in Excel models
- Review for typographical errors
- Confirm all exhibits are referenced in text
References & Resources
Internal References
- See
references/underwriting-standards.mdfor industry benchmarks - See
references/market-data-sources.mdfor data provider guidance - See
references/reit-analysis-framework.mdfor REIT-specific metrics - See
references/document-integration-workflows.mdfor detailed workflows combining this skill with document processing skills - See
scripts/dcf_analysis.pyfor discounted cash flow calculations - See
scripts/sensitivity_analysis.pyfor scenario modeling - See
assets/templates/for Excel pro forma templates
Required Document Processing Skills
To analyze input documents (offering memos, rent rolls, appraisals, financial statements), this skill integrates with Claude's official document skills:
- `pdf` - Extract data from offering memorandums, appraisals, reports
- Location:
/mnt/skills/public/pdf/ - GitHub: https://github.com/anthropics/skills/tree/main/skills/pdf
- Use for: Reading PDFs, extracting tables, OCR on scanned documents
- `xlsx` - Analyze Excel spreadsheets, rent rolls, operating statements
- Location:
/mnt/skills/public/xlsx/ - GitHub: https://github.com/anthropics/skills/tree/main/skills/xlsx
- Use for: Reading/writing Excel files, extracting financial data, creating professional financial models
- CRITICAL: When creating models, use formulas (not hardcoded values), apply professional color coding, and follow CRE formatting standards
- `docx` - Process Word documents, reports, business plans
- Location:
/mnt/skills/public/docx/ - GitHub: https://github.com/anthropics/skills/tree/main/skills/docx
- Use for: Reading Word docs, creating investment memos, market reports
- `pptx` - Create and analyze PowerPoint presentations
- Location:
/mnt/skills/public/pptx/ - GitHub: https://github.com/anthropics/skills/tree/main/skills/pptx
- Use for: Creating investment committee presentations, board decks
These skills are automatically available in Claude.ai and Claude Code environments. If not available, see "Installing Official Document Skills" section above.
CRE Pro Forma Templates
This directory contains Excel templates for commercial real estate analysis:
Available Templates
1. multifamily_proforma.xlsx - Apartment property analysis template
- 10-year operating pro forma
- Unit mix and rent roll
- Capital expenditure schedule
- DCF and sensitivity analysis
- Sources and uses
2. office_proforma.xlsx - Office property analysis template
- Lease expiration schedule
- TI and leasing commission assumptions
- Operating expense recovery
- Multi-scenario analysis
3. retail_proforma.xlsx - Retail property analysis template
- Tenant mix and CAM recovery
- Percentage rent calculations
- Anchor and in-line tenant analysis
4. industrial_proforma.xlsx - Industrial/warehouse analysis template
- NNN lease structure
- Minimal operating expenses
- Build-to-suit scenarios
5. development_proforma.xlsx - Development project analysis
- Construction budget and timeline
- Lease-up assumptions
- Yield on cost analysis
- Land residual valuation
Usage
These templates follow institutional underwriting standards and include:
- Color-coded inputs (yellow) and outputs (green)
- Linked assumptions for scenario analysis
- Built-in sensitivity tables
- IRR and NPV calculations
- Professional formatting for investor presentations
Note: Templates should be customized for each specific project. Verify all formulas and assumptions before use.
Document Integration Workflows for CRE Analysis
Overview
Commercial real estate analysis relies heavily on extracting and validating data from various document sources. This guide provides detailed workflows for integrating the CRE investment analysis skill with Claude's official document processing skills.
Document Skills Quick Reference
| Skill | Purpose | Common CRE Use Cases |
|---|---|---|
pdf | Extract text/tables from PDFs | Offering memos, appraisals, environmental reports, title reports, PCAs |
xlsx | CREATE/EDIT/READ Excel files | BUILD financial models, analyze T-12 statements, rent rolls, budgets, comps |
docx | Read/create Word documents | Investment memos, market studies, business plans, due diligence reports |
pptx | Create/edit PowerPoint | Investment committee presentations, board decks, marketing materials |
IMPORTANT: The xlsx skill is used for BOTH extracting data from existing spreadsheets AND creating new professional CRE financial models. When creating models, strict adherence to professional standards is required: use formulas (not hardcoded values), apply proper color coding (blue=inputs, black=formulas), and ensure dynamic calculations.
Detailed Workflows
Workflow 1: Complete Multifamily Acquisition Analysis
Scenario: Analyzing a 200-unit apartment complex acquisition
Input Documents: 1. Offering memorandum (PDF) - 45 pages 2. Trailing 12-month operating statement (Excel) 3. Current rent roll (Excel) 4. Comparable sales analysis (PDF) 5. Market study (PDF or Word)
Step-by-Step Process:
Step 1: Extract Offering Memo Data (PDF Skill)
Use the pdf skill to extract from the offering memorandum:
1. Property address and description
2. Asking price
3. Seller's pro forma NOI
4. Current occupancy
5. List of recent capital improvements
6. Lease terms and concessions
7. Property tax and insurance amountsWhat to extract:
- Executive summary page
- Property details (location, age, condition)
- Financial summary table
- Capital expenditures list
- Market positioning claims
Validation checks:
- Does asking price match stated cap rate and NOI?
- Are property details consistent throughout document?
- Any footnotes or disclaimers that modify numbers?
Step 2: Analyze Operating Statement (XLSX Skill)
Use the xlsx skill to analyze the T-12 operating statement:
1. Extract monthly revenue by category (rent, parking, other income)
2. Extract monthly expenses by category
3. Calculate actual operating expense ratio
4. Identify any unusual or one-time expenses
5. Calculate actual vacancy rate
6. Summarize NOI trend over 12 monthsKey calculations:
- Physical occupancy % per month
- Economic occupancy (revenue / potential revenue)
- OpEx ratio (operating expenses / EGI)
- NOI per unit per month
- Year-over-year trends if multi-year data available
Red flags to identify:
- Declining occupancy trend
- Rising vacancy loss
- Increasing uncollected rent (bad debt)
- Unusual expense spikes
- Missing expense categories (e.g., no maintenance costs = deferred)
Step 3: Analyze Rent Roll (XLSX Skill)
Use the xlsx skill to analyze the current rent roll:
1. Extract: Unit #, unit type, square footage, current rent, move-in date, lease end date
2. Calculate weighted average rent by unit type
3. Identify lease expiration concentrations
4. Calculate average lease term remaining
5. Identify below-market and above-market unitsAnalysis outputs:
- Rent per square foot by unit type
- Occupancy by unit type
- Lease expiration schedule (next 24 months)
- Percentage expiring each quarter
- Roll-to-market opportunity ($)
Market comparison:
- Compare to market rents (from market study)
- Identify underperforming units
- Calculate potential rent growth
Step 4: Extract Market Data (PDF Skill)
Use the pdf skill to extract from market study and comps:
1. Submarket occupancy rates
2. Market rent ranges by unit type
3. Recent comparable sales ($/unit, cap rate)
4. New supply pipeline
5. Demographic and employment dataFocus areas:
- Competitive set definition
- Market rent comparisons
- Absorption trends
- Supply/demand balance
Step 5: Cross-Reference and Validate
Cross-reference data from all sources:
1. Does offering memo NOI match T-12 actual?
2. Does rent roll match offering memo occupancy claim?
3. Do in-place rents match market study ranges?
4. Are property taxes consistent across documents?
5. Do unit counts match across all sources?Common discrepancies:
- Offering memo uses "pro forma" vs. actual T-12
- Rent roll date differs from T-12 period end
- Different vacancy assumptions
- Different treatment of concessions
- Missing or inconsistent expense categories
Step 6: Perform Independent Analysis (CRE Skill)
Using the cre-investment-analysis skill, create independent analysis:
Property Inputs (validated from documents):
- Purchase price: [from offering memo]
- Current NOI: [from T-12, adjusted if needed]
- Occupancy: [from rent roll]
- In-place rents: [from rent roll]
- Operating expenses: [from T-12]
Market Inputs (from market study):
- Market rents by unit type
- Market vacancy rate
- New supply coming online
- Rent growth forecast
Assumptions:
- Renovation budget: $X/unit (if value-add)
- Stabilized occupancy: 95% (market rate minus buffer)
- Rent growth: 3% annually (validate against market)
- OpEx growth: 2.5% annually
- Exit cap rate: Entry cap + 25 bps
Analysis Required:
1. 10-year pro forma with monthly detail for Year 1
2. Base/downside/upside scenarios
3. Sensitivity analysis (exit cap vs. rent growth)
4. Levered and unlevered IRR
5. Risk assessment
6. Investment recommendationStep 7: Create Deliverables
Investment Memo (DOCX Skill):
Create a 10-15 page investment memorandum using docx skill:
1. Executive Summary (1-2 pages)
- Investment highlights
- Financial summary
- Recommendation
2. Property Description (2-3 pages)
- Location and access
- Physical characteristics
- Unit mix
- Condition assessment
3. Market Analysis (2-3 pages)
- Submarket overview
- Supply and demand
- Competitive positioning
- Market outlook
4. Financial Analysis (3-4 pages)
- Historical performance
- Pro forma assumptions
- Cash flow projections
- Return metrics
- Sensitivity analysis
5. Risk Assessment (1-2 pages)
- Key risks
- Mitigation strategies
6. Appendices
- Detailed rent roll
- T-12 summary
- Market compsFinancial Model (XLSX Skill):
Create Excel financial model using xlsx skill with STRICT professional standards:
⚠️ CRITICAL REQUIREMENTS - NON-NEGOTIABLE:
✓ Use FORMULAS for ALL calculations - NO hardcoded values except blue assumptions
✓ Color code: BLUE text = inputs | BLACK text = formulas | GREEN text = cross-sheet links
✓ All formulas MUST reference cells (e.g., =Assumptions!$B$5 * B10, NOT =27000000 * 0.05)
✓ Use absolute ($B$5) and relative (B5) references appropriately
✓ Deliver with ZERO formula errors (#REF!, #DIV/0!, #VALUE!, #N/A)
✓ Model must be DYNAMIC - changing any assumption recalculates entire model
Tabs Structure:
1. Summary - All key metrics on one page
2. Assumptions - ALL inputs in BLUE text (e.g., rent growth, cap rates, costs)
- Document sources for each assumption
- Use clear labels and units
3. Operating Pro Forma - 10-year projections
- Example: Year 2 Rent = ='Year 1 Rent' * (1 + Assumptions!$B$9)
- NOT: =1450000 * 1.03
4. Rent Roll - Unit-level detail
5. Capital Budget - Renovation/capex schedule
6. Sources & Uses - Transaction costs (all formulas)
7. Debt Schedule - Amortization using PMT function and cell references
8. Cash Flow - Before/after tax equity cash flows
9. Sensitivity - Two-way data tables (use Data → What-If Analysis)
10. Returns - IRR/NPV/multiples (all formulas)
Formatting Standards (per xlsx skill requirements):
- Currency: $#,##0 format, specify units in headers ("Revenue ($000s)")
- Percentages: 0.0% (one decimal)
- Zeros: Format to display as "-" not "0"
- Negative numbers: (123) not -123
- Years: Text format "2024" not number "2,024"
Formula Examples:
❌ WRONG: =27000000 * 0.7 * 0.06 / 12
✅ CORRECT: =Assumptions!$B$3 * Assumptions!$B$19 * Assumptions!$B$20 / 12
❌ WRONG: =850000 + 875500 + 901765
✅ CORRECT: =SUM(B5:D5) or individual cell references
❌ WRONG: =IF(A5="Year 3", 1500000, 0)
✅ CORRECT: =IF(A5="Year 1", Assumptions!$B$8, PreviousYear*(1+Assumptions!$B$9))
Quality Verification Tests:
1. Change purchase price from $27M to $30M → all calculations update? ✓
2. Change rent growth from 3% to 4% → all years adjust? ✓
3. Change exit cap from 5.75% to 6.0% → sale price and IRR recalculate? ✓
4. Change LTV from 70% to 65% → debt amount and payments adjust? ✓
5. All cells with BLACK text contain formulas (not numbers)? ✓
6. All cells with BLUE text are in Assumptions tab? ✓
7. Zero formula errors anywhere in workbook? ✓Investment Committee Presentation (PPTX Skill):
Create PowerPoint using pptx skill (15-20 slides):
1. Cover slide with property image
2. Executive summary
3. Investment highlights (bullets)
4. Property location map
5. Property photos
6. Market overview
7. Competitive set comparison
8. Financial summary
9. Operating pro forma
10. Capital budget
11. Returns summary
12. Sensitivity analysis
13. Risk factors
14. Recommendation
15. Appendix - detailed financials
Use professional template with consistent brandingWorkflow 2: Creating Professional Excel Financial Models
Scenario: Building institutional-quality financial models for CRE analysis
CRITICAL PRINCIPLES:
1. NO HARDCODING: Never hardcode values in formulas (except in dedicated Assumptions cells) 2. USE FORMULAS: Every calculation must be a formula with cell references 3. COLOR CODING: Follow industry standards strictly 4. CONSISTENCY: Same formula structure across all periods 5. DOCUMENTATION: Source all assumption inputs
Professional Excel Model Standards (xlsx Skill)
Color Coding Requirements:
- Blue text (RGB: 0,0,255): ALL assumption inputs that users will change
- Black text (RGB: 0,0,0): ALL formulas and calculations
- Green text (RGB: 0,128,0): References to other worksheets in same workbook
- Red text (RGB: 255,0,0): External links to other files (avoid if possible)
- Yellow background (RGB: 255,255,0): Key assumptions requiring attention
Number Formatting:
- Currency:
$#,##0(specify units in headers: "Revenue ($000s)") - Percentages:
0.0%(one decimal place) - Zeros: Format to display as
"-"instead of0 - Negative numbers: Use parentheses
(123)not minus-123 - Multiples:
0.0xfor valuation multiples
Formula Construction Rules:
❌ WRONG - Hardcoded values in formulas:
=850000 * 1.03 // BAD: Growth rate hardcoded
=B5 - 340000 // BAD: Expense amount hardcoded
=1650000 / 0.055 // BAD: Cap rate hardcoded✅ CORRECT - Cell references:
=B5 * (1 + $B$2) // GOOD: Reference to growth rate assumption
=B5 - Assumptions!B10 // GOOD: Reference to assumption on another sheet
=B20 / $Assumptions.$B$5 // GOOD: Reference to cap rate assumptionAbsolute vs. Relative References:
- Absolute ($B$5): Use for assumptions that don't change when copying formulas
- Relative (B5): Use for values that should adjust when copying across periods
- Mixed ($B5 or B$5): Use when only row or column should be absolute
Example:
Year 1: =B10 * (1 + $B$2) // B10 is relative (Year 1 value), $B$2 is absolute (growth assumption)
Year 2: =C10 * (1 + $B$2) // When copied, B10 becomes C10, but $B$2 stays the sameTab Organization for CRE Models
Standard Tab Structure:
1. Summary - One-page overview of all key metrics 2. Assumptions - All blue inputs in one place 3. Operating Pro Forma - Revenue and expense projections 4. Rent Roll - Unit-level detail (multifamily) 5. Lease Schedule - Tenant-level detail (office/retail/industrial) 6. Capital Budget - CapEx and renovation schedule 7. Sources & Uses - Acquisition/development costs 8. Debt Schedule - Loan amortization 9. Cash Flow - Equity cash flows (before/after tax) 10. Sensitivity - Return sensitivity to key variables 11. Returns - IRR, NPV, multiples calculations
Example: Building a Multifamily Acquisition Model
Step-by-Step Process:
Step 1: Create Assumptions Tab (xlsx skill)
Use the xlsx skill to create an Assumptions tab with the following structure:
PROPERTY ASSUMPTIONS (all in BLUE text):
- Purchase Price: $27,000,000
- Acquisition Costs %: 1.5%
- Number of Units: 180
- Current Occupancy %: 88%
- Market Occupancy %: 95%
REVENUE ASSUMPTIONS (all in BLUE text):
- Year 1 Average Rent/Unit/Month: $1,450
- Annual Rent Growth %: 3.0%
- Vacancy & Collection Loss %: 5.0%
- Other Income/Unit/Month: $50
OPERATING EXPENSE ASSUMPTIONS (all in BLUE text):
- Property Tax/Unit/Year: $1,200
- Insurance/Unit/Year: $450
- Utilities/Unit/Year: $600
- Repairs & Maintenance %: 10% of EGI
- Property Management %: 4% of EGI
- Administrative %: 2% of EGI
- Replacement Reserves/Unit/Year: $300
DEBT ASSUMPTIONS (all in BLUE text):
- LTV %: 70%
- Interest Rate %: 6.0%
- Amortization (years): 30
- IO Period (years): 5
EXIT ASSUMPTIONS (all in BLUE text):
- Hold Period (years): 7
- Exit Cap Rate %: 5.75%
- Selling Costs %: 3.0%
All cells above should be formatted with BLUE TEXT.
Include cell addresses (e.g., B5, B6) that will be referenced throughout the model.Step 2: Create Operating Pro Forma Tab (xlsx skill)
Create Operating Pro Forma tab with 10-year projections.
CRITICAL: Use FORMULAS for all calculations - NO HARDCODED values.
Column Headers: Year 0 (Current) | Year 1 | Year 2 | ... | Year 10
REVENUE SECTION (all BLACK text formulas):
Potential Rental Income:
Year 1: =Assumptions!$B$5 * Assumptions!$B$7 * Assumptions!$B$8 * 12
(Translates to: Units × Market Rent × Occupancy × 12 months)
Copy formula across years, adjusting for rent growth:
Year 2: =C5 * (1 + Assumptions!$B$9)
Other Income:
=Assumptions!$B$5 * Assumptions!$B$10 * 12
(Units × Other Income per Unit × 12 months)
Gross Potential Income:
=SUM(rental_income + other_income)
Vacancy & Collection Loss:
=-1 * GrossPotentialIncome * Assumptions!$B$11
Effective Gross Income:
=GrossPotentialIncome + VacancyLoss
OPERATING EXPENSES SECTION (all BLACK text formulas):
Property Taxes:
=Assumptions!$B$5 * Assumptions!$B$12
Insurance:
=Assumptions!$B$5 * Assumptions!$B$13
Utilities:
=Assumptions!$B$5 * Assumptions!$B$14
Repairs & Maintenance:
=EffectiveGrossIncome * Assumptions!$B$15
Property Management:
=EffectiveGrossIncome * Assumptions!$B$16
Administrative:
=EffectiveGrossIncome * Assumptions!$B$17
Total Operating Expenses:
=SUM(all expense line items)
NET OPERATING INCOME:
=EffectiveGrossIncome - TotalOperatingExpenses
(Format in BOLD)
Capital Reserves:
=-1 * Assumptions!$B$5 * Assumptions!$B$18
Cash Flow Available for Debt Service:
=NOI - CapitalReserves
ALL formulas should reference the Assumptions tab.
NO hardcoded values in any formula.
Copy formulas across all years (adjusting for growth where applicable).Step 3: Create Debt Schedule Tab (xlsx skill)
Create monthly amortization schedule:
Columns: Month | Beginning Balance | Payment | Interest | Principal | Ending Balance
Loan Amount (BLACK text):
=Assumptions!$B$3 * Assumptions!$B$19
(Purchase Price × LTV)
Monthly Interest Rate (BLACK text):
=Assumptions!$B$20 / 12
Number of Payments (BLACK text):
=Assumptions!$B$21 * 12
IO Period Months (BLACK text):
=Assumptions!$B$22 * 12
Monthly Payment Calculation:
IO Period: =Loan_Amount * Monthly_Rate
Amortizing Period: Use PMT function with remaining balance and periods
Formula for each month:
Beginning Balance: =Previous_Month_Ending_Balance
Interest: =Beginning_Balance * Monthly_Rate
Principal: =Payment - Interest (or 0 for IO period)
Ending Balance: =Beginning_Balance - Principal
ALL formulas - NO hardcoded values.Step 4: Create Cash Flow Tab (xlsx skill)
Structure:
Year | NOI | Debt Service | CF Before Tax | Cumulative Cash Flow
NOI (GREEN text - links to Operating Pro Forma):
='Operating Pro Forma'!B25
Annual Debt Service (BLACK text):
=SUM(Debt_Schedule!monthly_payments) for that year
Cash Flow Before Tax (BLACK text):
=NOI - Annual_Debt_Service
ALL values are formulas referencing other tabs.
NO hardcoded numbers.Step 5: Create Sensitivity Analysis Tab (xlsx skill)
Two-way sensitivity table for IRR:
Rows: Exit Cap Rate (vary from 5.0% to 6.5%)
Columns: Rent Growth (vary from 1% to 5%)
Use DATA TABLE function in Excel:
1. Set up input cells for Exit Cap and Rent Growth
2. Create table with row/column headers
3. Formula in upper-left: =Returns!$B$5 (reference to IRR calculation)
4. Select entire table → Data → What-If Analysis → Data Table
5. Row input cell: Point to Rent Growth assumption
6. Column input cell: Point to Exit Cap assumption
This creates dynamic sensitivity that recalculates with any assumption changes.Common Excel Model Errors to Avoid
Error 1: Hardcoded Values
❌ WRONG:
=1450 * 180 * 12 // Hardcoded rent and units
✅ CORRECT:
=Assumptions!$B$8 * Assumptions!$B$5 * 12 // Cell referencesError 2: Inconsistent Formulas
❌ WRONG:
Year 1: =B5 * 1.03
Year 2: =C5 * 1.03
Year 3: =D5 * 1.04 // Different growth rate!
✅ CORRECT:
All years: =PreviousYear * (1 + $Assumptions.$B$9)Error 3: Not Using Absolute References
❌ WRONG:
Copying this formula across: =B10 * B2 // B2 will become C2, D2, etc.
✅ CORRECT:
=B10 * $B$2 // $B$2 stays constant when copiedError 4: Hardcoded Conditional Logic
❌ WRONG:
=IF(A5="Year 1", 850000, IF(A5="Year 2", 875500, 0))
✅ CORRECT:
=IF(A5="Year 1", Assumptions!$B$8, PreviousYear*(1+Assumptions!$B$9))Error 5: Missing Cell References
❌ WRONG:
Expense Ratio = Total Expenses / EGI
Then typing "42%" in the cell
✅ CORRECT:
=TotalExpenses / EffectiveGrossIncome // Calculates automaticallyQuality Control Checklist
Before finalizing any Excel model:
Formula Verification:
- [ ] All assumption inputs are in BLUE text
- [ ] All formulas are in BLACK text
- [ ] All cross-sheet references are in GREEN text
- [ ] NO hardcoded values in formula cells
- [ ] All formulas use cell references to Assumptions tab
- [ ] Formulas are consistent when copied across periods
- [ ] No #REF!, #VALUE!, #DIV/0!, or #N/A errors
Calculation Checks:
- [ ] Total sources = Total uses
- [ ] Cash flow beginning + in - out = ending balance
- [ ] IRR calculation includes all cash flows (in/out/reversion)
- [ ] Debt balance at exit matches amortization schedule
- [ ] Expense ratios are reasonable (35-45% for multifamily)
- [ ] Returns are mathematically correct (spot check with calculator)
Formatting Checks:
- [ ] Currency formatted with appropriate decimals
- [ ] Percentages formatted to one decimal (0.0%)
- [ ] Zeros display as "-"
- [ ] Negative numbers use parentheses
- [ ] Headers clearly state units ($000s, $mm, etc.)
- [ ] Tabs are logically organized
- [ ] Summary tab fits on one page (for printing)
Documentation:
- [ ] All assumption sources are documented
- [ ] Model version and date are noted
- [ ] Author/preparer is identified
- [ ] Key limitations or disclaimers are stated
Example Prompt for Creating Excel Model
Using the xlsx skill, create a professional multifamily acquisition model:
Property: 180 units, $27M purchase price
Financing: 70% LTV, 6.0% rate, 30-year amort, 5-year IO
Hold Period: 7 years
Current Rent: $1,450/unit/month
Rent Growth: 3% annually
Exit Cap: 5.75%
Model Structure:
1. Summary tab (all key metrics on one page)
2. Assumptions tab (ALL inputs in BLUE text with cell addresses)
3. Operating Pro Forma (10-year, monthly for Year 1)
4. Debt Schedule (monthly amortization)
5. Cash Flow (annual equity cash flows)
6. Sensitivity Analysis (IRR vs Exit Cap and Rent Growth)
7. Returns tab (IRR, NPV, equity multiple calculations)
CRITICAL REQUIREMENTS:
- Use FORMULAS for all calculations - NO hardcoded values
- All assumptions must reference Assumptions tab cells
- Color code per professional standards (blue/black/green)
- Format currency, percentages, and zeros properly
- Ensure no formula errors
- Make model dynamic - changing assumptions should flow through entire model
Verify that changing any assumption (e.g., purchase price, rent growth)
automatically updates all dependent calculations throughout the model.Workflow 3: Office Property Lease Analysis
Input Documents:
- Abstract of leases (PDF)
- Historical operating statements (Excel)
- Lease expiration schedule (Excel)
Process:
Step 1: Extract Lease Data (PDF Skill)
Extract from lease abstracts:
- Tenant name and credit rating
- Leased square footage
- Base rent ($/SF/year)
- Lease commencement and expiration
- Escalation clauses (fixed % or CPI)
- Free rent periods
- TI allowance provided
- Renewal options and terms
- Percentage rent clauses (retail)
- Expense recovery method (NNN, modified gross, full service)Step 2: Build Lease Roll (XLSX Skill)
Create comprehensive lease roll in Excel:
- Tenant name
- SF leased
- Current rent $/SF
- Annual rent $
- % of total rent
- Lease start/end dates
- Years remaining
- Annual escalations
- Renewal options
- TI/LC at lease-up
Calculate:
- Weighted average lease term (WALT)
- Weighted average rent $/SF
- Expiration schedule by year
- Rollover risk (% expiring each year)Step 3: Analyze Lease-Up Assumptions (CRE Skill)
For upcoming expirations, analyze:
- Probability of renewal (by tenant type)
- Expected renewal rent (vs. current rent)
- Downtime between leases
- New TI/LC costs for renewal
- Leasing commissions (typically 4-6% of total rent)
- Time to re-lease if tenant vacates
Model cash flow impact:
- Lost rent during downtime
- TI and LC costs (capex)
- New rent vs. old rent (spread)
- Net cash impact over lease termWorkflow 3: Development Feasibility from Market Study
Input Documents:
- Market feasibility study (PDF or Word)
- Site plan (PDF)
- Preliminary budget (Excel)
Process:
Step 1: Extract Market Data (PDF/DOCX Skills)
From market study, extract:
- Market rent by unit type
- Market occupancy rates
- New supply pipeline (units and timing)
- Absorption rates
- Demographic trends
- Employment data
- Comparable rental properties
Synthesize into market assumptions:
- Stabilized rent assumptions
- Lease-up pace (units/month)
- Stabilized occupancy
- Operating expense ratioStep 2: Extract Development Budget (XLSX Skill)
From preliminary budget:
- Land cost
- Site work costs
- Building hard costs ($/SF)
- Parking costs ($/space)
- Soft costs (architecture, engineering, permits, etc.)
- Financing costs during construction
- Developer fee
- Contingency
Validate:
- Hard cost $/SF vs. market benchmarks
- Soft costs as % of hard costs (typically 12-18%)
- Contingency % (5-10%)Step 3: Development Pro Forma Analysis (CRE Skill)
Create complete development feasibility:
Construction Phase:
- Monthly draw schedule
- Interest carry during construction
- Total project costs
Lease-Up Phase:
- Unit absorption pace
- Free rent concessions
- Marketing costs
- Lease-up operating deficit
Stabilization:
- Stabilized NOI
- Stabilized value (NOI / cap rate)
- Yield on cost
- IRR from start to stabilization
- Return on total project costs
Risk Assessment:
- Construction cost overrun sensitivity
- Lease-up timing sensitivity
- Market rent sensitivity
- Exit cap rate sensitivityTroubleshooting Common Issues
Issue: PDF Text Extraction Errors
Problem: OCR produces garbled text or incorrect numbers
Solutions: 1. Check if PDF is searchable (try copying text manually) 2. If scanned, ensure high image quality 3. Extract tables separately from body text 4. Manually verify critical numbers (purchase price, NOI) 5. Request original editable files from seller
Issue: Excel Formula Errors
Problem: Imported spreadsheet has #REF!, #VALUE!, or #N/A errors
Solutions: 1. Use xlsx skill to identify broken links 2. Replace with hardcoded values if external links 3. Recalculate formulas after import 4. Document which cells were corrected 5. Validate outputs against source document totals
Issue: Inconsistent Data Across Documents
Problem: Offering memo shows different NOI than T-12
Solutions: 1. Identify which document is source of truth (usually T-12 for historical) 2. Document discrepancies in analysis 3. Use conservative assumption if material difference 4. Flag for due diligence investigation 5. Request reconciliation from seller
Issue: Missing Key Information
Problem: Documents don't include required data points
Solutions: 1. Make reasonable assumptions based on market standards 2. Clearly document all assumptions made 3. Perform sensitivity analysis on assumed values 4. Add to due diligence request list 5. Consider impact on deal risk
Issue: Protected or Encrypted PDFs
Problem: Cannot extract text from password-protected PDFs
Solutions: 1. Request password from document provider 2. Use pdf skill's decryption capabilities if password known 3. Request unprotected version 4. Manual data entry as last resort 5. Document any data entry performed manually
Best Practices
Data Extraction
1. Always verify extracted numbers by spot-checking against source 2. Document data sources for every number in your analysis 3. Flag estimated or assumed values clearly 4. Maintain audit trail of document versions used 5. Cross-reference multiple sources when available
Quality Control
1. Reconcile totals: Ensure line items sum correctly 2. Unit consistency: Verify $/SF vs. $/unit vs. total $ 3. Date verification: Confirm which period data represents 4. Calculation checks: Recalculate key ratios independently 5. Reasonability tests: Compare to market benchmarks
Documentation
1. List all source documents with dates and versions 2. Note any modifications made to extracted data 3. Explain assumptions when data is missing 4. Highlight discrepancies between sources 5. Provide reconciliation when numbers differ
Collaboration
1. Share extracted data with team for verification 2. Version control all documents and analyses 3. Clear file naming: Date_PropertyName_DocumentType 4. Organized folder structure: By property and document type 5. Regular backups: Don't lose work in progress
Example: Complete Due Diligence Package Analysis
Received Documents (typical acquisition data room):
- Offering memorandum (PDF)
- 3-year operating statements (Excel)
- Current and historical rent rolls (Excel)
- Lease abstracts for major tenants (PDF)
- Property tax bills (PDF)
- Insurance policies (PDF)
- Appraisal report (PDF)
- Phase I environmental report (PDF)
- Property condition assessment (PDF)
- Site survey (PDF)
- Title commitment (PDF)
Extraction and Analysis Workflow:
PHASE 1: FINANCIAL DOCUMENT REVIEW (xlsx & pdf skills)
1. Operating Statements
- Extract 3 years of monthly data
- Calculate trends: revenue growth, expense growth, NOI
- Identify seasonality patterns
- Flag any unusual items
2. Rent Rolls
- Build comprehensive lease database
- Track occupancy trends
- Identify rent growth by vintage
- Calculate roll-to-market potential
3. Lease Abstracts
- Extract major tenant terms
- Build expiration schedule
- Calculate renewal probability
- Estimate TI/LC on renewals
PHASE 2: VALIDATION (Cross-reference)
1. Verify offering memo claims vs. actual data
2. Reconcile appraisal value vs. asking price
3. Compare historical performance to pro forma
4. Check property tax amount vs. tax bills
5. Confirm insurance costs
PHASE 3: RISK ASSESSMENT (pdf skills)
1. Environmental Report
- Identify any recognized environmental conditions
- Assess remediation costs if any
- Flag ongoing monitoring requirements
2. Property Condition Assessment
- Extract immediate repairs needed
- Calculate 1-year capital needs
- Estimate 5-year capital needs
- Assess deferred maintenance
3. Title Report
- Identify any easements or encumbrances
- Check for title issues
- Verify legal description
PHASE 4: INDEPENDENT ANALYSIS (cre-investment-analysis skill)
Using all extracted and validated data:
1. Build independent financial model
2. Stress test key assumptions
3. Perform sensitivity analysis
4. Calculate risk-adjusted returns
5. Generate investment recommendation
PHASE 5: DELIVERABLES
Create complete underwriting package:
- Investment memorandum (docx)
- Financial model (xlsx)
- IC presentation (pptx)
- Due diligence summary (docx)
- Risk assessment matrix (xlsx)This comprehensive approach ensures all available data is properly extracted, validated, and incorporated into a thorough investment analysis.
Commercial Real Estate Market Data Sources
Primary Data Providers
CoStar Group
Website: costar.com
Coverage:
- Comprehensive property database (6M+ properties)
- Lease comps and tenant information
- Sale comps and transaction data
- Market analytics and trends
- Submarket reports and forecasts
Best For:
- Property-level research
- Comparable sales and leases
- Market supply and demand analysis
- Tenant credit analysis
- Competitive property identification
Subscription Cost: $1,500-3,000/month (varies by modules)
Key Modules:
- CoStar Property Professional
- CoStar Lease Comps
- CoStar Sale Comps
- CoStar Market Analytics
- CoStar Tenant
REIS (Moody's Analytics)
Website: reis.com
Coverage:
- Multifamily, office, retail, industrial, self-storage
- 300+ metropolitan markets
- Historical trends (35+ years)
- Forecasts (5-year outlook)
- Detailed submarket data
Best For:
- Market trend analysis
- Rent and occupancy forecasting
- Supply pipeline tracking
- Investment strategy research
- Academic research
Subscription Cost: $15,000-30,000/year
Deliverables:
- Quarterly market reports
- Excel data downloads
- Custom analytics
Real Capital Analytics (RCA)
Website: rcanalytics.com
Coverage:
- Transaction database ($2.5M+ properties)
- Pricing trends and cap rates
- Capital flows and investment activity
- Entity-level transaction tracking
- Cross-border investment
Best For:
- Cap rate analysis
- Investment trends
- Market liquidity assessment
- Buyer/seller profiling
- Portfolio transaction tracking
Subscription Cost: $20,000-50,000/year
Features:
- Transaction alerts
- Comparative analytics
- Custom reports
- API access (enterprise)
Yardi Matrix
Website: yardimatrix.com
Coverage:
- Multifamily and self-storage focus
- 20M+ units tracked
- Rent surveys and market trends
- Supply pipeline
- Property-level data
Best For:
- Multifamily market research
- Rent comp analysis
- Submarket identification
- Supply forecasting
- Portfolio benchmarking
Subscription Cost: $500-2,000/month
Reports:
- Monthly market bulletins
- Metro and submarket reports
- Asset-level analytics
Brokerage Research & Advisory
CBRE Research
Website: cbre.com/research
Content:
- Market reports (quarterly/annual)
- Investment outlook and forecasts
- Global market perspectives
- Economic analysis
- Sector-specific research
Access: Free (registration required)
Best For:
- Market trends and outlook
- Investment strategy insights
- Economic forecasting
- Global market comparison
JLL Research
Website: jll.com/research
Content:
- Market fundamentals
- Capital markets analysis
- Technology and innovation trends
- Sustainability research
- Economic drivers
Access: Free (registration required)
Best For:
- Market intelligence
- Forward-looking analysis
- Thematic research
- ESG trends
Cushman & Wakefield Research
Website: cushmanwakefield.com/research
Content:
- Market reports and forecasts
- Investment market analysis
- Occupier insights
- Data center and logistics trends
Access: Free (registration required)
Best For:
- Global market research
- Sector-specific analysis
- Investment trends
Colliers Research
Website: colliers.com/research
Content:
- Local market reports
- Investment perspectives
- Sector outlooks
Access: Free (registration required)
Marcus & Millichap Research
Website: marcusmillichap.com/research
Content:
- Market reports (multifamily, retail, office, industrial, specialty)
- Cap rate surveys
- Investment forecasts
Access: Free
Best For:
- Middle-market research
- Cap rate trends
- Investment outlook
REIT & Public Market Data
Green Street
Website: greenstreet.com
Coverage:
- REIT research and ratings
- NAV estimates
- Sector analysis
- Market outlooks
Subscription Cost: $30,000-80,000/year (institutional)
Best For:
- REIT investment analysis
- NAV valuation
- Sector comparisons
- Trading ideas
SNL Financial (S&P Global Market Intelligence)
Website: spglobal.com/marketintelligence
Coverage:
- Comprehensive REIT financials
- Public and private company data
- Transaction databases
- M&A analytics
Subscription Cost: $30,000-100,000/year
Best For:
- REIT financial analysis
- Comp set identification
- Historical trend analysis
- Custom screening
NAREIT
Website: reit.com
Content:
- REIT industry data
- Total return indices
- Market statistics
- Research reports
Access: Free and subscription tiers
Best For:
- Industry benchmarking
- Performance attribution
- Educational resources
- Industry standards (FFO definitions)
Government & Economic Data
U.S. Census Bureau
Website: census.gov
Data:
- Population and demographics
- Housing starts and permits
- Retail sales
- American Community Survey
Access: Free
Best For:
- Demographic analysis
- Population trends
- Housing supply data
- Economic indicators
Bureau of Labor Statistics (BLS)
Website: bls.gov
Data:
- Employment statistics
- Consumer Price Index (CPI)
- Producer Price Index (PPI)
- Wage data
Access: Free
Best For:
- Employment trends
- Inflation analysis
- Wage growth
- Economic indicators
Bureau of Economic Analysis (BEA)
Website: bea.gov
Data:
- GDP by metro area
- Personal income
- Regional economic accounts
Access: Free
Best For:
- Economic growth analysis
- Regional economic trends
- Income demographics
Federal Reserve Economic Data (FRED)
Website: fred.stlouisfed.org
Data:
- Interest rates
- Economic indicators
- Housing data
- Financial conditions
Access: Free
Best For:
- Macroeconomic analysis
- Interest rate trends
- Time series data
- Historical research
HUD/FHA
Website: hud.gov
Data:
- Multifamily market data
- Affordable housing programs
- Fair market rents
- Market analysis tools
Access: Free
Best For:
- Affordable housing research
- FHA financing parameters
- Fair market rent analysis
Specialized Data Sources
PwC Real Estate Investor Survey
Website: pwc.com/realestate
Content:
- Annual investor sentiment survey
- Emerging trends
- Capital allocation preferences
Access: Free
Best For:
- Investor sentiment
- Market outlook
- Investment strategy trends
Urban Land Institute (ULI)
Website: uli.org
Content:
- Emerging Trends in Real Estate (annual report)
- Market research
- Best practices
- Case studies
Access: Free and membership tiers
Best For:
- Industry trends
- Development insights
- Sustainability research
- Thought leadership
National Council of Real Estate Investment Fiduciaries (NCREIF)
Website: ncreif.org
Content:
- Property index (NPI)
- Performance benchmarks
- Research reports
- Transaction data
Access: Membership required
Best For:
- Performance attribution
- Institutional benchmarking
- Risk-adjusted returns
- Academic research
Real Estate Research Corporation (RERC)
Website: rerc.com
Content:
- Real Estate Report (quarterly)
- Cap rate surveys
- Discount rate surveys
- Investment criteria
Subscription Cost: $1,500-3,000/year
Best For:
- Investment criteria benchmarking
- Cap rate expectations
- Discount rate assumptions
Integra Realty Resources (IRR)
Website: irr.com
Content:
- Viewpoint (quarterly publication)
- Cap rate surveys
- Market trends
Access: Free
Best For:
- Cap rate trends
- Market perspectives
- Appraisal insights
Local & Regional Data
Local Economic Development Organizations
Examples:
- Chambers of Commerce
- Economic Development Corporations
- Convention & Visitors Bureaus
Content:
- Local employment data
- Major employers
- Development pipeline
- Demographic trends
Access: Free
Best For:
- Submarket analysis
- Local economic drivers
- Community insights
Local Apartment Associations
Examples:
- National Apartment Association (NAA) affiliates
- Local apartment owner associations
Content:
- Rent surveys
- Occupancy data
- Legislative updates
Access: Free or membership
Best For:
- Multifamily rent comps
- Local market conditions
- Regulatory environment
MLS Services
Examples:
- LoopNet
- Ten-X (formerly Auction.com)
- Crexi
- CommercialEdge
Content:
- Property listings
- Sale comparables
- Market activity
Access: Free (basic) to subscription
Best For:
- Available inventory
- Asking prices and rents
- Market activity levels
Academic & Research Institutions
MIT Center for Real Estate
Website: mitcre.mit.edu
Content:
- Research papers
- Market analysis
- Industry reports
Access: Free
University of San Diego Burnham-Moores Center
Website: sandiego.edu/business/burnham-moores-center
Content:
- Commercial real estate indices
- Research publications
Access: Free
Homer Hoyt Institute
Website: hoyt.org
Content:
- Research reports
- Industry analysis
- Educational resources
Access: Free and membership
Data Quality & Verification
Best Practices
1. Cross-reference multiple sources: Verify key data points across 2-3 providers 2. Understand methodologies: Different providers may define markets differently 3. Check vintage: Ensure data is current (check publication/update date) 4. Validate with local sources: Ground-truth against local brokers and property managers 5. Document assumptions: Note data sources in all models and reports
Common Discrepancies
- Market boundaries: Submarkets defined differently by providers
- Property classifications: Class A/B/C definitions vary
- Rental rates: Asking vs. effective rents
- Occupancy: Physical vs. economic occupancy
- Timing: Quarterly vs. monthly updates, lag times
Data Source Priority (by use case)
1. Transaction pricing: RCA > CoStar > local brokers 2. Rent comps: CoStar > Yardi Matrix > local surveys 3. Market trends: REIS > CBRE/JLL > local data 4. Forecasting: REIS > CBRE/JLL/Cushman > PwC survey 5. REIT analysis: Green Street > SNL > NAREIT 6. Demographics: Census > BLS > local economic development
REIT Analysis Framework
Overview
Real Estate Investment Trusts (REITs) are companies that own, operate, or finance income-producing real estate. REITs must distribute at least 90% of taxable income to shareholders as dividends, making them income-focused investments with unique valuation metrics.
Key REIT Metrics
Funds From Operations (FFO)
Definition: Net income + depreciation & amortization - gains on property sales
Formula:
FFO = Net Income
+ Depreciation & Amortization
+ Losses on Property Sales
- Gains on Property Sales
- Gains on Sale of Unconsolidated JVsPurpose: Better measure of REIT operating performance than net income (which is distorted by non-cash depreciation)
Industry Standard: NAREIT definition
Adjusted Funds From Operations (AFFO)
Definition: FFO adjusted for recurring capital expenditures and straight-line rent adjustments
Formula:
AFFO = FFO
- Recurring Capital Expenditures
- Straight-Line Rent Adjustments
+ Non-Cash Compensation (if added back)Purpose: Represents sustainable cash flow available for distribution
Alternative Names: Cash Available for Distribution (CAD), Funds Available for Distribution (FAD)
Net Operating Income (NOI)
Definition: Rental revenue - property operating expenses (excluding debt service, depreciation, capex)
Same-Store NOI Growth: NOI growth for properties owned in both comparison periods
- Most important operational metric
- Typically reported quarterly and annually
- Indicates organic growth and operational efficiency
Occupancy Metrics
- Economic Occupancy: Actual rent collected / potential rent if fully leased
- Physical Occupancy: % of space with signed leases
- Average Occupancy: Typically reported as weighted average across portfolio
Lease Metrics
- Weighted Average Lease Term (WALT): Average remaining lease term weighted by rental income
- Lease Renewal Rate: % of expiring leases that renew
- Lease Spreads: Difference between new/renewal rents and expiring rents
- Cash spread: Based on actual rent paid
- GAAP spread: Based on straight-line rent
Valuation Methods
1. FFO/AFFO Multiples
P/FFO Multiple:
Price per Share / FFO per ShareTypical Ranges:
- Residential REITs: 15-20x FFO
- Industrial/Logistics: 20-25x FFO
- Retail: 10-15x FFO
- Office: 10-18x FFO
- Data Centers: 20-30x FFO
P/AFFO Multiple:
Price per Share / AFFO per Share- Typically 1-3 multiple points higher than P/FFO
2. Dividend Yield Analysis
Dividend Yield:
Annual Dividend per Share / Current Stock PriceRelative Yield:
- Compare to 10-year Treasury yield
- Compare to REIT sector average
- Compare to company's historical yield
Payout Ratio:
Dividend per Share / AFFO per Share- Target range: 70-90%
- Higher ratio = less retained earnings for growth
- Lower ratio = potential for dividend growth
3. Net Asset Value (NAV)
Calculation:
NAV = (Total Property Value at Market Cap Rates
- Total Debt
- Preferred Equity) / Common Shares OutstandingNAV per Share vs. Stock Price:
- Premium to NAV: Stock overvalued or market expects strong growth
- Discount to NAV: Stock undervalued, liquidity concern, or execution risk
Cap Rate Estimation:
- Use market cap rates for each property type/market
- Adjust for property quality and location
- Compare to recent transaction cap rates
4. Discounted Cash Flow (DCF)
Approach: 1. Project AFFO for 5-10 years 2. Estimate terminal value using exit multiple or perpetuity growth 3. Discount at WACC
WACC Calculation:
WACC = (E/V × Cost of Equity) + (D/V × Cost of Debt × (1-Tax Rate))Cost of Equity: CAPM or implied from dividend discount model
Terminal Value:
Terminal Value = Final Year AFFO × Exit Multipleor
Terminal Value = Final Year AFFO × (1 + g) / (WACC - g)Financial Health Metrics
Leverage Ratios
Debt-to-EBITDA:
Total Debt / (NOI or EBITDA)- Target: <6.0x for investment grade
- Office/Retail: May run higher (7-8x)
- Residential/Industrial: Typically lower (4-6x)
Net Debt to EBITDA:
(Total Debt - Cash) / EBITDALoan-to-Value (LTV):
Total Debt / Gross Asset Value- Target: 30-50% for most REITs
- Higher LTV = higher financial risk
Debt-to-Equity:
Total Debt / Total EquityCoverage Ratios
Fixed Charge Coverage:
(EBITDA - Recurring CapEx) / (Interest + Preferred Dividends)- Target: >2.5x
Interest Coverage:
EBITDA / Interest Expense- Target: >3.0x
Dividend Coverage:
AFFO per Share / Dividend per Share- Target: >1.1x (90%+ payout is acceptable for stable REITs)
Liquidity Metrics
Unencumbered Asset Ratio:
Unencumbered Assets / Unsecured Debt- Important for unsecured debt issuers
- Target: >2.0x
Variable Rate Debt %:
- Target: <25% of total debt
- Higher exposure = higher interest rate risk
Growth Metrics
Internal Growth
Same-Store NOI Growth:
- Organic growth from existing portfolio
- Target: 2-4% annually (stable markets)
- Driven by: rent growth, occupancy gains, operating efficiencies
Rent Growth Components:
- Market rent growth
- Renewal spreads
- Lease escalators
Occupancy Improvement:
- Impact on NOI
- Watch for elevated capex during lease-up
External Growth
Development Pipeline:
- Yields on new projects (8-10% typical target)
- % of GAV in development (<10% is conservative)
- Pre-leasing %
Acquisition Activity:
- Cap rates on acquisitions vs. in-place cap rates
- Integration risk
- Market timing
Capital Recycling:
- Disposition proceeds
- Redeployment into higher-growth markets/assets
- Timing and execution
Sector-Specific Considerations
Apartment REITs
- Key metrics: Revenue per available room (RevPAR), occupancy, rent growth
- Watch: New supply, job growth, household formation
- Typical P/FFO: 15-20x
- Same-store NOI target: 3-5%
Industrial REITs
- Key metrics: Occupancy, lease renewals, rent spreads
- Watch: E-commerce penetration, supply chain trends
- Typical P/FFO: 20-25x
- Same-store NOI target: 4-7%
Office REITs
- Key metrics: Leasing spreads, WALT, tenant retention
- Watch: Return-to-office trends, quality (Class A vs B/C)
- Typical P/FFO: 10-18x
- Same-store NOI target: 1-3%
Retail REITs
- Key metrics: Sales per square foot, occupancy cost ratio
- Watch: E-commerce impact, retailer health
- Typical P/FFO: 10-15x
- Same-store NOI target: 1-3%
Healthcare REITs
- Key metrics: Occupancy, coverage ratios (tenant EBITDARM/rent)
- Watch: Regulatory changes, demographics, operator quality
- Typical P/FFO: 12-18x
- Same-store NOI target: 2-4%
Self-Storage REITs
- Key metrics: Occupancy, RevPAU (revenue per available unit)
- Watch: New supply, street rates vs. in-place rates
- Typical P/FFO: 18-23x
- Same-store NOI target: 3-6%
Data Center REITs
- Key metrics: Utilization, renewal rates, power capacity
- Watch: Cloud adoption, AI demand, power costs
- Typical P/FFO: 20-30x
- Same-store NOI target: 3-5%
Credit Analysis
Investment Grade Characteristics
- Debt/EBITDA: <6.0x
- Fixed charge coverage: >2.5x
- Unencumbered assets: >60% of total
- Interest coverage: >4.0x
- Diversified portfolio
- Strong management track record
High Yield Characteristics
- Debt/EBITDA: >7.0x
- Fixed charge coverage: <2.0x
- Higher leverage
- Concentration risk
- Development/redevelopment risk
Tax Efficiency
Dividend Classification
- Ordinary income: ~60-80% of REIT dividends (taxed at ordinary rates)
- Return of capital: ~10-30% (reduces cost basis)
- Capital gains: ~5-15% (taxed at capital gains rates)
Qualified REIT Dividends: 20% deduction under TCJA (through 2025)
- Effective top federal rate: 29.6% (37% × 80%)
Tax-Advantaged Accounts
- REITs are ideal for IRAs, 401(k)s due to high ordinary income component
- Minimize tax drag in taxable accounts
Comparative Analysis Framework
Peer Comparison Checklist
1. FFO/AFFO multiples vs. sector peers 2. Dividend yield vs. peers and historical average 3. Same-store NOI growth vs. peers 4. Leverage metrics vs. peers 5. Occupancy and operational metrics vs. peers 6. Management quality and track record 7. Portfolio quality (vintage, location, tenancy) 8. Balance sheet strength (debt maturities, access to capital)
Relative Value Indicators
- Cheap: P/FFO <15x, dividend yield >5%, trading at discount to NAV
- Fair Value: P/FFO 15-20x, dividend yield 3-5%, near NAV
- Expensive: P/FFO >20x, dividend yield <3%, premium to NAV
Investment Decision Framework
Buy Signals
- Trading at significant discount to NAV (>10%)
- P/FFO below historical average and peer group
- Dividend yield above historical average
- Strong same-store NOI growth trajectory
- Improving operational metrics (occupancy, spreads)
- Deleveraging balance sheet
- Accretive external growth pipeline
Sell Signals
- Trading at significant premium to NAV (>10%)
- P/FFO above historical average and peer group
- Dividend yield below historical average
- Declining same-store NOI growth
- Deteriorating operational metrics
- Increasing leverage
- Elevated development risk
Risk Factors to Monitor
- Overleveraged balance sheet
- Concentrated exposure (geography, tenant, property type)
- Aggressive development pipeline (>15% of GAV)
- Declining dividend coverage (<1.1x AFFO/dividend)
- Management turnover or governance issues
- Sector headwinds (e.g., retail disruption, office obsolescence)
Data Sources
- NAREIT: Industry standards, market data, research
- SNL Financial (S&P Global): Comprehensive REIT financials and analytics
- Green Street: REIT research, NAV estimates, market outlook
- Bloomberg: Real-time pricing, financial data, analytics
- Company Earnings Calls: Management guidance and commentary
- Investor Presentations: Portfolio composition, strategy updates
- 10-K/10-Q Filings: Detailed financial and operational data
Commercial Real Estate Underwriting Standards
Industry Benchmarks by Property Type
Multifamily
Revenue Assumptions
- Vacancy & Collection Loss: 5-7% of PGI (stabilized), 10-15% (lease-up)
- Rental Growth: CPI + 0-200 bps depending on market strength
- Concessions: 0-5% of EGI in competitive markets
- Bad debt: 0.5-1.0% of EGI
- Ancillary income: $50-200/unit/month (parking, pets, laundry, storage)
Operating Expenses
- Property taxes: 15-25% of EGI (varies significantly by jurisdiction)
- Insurance: 3-5% of EGI
- Utilities (if landlord-paid): 8-12% of EGI
- Repairs & maintenance: 8-12% of EGI or $800-1,200/unit annually
- Property management: 3-5% of EGI
- Payroll (on-site staff): $30,000-60,000 per 100 units
- Administrative: 2-3% of EGI
- Marketing: 1-2% of EGI
- Replacement reserves: $250-400/unit annually
Operating Expense Ratio
- Garden style: 35-42% of EGI
- Mid-rise: 38-45% of EGI
- High-rise: 42-50% of EGI
Return Metrics
- Core/stabilized: 8-12% IRR, 1.4-1.7x equity multiple
- Core-plus: 10-14% IRR, 1.5-2.0x equity multiple
- Value-add: 15-20% IRR, 1.8-2.5x equity multiple
- Development: 18-25% IRR, 2.0-3.0x equity multiple
Cap Rates (as of 2024-2025)
- Class A (major metros): 4.0-5.5%
- Class A (secondary markets): 5.0-6.5%
- Class B (major metros): 5.5-7.0%
- Class B (secondary markets): 6.5-8.0%
Leverage Parameters
- Core: 50-65% LTV, 1.25-1.40x DSCR
- Value-add: 60-75% LTV, 1.20-1.35x DSCR
- Development: 70-80% LTV (including mezzanine)
Office
Revenue Assumptions
- Vacancy: 10-15% of PGI (stabilized), varies by submarket
- Rental growth: Flat to CPI + 100 bps (market dependent)
- Lease terms: 5-10 years typical
- Free rent: 1-3 months per 5-year term
- TI allowance: $20-60/SF depending on condition and market
- Expense pass-throughs: Full-service gross, modified gross, or NNN
Operating Expenses
- Operating expense ratio: 40-55% of EGI
- Property taxes: 20-30% of EGI
- Insurance: 2-4% of EGI
- Utilities: 12-18% of EGI (if not separately metered)
- Repairs & maintenance: 8-12% of EGI
- Property management: 3-5% of EGI
- Replacement reserves: $0.50-1.00/SF annually
Return Metrics
- Core: 7-11% IRR
- Value-add: 12-18% IRR
- Repositioning: 15-22% IRR
Cap Rates
- CBD Class A: 4.5-6.5%
- Suburban Class A: 6.0-8.0%
- Class B/C: 7.5-10.0%
Leverage
- Core: 55-70% LTV
- Value-add: 60-75% LTV
Retail
Revenue Assumptions
- Vacancy: 5-10% of PGI (grocery-anchored), 10-20% (unanchored)
- Rental growth: Flat to CPI + 50 bps
- Lease terms: 5-20 years (longer for anchors)
- Percentage rent: 3-8% of sales above breakpoint (food service, apparel)
- CAM recoveries: Typically NNN structure
Operating Expenses
- Operating expense ratio: 25-40% of EGI (NNN properties)
- Property taxes: Passed through to tenants (NNN)
- CAM: $4-12/SF (maintenance, landscaping, parking, security)
- Management: 3-5% of EGI
- Replacement reserves: $0.25-0.75/SF annually
Return Metrics
- Grocery-anchored: 8-12% IRR
- Power center: 10-15% IRR
- Lifestyle/mixed-use: 12-18% IRR
Cap Rates
- Grocery-anchored: 6.0-8.0%
- Power center: 7.0-9.0%
- Unanchored: 7.5-10.0%
Leverage
- Stabilized: 60-70% LTV
- Value-add: 65-75% LTV
Industrial
Revenue Assumptions
- Vacancy: 3-8% of PGI (warehouse), 5-10% (flex)
- Rental growth: CPI + 50-200 bps (strong demand in logistics)
- Lease terms: 3-10 years
- Lease structure: Usually NNN or modified gross
- TI allowance: $0-10/SF (warehouse), $10-30/SF (flex/R&D)
Operating Expenses
- Operating expense ratio: 15-30% of EGI
- Property taxes: Passed through (NNN) or 10-20% of EGI
- Insurance: 1-3% of EGI
- Repairs & maintenance: 3-8% of EGI
- Management: 3-5% of EGI
- Replacement reserves: $0.15-0.40/SF annually
Return Metrics
- Core logistics: 7-11% IRR
- Value-add warehouse: 12-16% IRR
- Development: 15-25% IRR
Cap Rates
- Institutional warehouse: 4.5-6.5%
- Regional distribution: 5.5-7.5%
- Flex/R&D: 6.5-8.5%
Leverage
- Core: 60-70% LTV
- Value-add: 65-75% LTV
- Development: 70-80% LTV
Debt Parameters
Conventional Financing
Permanent Loans
- LTV: 55-75% (depends on property type and quality)
- DSCR: 1.20-1.40x minimum
- Term: 10-30 years
- Amortization: 25-30 years
- Interest rate: SOFR + 200-400 bps or fixed
- Recourse: Non-recourse with standard carveouts
- Prepayment: Defeasance, yield maintenance, or declining prepayment penalty
Bridge/Transitional Loans
- LTV: 65-80%
- DSCR: 1.10-1.30x (or cash flow sweep)
- Term: 1-3 years with extensions
- Interest rate: SOFR + 300-600 bps
- IO period: Full term typically
- Recourse: May be recourse or limited recourse
Construction Loans
- LTC: 60-75%
- Term: 12-36 months
- Interest rate: SOFR + 250-500 bps
- IO: Full term
- Recourse: Typically recourse during construction
Mezzanine Debt
- LTV: 75-85% (total with senior debt)
- Yield: 10-15%
- Term: Matches or subordinate to senior
- Recourse: Varies
Agency Financing (Multifamily)
Fannie Mae/Freddie Mac
- LTV: Up to 80% (standard), 85-90% (affordable)
- DSCR: 1.25x minimum
- Term: 5, 7, 10, 12 years
- Amortization: 30 years (typical)
- Rate: Fixed (treasury + 150-250 bps)
- Prepayment: Defeasance or yield maintenance
- Minimum loan: $1-5 million
- Maximum loan: No upper limit (delegated)
HUD/FHA
- LTV: Up to 87%
- DSCR: 1.15-1.20x
- Term: Up to 40 years
- Rate: Fixed
- Processing time: 6-12 months
- Primarily for affordable housing
Geographic Market Tiers
Tier 1/Gateway Markets
- New York, Los Angeles, San Francisco, Boston, Chicago, Washington DC, Seattle
- Characteristics: Liquid markets, institutional capital, lower cap rates, stable demand
- Typical cap rate compression: 50-150 bps below national average
Tier 2/Secondary Markets
- Austin, Denver, Nashville, Phoenix, Portland, Raleigh, Charlotte
- Characteristics: Strong growth, favorable demographics, moderate liquidity
- Typical cap rates: Near national average
Tier 3/Tertiary Markets
- Smaller metros, single-employer dominated
- Characteristics: Higher yields, lower liquidity, higher risk
- Typical cap rate premium: 100-200 bps above national average
Investment Strategy Classifications
Core
- Stabilized, class A properties in primary markets
- Occupancy: 90%+
- Lease terms: Long-term, credit tenants
- Target returns: 8-12% IRR
- Risk profile: Low
- Leverage: 50-65% LTV
Core-Plus
- High-quality properties with minor lease-up or repositioning
- Occupancy: 85-95%
- Target returns: 10-14% IRR
- Risk profile: Low-moderate
- Leverage: 55-70% LTV
Value-Add
- Properties requiring repositioning, renovation, or lease-up
- Occupancy: 60-85%
- Capital investment: 10-30% of purchase price
- Target returns: 15-20% IRR
- Risk profile: Moderate
- Leverage: 60-75% LTV
- Hold period: 3-7 years
Opportunistic
- Development, major redevelopment, or distressed properties
- Significant execution risk
- Target returns: 18-25%+ IRR
- Risk profile: High
- Leverage: Variable, 0-75% LTV
- Hold period: 3-10 years
Standard Hold Periods and Exit Strategies
- Core: 7-10+ years (often indefinite hold)
- Core-Plus: 5-7 years
- Value-Add: 3-5 years (typically exit upon stabilization)
- Opportunistic: 3-7 years (development) or 2-4 years (distressed)
Replacement Reserves by Property Type
- Multifamily: $250-400/unit/year
- Office: $0.50-1.00/SF/year
- Retail: $0.25-0.75/SF/year
- Industrial: $0.15-0.40/SF/year
Exit Cap Rate Assumptions
Conservative underwriting typically assumes:
- Exit cap rate = Entry cap rate + 25-50 bps
- Rationale: Accounts for cap rate expansion risk and property aging
Alternative approach:
- Use current market cap rate for similar vintage property
- Example: Acquiring 10-year-old property at 5.5% cap, exiting 7 years later as 17-year-old property at 6.0% cap
Tax Considerations
Depreciation
- Residential: 27.5 years
- Commercial: 39 years
- Land improvements: 15 years
- Personal property: 5-7 years (cost segregation)
Capital Gains
- Federal: 20% long-term (held >1 year) + 3.8% net investment income tax
- State: Varies by state (0-13.3%)
- 1031 Exchange: Defer capital gains by reinvesting in like-kind property
Opportunity Zones
- Defer capital gains until 12/31/2026
- Step-up in basis (10% after 5 years, 15% after 7 years)
- Eliminate capital gains on appreciation if held 10+ years
Data Sources for Market Research
- CoStar: Comprehensive commercial real estate database
- REIS: Market trends, forecasts, and comparables
- Real Capital Analytics (RCA): Transaction data
- CBRE, JLL, Cushman & Wakefield: Market reports and research
- Yardi Matrix: Multifamily market data and trends
- Green Street: REIT research and analysis
- NCREIF: Property index and benchmarking
- Urban Land Institute (ULI): Market trends and forecasts
- US Census Bureau: Demographics and economic data
- Bureau of Labor Statistics (BLS): Employment data
#!/usr/bin/env python3
"""
Discounted Cash Flow (DCF) Analysis for Commercial Real Estate
Calculates NPV, IRR, and related metrics for CRE investments
"""
import numpy as np
import numpy_financial as npf
from typing import List, Dict, Tuple, Optional
def calculate_noi(
effective_gross_income: float,
operating_expenses: float
) -> float:
"""Calculate Net Operating Income (NOI)"""
return effective_gross_income - operating_expenses
def calculate_dscr(
noi: float,
annual_debt_service: float
) -> float:
"""Calculate Debt Service Coverage Ratio (DSCR)"""
if annual_debt_service == 0:
return float('inf')
return noi / annual_debt_service
def calculate_cash_flow_before_tax(
noi: float,
debt_service: float,
capital_expenditures: float = 0
) -> float:
"""Calculate Cash Flow Before Tax"""
return noi - debt_service - capital_expenditures
def calculate_reversion_value(
final_noi: float,
exit_cap_rate: float,
selling_costs_pct: float = 0.03
) -> float:
"""
Calculate property reversion value at exit
Args:
final_noi: Projected NOI in terminal year
exit_cap_rate: Expected exit capitalization rate
selling_costs_pct: Selling costs as % of sale price (default 3%)
"""
gross_sale_price = final_noi / exit_cap_rate
selling_costs = gross_sale_price * selling_costs_pct
net_sale_proceeds = gross_sale_price - selling_costs
return net_sale_proceeds
def calculate_levered_irr(
initial_equity: float,
annual_cash_flows: List[float],
reversion_value: float,
loan_balance_at_exit: float
) -> float:
"""
Calculate levered (equity) IRR
Args:
initial_equity: Initial equity investment
annual_cash_flows: List of annual cash flows to equity
reversion_value: Net sale proceeds at exit
loan_balance_at_exit: Outstanding loan balance at sale
"""
equity_at_exit = reversion_value - loan_balance_at_exit
cash_flows = [-initial_equity] + annual_cash_flows + [equity_at_exit]
return npf.irr(cash_flows)
def calculate_unlevered_irr(
initial_investment: float,
annual_noi: List[float],
reversion_value: float
) -> float:
"""
Calculate unlevered IRR (property-level returns)
Args:
initial_investment: Total acquisition cost
annual_noi: List of annual NOI projections
reversion_value: Gross sale price at exit
"""
cash_flows = [-initial_investment] + annual_noi + [reversion_value]
return npf.irr(cash_flows)
def calculate_npv(
cash_flows: List[float],
discount_rate: float
) -> float:
"""Calculate Net Present Value"""
return npf.npv(discount_rate, cash_flows)
def calculate_equity_multiple(
total_cash_distributions: float,
initial_equity: float
) -> float:
"""Calculate total equity multiple"""
return total_cash_distributions / initial_equity
def calculate_cash_on_cash_return(
annual_cash_flow: float,
initial_equity: float
) -> float:
"""Calculate annual cash-on-cash return"""
return annual_cash_flow / initial_equity
def calculate_cap_rate(
noi: float,
purchase_price: float
) -> float:
"""Calculate capitalization rate"""
return noi / purchase_price
def amortization_schedule(
loan_amount: float,
annual_rate: float,
term_years: int,
io_period_years: int = 0
) -> List[Dict[str, float]]:
"""
Generate loan amortization schedule
Args:
loan_amount: Initial loan amount
annual_rate: Annual interest rate (e.g., 0.05 for 5%)
term_years: Loan term in years
io_period_years: Interest-only period in years
"""
monthly_rate = annual_rate / 12
total_months = term_years * 12
io_months = io_period_years * 12
schedule = []
balance = loan_amount
# Interest-only period
if io_months > 0:
monthly_payment = loan_amount * monthly_rate
for month in range(1, io_months + 1):
interest = balance * monthly_rate
schedule.append({
'month': month,
'payment': monthly_payment,
'principal': 0,
'interest': interest,
'balance': balance
})
# Amortizing period
amortizing_months = total_months - io_months
if amortizing_months > 0:
monthly_payment = npf.pmt(monthly_rate, amortizing_months, -balance)
for month in range(io_months + 1, total_months + 1):
interest = balance * monthly_rate
principal = monthly_payment - interest
balance -= principal
schedule.append({
'month': month,
'payment': monthly_payment,
'principal': principal,
'interest': interest,
'balance': max(0, balance)
})
return schedule
def project_operating_pro_forma(
year_1_gross_income: float,
year_1_vacancy_rate: float,
year_1_operating_expenses: float,
rent_growth_rate: float,
expense_growth_rate: float,
projection_years: int = 10
) -> List[Dict[str, float]]:
"""
Project operating pro forma for multiple years
Returns list of dicts with keys: year, pgi, vacancy, egi, opex, noi
"""
pro_forma = []
for year in range(1, projection_years + 1):
# Project income with growth
pgi = year_1_gross_income * ((1 + rent_growth_rate) ** (year - 1))
vacancy = pgi * (year_1_vacancy_rate + 0.002 * (year - 1)) # Slight vacancy increase over time
egi = pgi - vacancy
# Project expenses with growth
opex = year_1_operating_expenses * ((1 + expense_growth_rate) ** (year - 1))
# Calculate NOI
noi = egi - opex
pro_forma.append({
'year': year,
'pgi': pgi,
'vacancy': vacancy,
'egi': egi,
'opex': opex,
'noi': noi
})
return pro_forma
def sensitivity_analysis_2d(
base_case_inputs: Dict,
variable1: str,
variable1_range: List[float],
variable2: str,
variable2_range: List[float],
metric_function: callable
) -> np.ndarray:
"""
Perform 2-dimensional sensitivity analysis
Args:
base_case_inputs: Dict of base case input parameters
variable1: Name of first variable to vary
variable1_range: List of values for first variable
variable2: Name of second variable to vary
variable2_range: List of values for second variable
metric_function: Function that takes inputs dict and returns metric value
Returns:
2D numpy array of metric values
"""
results = np.zeros((len(variable1_range), len(variable2_range)))
for i, val1 in enumerate(variable1_range):
for j, val2 in enumerate(variable2_range):
inputs = base_case_inputs.copy()
inputs[variable1] = val1
inputs[variable2] = val2
results[i, j] = metric_function(inputs)
return results
# Example usage
if __name__ == "__main__":
# Example acquisition analysis
print("=== Commercial Real Estate DCF Example ===\n")
# Property parameters
purchase_price = 10_000_000
acquisition_costs = 300_000
total_investment = purchase_price + acquisition_costs
# Year 1 operating assumptions
year_1_gross_income = 850_000
vacancy_rate = 0.05
operating_expenses = 340_000
# Growth assumptions
rent_growth = 0.03
expense_growth = 0.025
# Financing
loan_amount = 7_000_000
equity = total_investment - loan_amount
interest_rate = 0.055
loan_term_years = 30
io_period = 5
# Exit assumptions
hold_period = 7
exit_cap_rate = 0.055
# Generate pro forma
pro_forma = project_operating_pro_forma(
year_1_gross_income,
vacancy_rate,
operating_expenses,
rent_growth,
expense_growth,
hold_period
)
print("Operating Pro Forma:")
print(f"{'Year':<6}{'PGI':>12}{'Vacancy':>12}{'EGI':>12}{'OpEx':>12}{'NOI':>12}")
print("-" * 66)
for year in pro_forma:
print(f"{year['year']:<6}{year['pgi']:>12,.0f}{year['vacancy']:>12,.0f}"
f"{year['egi']:>12,.0f}{year['opex']:>12,.0f}{year['noi']:>12,.0f}")
# Calculate debt service
amort = amortization_schedule(loan_amount, interest_rate, loan_term_years, io_period)
annual_debt_service = sum(amort[i]['payment'] for i in range(12))
print(f"\n\nDebt Service:")
print(f"Annual Debt Service: ${annual_debt_service:,.2f}")
print(f"Year 1 DSCR: {calculate_dscr(pro_forma[0]['noi'], annual_debt_service):.2f}x")
# Calculate cash flows
annual_cash_flows = []
for year in pro_forma[:-1]: # Exclude terminal year
cf = calculate_cash_flow_before_tax(year['noi'], annual_debt_service)
annual_cash_flows.append(cf)
# Calculate reversion
final_noi = pro_forma[-1]['noi']
reversion = calculate_reversion_value(final_noi, exit_cap_rate)
# Get loan balance at exit
loan_balance_at_exit = amort[hold_period * 12 - 1]['balance']
# Calculate returns
levered_irr = calculate_levered_irr(equity, annual_cash_flows, reversion, loan_balance_at_exit)
total_distributions = sum(annual_cash_flows) + (reversion - loan_balance_at_exit)
equity_multiple = calculate_equity_multiple(total_distributions, equity)
year_1_coc = calculate_cash_on_cash_return(annual_cash_flows[0], equity)
entry_cap = calculate_cap_rate(pro_forma[0]['noi'], purchase_price)
print(f"\n\nInvestment Returns:")
print(f"Levered IRR: {levered_irr * 100:.2f}%")
print(f"Equity Multiple: {equity_multiple:.2f}x")
print(f"Year 1 Cash-on-Cash: {year_1_coc * 100:.2f}%")
print(f"Entry Cap Rate: {entry_cap * 100:.2f}%")
print(f"Exit Cap Rate: {exit_cap_rate * 100:.2f}%")
print(f"Exit NOI: ${final_noi:,.0f}")
print(f"Gross Sale Price: ${reversion / 0.97:,.0f}")
print(f"Net Sale Proceeds: ${reversion:,.0f}")
#!/usr/bin/env python3
"""
Sensitivity and Scenario Analysis for Commercial Real Estate
Monte Carlo simulation and stress testing capabilities
"""
import numpy as np
import pandas as pd
from typing import Dict, List, Tuple, Callable
from scipy import stats
def two_way_sensitivity_table(
base_inputs: Dict,
var1_name: str,
var1_range: List[float],
var2_name: str,
var2_range: List[float],
metric_func: Callable,
format_pct: bool = True
) -> pd.DataFrame:
"""
Create a two-way sensitivity table (e.g., IRR sensitivity to exit cap and rent growth)
Args:
base_inputs: Dictionary of base case inputs
var1_name: Name of first variable (rows)
var1_range: List of values for first variable
var2_name: Name of second variable (columns)
var2_range: List of values for second variable
metric_func: Function that calculates metric from inputs dict
format_pct: Whether to format output as percentages
Returns:
Pandas DataFrame with sensitivity results
"""
results = []
for val1 in var1_range:
row = []
for val2 in var2_range:
inputs = base_inputs.copy()
inputs[var1_name] = val1
inputs[var2_name] = val2
metric_value = metric_func(inputs)
row.append(metric_value * 100 if format_pct else metric_value)
results.append(row)
# Create DataFrame
if format_pct:
col_labels = [f"{val*100:.1f}%" for val in var2_range]
row_labels = [f"{val*100:.1f}%" for val in var1_range]
else:
col_labels = [f"{val:.3f}" for val in var2_range]
row_labels = [f"{val:.3f}" for val in var1_range]
df = pd.DataFrame(results, index=row_labels, columns=col_labels)
df.index.name = var1_name
df.columns.name = var2_name
return df
def scenario_analysis(
scenarios: Dict[str, Dict],
metric_func: Callable,
metric_name: str = "IRR"
) -> pd.DataFrame:
"""
Perform scenario analysis (Base, Downside, Upside)
Args:
scenarios: Dict of scenario names to input dicts
metric_func: Function that calculates metric from inputs
metric_name: Name of the metric being calculated
Returns:
DataFrame with scenario results
"""
results = {}
for scenario_name, inputs in scenarios.items():
metric_value = metric_func(inputs)
results[scenario_name] = metric_value
df = pd.DataFrame.from_dict(results, orient='index', columns=[metric_name])
df.index.name = 'Scenario'
return df
def monte_carlo_simulation(
base_inputs: Dict,
variable_distributions: Dict[str, Tuple[str, tuple]],
metric_func: Callable,
n_simulations: int = 10000,
random_seed: int = 42
) -> Tuple[np.ndarray, Dict]:
"""
Run Monte Carlo simulation for risk analysis
Args:
base_inputs: Dictionary of base case inputs
variable_distributions: Dict mapping variable names to (distribution_type, parameters)
Example: {'rent_growth': ('normal', (0.03, 0.01)),
'exit_cap': ('uniform', (0.045, 0.065))}
metric_func: Function that calculates metric from inputs
n_simulations: Number of Monte Carlo iterations
random_seed: Random seed for reproducibility
Returns:
Tuple of (array of metric values, dict of statistics)
"""
np.random.seed(random_seed)
results = []
for _ in range(n_simulations):
inputs = base_inputs.copy()
# Sample from distributions
for var_name, (dist_type, params) in variable_distributions.items():
if dist_type == 'normal':
inputs[var_name] = np.random.normal(*params)
elif dist_type == 'uniform':
inputs[var_name] = np.random.uniform(*params)
elif dist_type == 'triangular':
inputs[var_name] = np.random.triangular(*params)
elif dist_type == 'lognormal':
inputs[var_name] = np.random.lognormal(*params)
# Calculate metric
metric_value = metric_func(inputs)
results.append(metric_value)
results = np.array(results)
# Calculate statistics
stats_dict = {
'mean': np.mean(results),
'median': np.median(results),
'std': np.std(results),
'min': np.min(results),
'max': np.max(results),
'p10': np.percentile(results, 10),
'p25': np.percentile(results, 25),
'p75': np.percentile(results, 75),
'p90': np.percentile(results, 90),
'prob_negative': np.mean(results < 0),
'prob_below_hurdle': lambda hurdle: np.mean(results < hurdle)
}
return results, stats_dict
def stress_test(
base_inputs: Dict,
stress_scenarios: Dict[str, Dict],
metric_func: Callable
) -> pd.DataFrame:
"""
Perform stress testing with extreme scenarios
Args:
base_inputs: Base case input parameters
stress_scenarios: Dict of stress scenario names to parameter changes
Example: {'Recession': {'rent_growth': -0.05, 'vacancy_rate': 0.15}}
metric_func: Function to calculate metric
Returns:
DataFrame with stress test results
"""
results = {'Base Case': metric_func(base_inputs)}
for scenario_name, changes in stress_scenarios.items():
stress_inputs = base_inputs.copy()
stress_inputs.update(changes)
results[scenario_name] = metric_func(stress_inputs)
df = pd.DataFrame.from_dict(results, orient='index', columns=['Metric'])
df.index.name = 'Scenario'
# Add % change from base
base_value = df.loc['Base Case', 'Metric']
df['Change from Base'] = (df['Metric'] - base_value) / base_value * 100
return df
def breakeven_analysis(
base_inputs: Dict,
variable_name: str,
target_metric_value: float,
metric_func: Callable,
search_range: Tuple[float, float] = None,
tolerance: float = 0.0001
) -> float:
"""
Find the breakeven value of a variable for a target metric
Args:
base_inputs: Base case inputs
variable_name: Name of variable to solve for
target_metric_value: Target value for the metric
metric_func: Function that calculates metric
search_range: (min, max) range to search
tolerance: Convergence tolerance
Returns:
Breakeven value of the variable
"""
def objective(x):
inputs = base_inputs.copy()
inputs[variable_name] = x
return metric_func(inputs) - target_metric_value
if search_range is None:
search_range = (0, 1)
from scipy.optimize import brentq
try:
breakeven_value = brentq(objective, *search_range, xtol=tolerance)
return breakeven_value
except ValueError:
return None
def tornado_chart_data(
base_inputs: Dict,
variables_to_test: Dict[str, Tuple[float, float]],
metric_func: Callable
) -> pd.DataFrame:
"""
Generate data for tornado chart (sensitivity ranking)
Args:
base_inputs: Base case inputs
variables_to_test: Dict of variable names to (low_value, high_value) tuples
metric_func: Function to calculate metric
Returns:
DataFrame sorted by impact magnitude
"""
base_metric = metric_func(base_inputs)
impacts = []
for var_name, (low_val, high_val) in variables_to_test.items():
# Calculate low scenario
low_inputs = base_inputs.copy()
low_inputs[var_name] = low_val
low_metric = metric_func(low_inputs)
# Calculate high scenario
high_inputs = base_inputs.copy()
high_inputs[var_name] = high_val
high_metric = metric_func(high_inputs)
# Calculate impacts
low_impact = low_metric - base_metric
high_impact = high_metric - base_metric
total_swing = abs(high_impact - low_impact)
impacts.append({
'Variable': var_name,
'Base': base_metric,
'Low Value': low_val,
'Low Metric': low_metric,
'Low Impact': low_impact,
'High Value': high_val,
'High Metric': high_metric,
'High Impact': high_impact,
'Total Swing': total_swing
})
df = pd.DataFrame(impacts)
df = df.sort_values('Total Swing', ascending=False)
return df
# Example usage
if __name__ == "__main__":
print("=== CRE Sensitivity Analysis Example ===\n")
# Define a simple metric function for demonstration
def simple_irr_calc(inputs):
"""Simplified IRR calculation for demonstration"""
noi = inputs['year_1_noi']
growth = inputs['rent_growth']
exit_cap = inputs['exit_cap']
hold = inputs['hold_period']
# Project NOI
terminal_noi = noi * ((1 + growth) ** hold)
exit_value = terminal_noi / exit_cap
# Simplified IRR estimate
purchase_price = inputs['purchase_price']
total_return = (exit_value - purchase_price) / purchase_price
annualized_return = (1 + total_return) ** (1/hold) - 1
return annualized_return
# Base case inputs
base_case = {
'purchase_price': 10_000_000,
'year_1_noi': 550_000,
'rent_growth': 0.03,
'exit_cap': 0.055,
'hold_period': 7
}
# Two-way sensitivity: IRR vs Exit Cap and Rent Growth
print("1. Two-Way Sensitivity Table (IRR vs Exit Cap & Rent Growth)")
rent_growth_range = [0.01, 0.02, 0.03, 0.04, 0.05]
exit_cap_range = [0.045, 0.050, 0.055, 0.060, 0.065]
sensitivity_table = two_way_sensitivity_table(
base_case,
'rent_growth',
rent_growth_range,
'exit_cap',
exit_cap_range,
simple_irr_calc
)
print(sensitivity_table)
# Scenario analysis
print("\n\n2. Scenario Analysis")
scenarios = {
'Downside': {**base_case, 'rent_growth': 0.01, 'exit_cap': 0.065},
'Base': base_case,
'Upside': {**base_case, 'rent_growth': 0.05, 'exit_cap': 0.045}
}
scenario_results = scenario_analysis(scenarios, simple_irr_calc, 'IRR')
print(scenario_results * 100) # Convert to percentage
# Tornado chart
print("\n\n3. Tornado Chart Data (Impact Ranking)")
variables = {
'rent_growth': (0.01, 0.05),
'exit_cap': (0.045, 0.065),
'year_1_noi': (500_000, 600_000)
}
tornado_data = tornado_chart_data(base_case, variables, simple_irr_calc)
print(tornado_data[['Variable', 'Total Swing']].to_string(index=False))