Skip to main content

Profiles

Profiles allow you to save and reuse different sets of investment parameters. This is useful for:

  • Different property markets (Paris vs provinces)
  • Different risk tolerances (conservative vs optimistic)
  • Different loan scenarios (varying interest rates)

Profile Location

Profiles are stored as YAML files in:

~/.config/mortgage-cli/profiles/

On macOS/Linux, this expands to /Users/yourname/.config/mortgage-cli/profiles/.

Default Profile

The built-in default profile contains typical French rental investment parameters:

name: default
description: Default French rental investment profile

mortgage:
interest_rate: 0.04 # 4.0% annual interest
insurance_rate: 0.004 # 0.4% mortgage insurance
duration_years: 20 # 20-year term
default_down_payment: 0.2 # 20% down payment

budget:
total_available: 50000 # €50,000 available capital
target_rent: 1000 # €1,000/month target rent

monthly_costs:
property_tax: 100 # €100/month property tax
insurance: 30 # €30/month building insurance
maintenance: 50 # €50/month maintenance reserve
management: 0 # €0/month (self-managed)

purchase_costs:
notary_legal:
type: percentage
value: 0.015 # 1.5% of purchase price
bank_arrangement:
type: percentage
value: 0.01 # 1.0% of purchase price
survey_valuation:
type: fixed
value: 750 # €750 flat fee
mortgage_broker:
type: fixed
value: 0
other:
type: fixed
value: 0

thresholds:
green_below: 0.9 # Green if break-even < 90% of target
yellow_below: 1.0 # Yellow if break-even < 100% of target

Creating a Profile

Using the CLI

mortgage-cli profile create myprofile --description "My custom profile" --base default

This creates a copy of the default profile that you can customize.

Manual Creation

Create a new YAML file in the profiles directory:

touch ~/.config/mortgage-cli/profiles/myprofile.yaml

Then edit it with your preferred settings.

Editing a Profile

Open the profile in your text editor:

# Using nano
nano ~/.config/mortgage-cli/profiles/myprofile.yaml

# Using VS Code
code ~/.config/mortgage-cli/profiles/myprofile.yaml

Common Customizations

Higher Interest Rate (Conservative)

mortgage:
interest_rate: 0.05 # 5.0% instead of 4.0%

Higher Monthly Costs

monthly_costs:
property_tax: 150 # Higher property tax
insurance: 50 # Higher insurance
maintenance: 100 # Larger maintenance reserve
management: 80 # Professional management (8% of rent)

Different Thresholds

thresholds:
green_below: 0.85 # More conservative: green only if < 85%
yellow_below: 0.95 # Yellow up to 95%

Paris Market Profile

name: paris
description: Paris property market parameters

mortgage:
interest_rate: 0.04
insurance_rate: 0.004
duration_years: 25 # Longer term for expensive properties
default_down_payment: 0.25 # Higher down payment typical

budget:
total_available: 100000 # More capital needed
target_rent: 1500 # Higher rents in Paris

monthly_costs:
property_tax: 80 # Lower per sqm in Paris
insurance: 40
maintenance: 100 # Older buildings need more
management: 120 # Professional management common

Using Profiles

Specify Profile in Commands

# Use a specific profile
mortgage-cli analyze --price 200000 --rent 1200 --profile paris

# Use default profile (implicit)
mortgage-cli analyze --price 150000 --rent 900

Compare Profiles

mortgage-cli profile compare --price 150000 --rent 900 --profiles default,conservative,paris

Profile Schema Reference

mortgage

FieldTypeDescription
interest_ratefloatAnnual interest rate (0.04 = 4%)
insurance_ratefloatAnnual mortgage insurance rate
duration_yearsintLoan term in years
default_down_paymentfloatDefault down payment percentage

budget

FieldTypeDescription
total_availablefloatTotal available capital (€)
target_rentfloatTarget monthly rent (€)

monthly_costs

FieldTypeDescription
property_taxfloatMonthly property tax (€)
insurancefloatMonthly building insurance (€)
maintenancefloatMonthly maintenance reserve (€)
managementfloatMonthly management fees (€)

purchase_costs

Each cost can be percentage or fixed:

# Percentage of purchase price
notary_legal:
type: percentage
value: 0.015 # 1.5%

# Fixed amount
survey_valuation:
type: fixed
value: 750 # €750
FieldDescription
notary_legalNotary and legal fees
bank_arrangementBank/mortgage setup fees
survey_valuationProperty survey/valuation
mortgage_brokerBroker fees (if applicable)
otherAny other purchase costs

thresholds

FieldTypeDescription
green_belowfloatVerdict is GREEN if break-even < this × target
yellow_belowfloatVerdict is YELLOW if break-even < this × target