Skip to content
JAOT

Real Estate Investment

Overview

Real estate investment optimization helps property investors and developers select the best portfolio of properties from a set of candidates, balancing expected returns against budget, risk, and diversification constraints. Whether you are evaluating apartment buildings, commercial offices, or development sites, the optimizer finds the combination that maximizes your risk-adjusted return on investment.

Real estate decisions involve large capital commitments with long time horizons, making it critical to evaluate all options systematically rather than relying on piecemeal analysis.

When to Use This

Best for: Real estate investors, REITs, and development firms who need to select properties from a pool of candidates while balancing budget, location diversity, risk, and return targets.

  • Scenario: You have a fixed investment budget and a pipeline of 10-50 potential properties, and need to decide which combination to acquire to maximize portfolio returns while maintaining geographic and property-type diversification
  • Industry: Real estate investment trusts (REITs), property development, pension fund real estate, corporate real estate, urban planning
  • ROI: Typical improvement of 1-3% in portfolio yield through better diversification and systematic property selection

Step-by-Step Walkthrough

1. Define candidate properties

List each potential investment with its acquisition cost, expected annual yield (rental income / cost), risk rating, location, and property type (residential, office, retail, industrial).

2. Set budget and financing constraints

Define your total investment budget, maximum leverage ratio, and any financing restrictions. Include transaction costs and capital improvement requirements in each property's total cost.

3. Add diversification rules

Specify portfolio constraints:

  • Maximum allocation to any single market or city
  • Minimum number of property types in the portfolio
  • Maximum concentration in any single property
  • Geographic spread requirements

4. Set the objective

Typically maximize expected annual yield or maximize total portfolio value subject to budget and diversification constraints.

Real Estate Investment in JAOT Builder

5. Review the recommended portfolio

The solver identifies which properties to acquire. Compare the optimized portfolio against your team's shortlist. Adjust constraints (e.g., require at least one property in a target market) and re-run to explore alternatives.

Example Parameters

import httpx

API_URL = "https://api.jaot.io/api/v2"
headers = {"Authorization": "Bearer ok_live_your_key_here"}

# Select from 7 properties with a $10M budget
response = httpx.post(f"{API_URL}/solve", headers=headers, json={
    "variables": [
        {"name": "downtown_office", "type": "binary"},
        {"name": "suburban_apartments", "type": "binary"},
        {"name": "retail_plaza", "type": "binary"},
        {"name": "industrial_warehouse", "type": "binary"},
        {"name": "mixed_use_tower", "type": "binary"},
        {"name": "student_housing", "type": "binary"},
        {"name": "medical_office", "type": "binary"},
    ],
    "objective": {
        "sense": "maximize",
        "coefficients": {
            "downtown_office": 180000,
            "suburban_apartments": 155000,
            "retail_plaza": 120000,
            "industrial_warehouse": 95000,
            "mixed_use_tower": 250000,
            "student_housing": 110000,
            "medical_office": 140000,
        },
    },
    "constraints": [
        {
            "name": "total_budget",
            "coefficients": {
                "downtown_office": 2800000, "suburban_apartments": 2200000,
                "retail_plaza": 1500000, "industrial_warehouse": 900000,
                "mixed_use_tower": 4500000, "student_housing": 1800000,
                "medical_office": 2100000
            },
            "sense": "<=",
            "rhs": 10000000,
        },
        {
            "name": "max_office_exposure",
            "coefficients": {"downtown_office": 1, "medical_office": 1},
            "sense": "<=",
            "rhs": 1,
        },
        {
            "name": "min_properties",
            "coefficients": {
                "downtown_office": 1, "suburban_apartments": 1,
                "retail_plaza": 1, "industrial_warehouse": 1,
                "mixed_use_tower": 1, "student_housing": 1,
                "medical_office": 1
            },
            "sense": ">=",
            "rhs": 3,
        },
    ],
})
result = response.json()

print(f"Maximum annual yield: ${result['objective_value']:,.0f}")
for var in result["variables"]:
    if var["value"] > 0.5:
        print(f"  Acquire: {var['name']}")

Templates

Next Steps