# Corporate Home Ownership Analysis Tools

Tools and instructions for analyzing corporate and private equity ownership of single-family homes in Portland, Oregon.

**Prepared for:** Welcome Home Coalition
**Author:** Nikki Ricks
**Date:** November 20, 2025

## Quick Start Guide

### Step 1: Download Property Data

You have two main options for obtaining Portland property ownership data:

#### Option A: PortlandMaps Advanced Search (Recommended - Free)

1. Go to [PortlandMaps Advanced Search](https://www.portlandmaps.com/advanced/?action=assessor)
2. Enter search criteria (you can use `%` as a wildcard to get all records):
   - **City:** Portland
   - **Property Classification:** Look for single-family residential options
3. Click "Search"
4. Once results load, click the **CSV** button to download
5. Save the file as `portland_properties.csv`

**Note:** Large downloads may take a while. The export will include owner names, addresses, property classifications, and assessment data.

#### Option B: Multnomah County RLIS Data (Requires Paid License)

The Metro RLIS dataset includes comprehensive taxlot data with full ownership information, but requires a paid license:

- **Cost:** One-time data access fee (contact [drc@oregonmetro.gov](mailto:drc@oregonmetro.gov) for pricing)
- **Dataset:** RLIS Bulk Download with Taxlot Ownership
- **URL:** [https://rlisdiscovery.oregonmetro.gov/](https://rlisdiscovery.oregonmetro.gov/)
- **Best for:** Comprehensive analysis with complete ownership records and GIS capabilities

### Step 2: Install Python Dependencies

```bash
cd scripts
pip install pandas
```

### Step 3: Run the Analysis

```bash
python analyze_corporate_ownership.py ../data/portland_properties.csv
```

### Step 4: Review Results

The script will generate three output files:

1. **`portland_corporate_ownership_full_data.csv`**
   - Complete dataset with corporate ownership flags
   - Includes: is_corporate, entity_type, properties_owned, investor_category
   - Use for further analysis or filtering

2. **`portland_corporate_ownership_top_owners.csv`**
   - Top 50 corporate property owners
   - Sorted by number of properties owned
   - Includes entity classification

3. **`portland_corporate_ownership_summary.txt`**
   - Summary statistics
   - Key findings at a glance
   - Entity type breakdown

## What the Analysis Does

### 1. Identifies Corporate Owners

The script scans owner names for corporate identifiers:

- **LLC/Limited Liability Companies:** "LLC", "L.L.C.", "Limited Liability Company"
- **Corporations:** "Inc.", "Corp.", "Corporation", "Co."
- **Trusts:** "Trust", "Trustee", "Trustees"
- **Investment Entities:** "Properties", "Investments", "Capital", "Partners", "Ventures", "Holdings", "Real Estate"
- **Limited Partnerships:** "LP", "L.P.", "LLP", "L.L.P."

### 2. Aggregates Properties by Owner

Counts how many properties each entity owns across Portland to identify large-scale investors.

### 3. Categorizes Investor Size

- **Single Property Owner:** 1 property
- **Small Investor:** 2-10 properties
- **Mid-Size Investor:** 11-50 properties
- **Large Investor:** 51-100 properties
- **Institutional Investor:** 100+ properties (likely private equity)

### 4. Calculates Key Metrics

- Total single-family homes in Portland
- Number and percentage of corporate-owned homes
- Number of institutional investors (100+ properties)
- Entity type distribution (LLC vs. Corp vs. Trust, etc.)
- Top corporate owners by property count

## Expected Output Example

```
================================================================================
KEY FINDINGS
================================================================================

Total Single-Family Homes in Portland: 142,456
Corporate/Institutional Owned: 28,491 (20.0%)
Institutional Investors (100+ properties): 23
Properties owned by institutional investors: 12,847

CORPORATE ENTITY TYPE BREAKDOWN:
--------------------------------------------------------------------------------
  LLC: 18,423 properties (64.7%)
  Corporation: 5,892 properties (20.7%)
  Trust: 2,341 properties (8.2%)
  Investment Entity: 1,835 properties (6.4%)

TOP 20 CORPORATE OWNERS:
--------------------------------------------------------------------------------
                                          Properties  Entity Type       Investor Category
NAME                                           Owned
Portland Real Estate Holdings LLC                347  LLC            Institutional Investor
Cascade Investment Properties Inc                289  Corporation    Institutional Investor
Metro Property Group LLC                         234  LLC            Institutional Investor
...
```

## Data Limitations

### Important Notes

1. **Corporate Identification is Pattern-Based**
   - Some corporate owners may use individual names or non-obvious structures
   - The analysis may undercount actual corporate ownership
   - Manual validation of top owners is recommended

2. **Trust Structures**
   - Properties in trusts may hide the ultimate beneficial owner
   - Some individuals use trusts for estate planning (not corporate ownership)
   - Consider manually reviewing trust entities

3. **Data Freshness**
   - Multnomah County pauses data sharing annually (late summer/fall)
   - Property records may lag behind recent sales
   - Check the data download date

4. **Single-Family Classification**
   - Property classification codes vary by jurisdiction
   - The script uses common patterns but may need customization
   - Review PROPCLASS values in your dataset and adjust `is_single_family_residential()` function if needed

## Customization

### Adjusting Corporate Patterns

Edit `CORPORATE_PATTERNS` in `analyze_corporate_ownership.py`:

```python
CORPORATE_PATTERNS = {
    'LLC': r'\b(LLC|L\.L\.C\.|Limited Liability Company)\b',
    # Add your own patterns here
    'Custom Pattern': r'\bYOUR_REGEX_HERE\b',
}
```

### Changing Property Classification Logic

Modify `is_single_family_residential()` function to match your dataset's classification codes:

```python
def is_single_family_residential(prop_class: str) -> bool:
    # Add property codes specific to your data source
    sf_patterns = [
        'SINGLE FAMILY',
        r'^\s*111\s*$',  # Assessment code
        # Add more patterns as needed
    ]
    ...
```

### Adjusting Investor Size Thresholds

Edit `categorize_investor_size()` to change property count thresholds:

```python
def categorize_investor_size(property_count: int) -> str:
    if property_count == 1:
        return 'Single Property Owner'
    elif property_count <= 10:  # Adjust this threshold
        return 'Small Investor (2-10 properties)'
    ...
```

## Next Steps for Welcome Home Coalition

1. **Download the Data**
   - Use PortlandMaps Advanced Search for free access
   - Consider RLIS license for comprehensive analysis

2. **Run Initial Analysis**
   - Use the Python script to identify corporate owners
   - Review top 20-50 owners manually

3. **Validate Key Findings**
   - Cross-reference top owners with Oregon Secretary of State Business Registry
   - Research parent companies of large LLCs
   - Identify connections to known private equity firms

4. **Create Visualizations**
   - Map corporate ownership by neighborhood (use GIS software like QGIS)
   - Chart ownership concentration over time (if historical data available)
   - Visualize top institutional investors

5. **Document and Share**
   - Present findings to Welcome Home Coalition team
   - Prepare fact sheets for media and advocacy
   - Update analysis quarterly or annually

## Support

For questions about this analysis or to build a custom automated system:

**Nikki Ricks**
Civic Tech Consultant
📧 nrcivics@proton.me
🔗 [nikkiricks.dev/civics](https://nikkiricks.dev/civics)
📅 [Schedule a consultation](https://calendly.com/nikki-ricks/15-min-consult)

## License

This script is provided free of charge for use by Welcome Home Coalition and other housing justice organizations. Feel free to adapt and share.
