GTA House Market Analysis

I want to write Agentic flow (GenAI) to analyse the House market in Canada and predict when it would hit the rock bottom in pricing. It will help me to buy a house that time. Give me design steps

Below is a practical, engineering-first design for an agentic GenAI system that analyzes the Canadian housing market and estimates when prices may hit a local or cyclical bottom. I’ll keep this non-hype, system-driven, and decision-oriented—not “LLM predicts prices,” but LLM coordinates evidence + signals + uncertainty.


0. First Principles (Very Important)

Before design:

  • No model can predict an absolute “rock bottom.”

  • What is possible:

    • Detect regime shifts

    • Identify probabilistic price floors

    • Signal high-confidence buying windows

  • Treat this as a decision-support system, not a forecaster oracle.

Your system should output:

“Based on X signals, probability of further downside is Y%. Optimal buying window likely between T₁–T₂.”


1. High-Level Agentic Architecture

Think in layers, not agents randomly talking.

Each agent has:

  • Clear input

  • Clear output

  • Deterministic contract


2. Data Ingestion Layer (Non-Negotiable)

2.1 Core Data Sources (Canada-specific)

You need at least 10–15 years of history.

Macro

  • Bank of Canada interest rate

  • Mortgage rates (5-year fixed, variable)

  • CPI, core inflation

  • Unemployment rate

  • Immigration inflow (monthly/quarterly)

  • GDP growth

Housing Market

  • MLS benchmark price (by city)

  • HPI (Teranet–National Bank)

  • Sales volume

  • New listings

  • Months of inventory

  • Price-to-income ratio

  • Price-to-rent ratio

Liquidity & Stress

  • Mortgage delinquency rate

  • Household debt-to-income

  • Construction starts & completions

💡 Design rule: Raw data must be time-aligned and normalized before LLM sees it.


3. Signal Extraction Agents (Deterministic)

Each agent extracts one class of signal, no reasoning yet.

3.1 Interest Rate Regime Agent

Inputs

  • Policy rate

  • Mortgage rates

  • Yield curve (if available)

Outputs


3.2 Supply–Demand Balance Agent

Inputs

  • Sales

  • Listings

  • Inventory

  • Immigration

Outputs


3.3 Price Momentum Agent

Inputs

  • Price index (MoM, QoQ, YoY)

Outputs


3.4 Affordability Stress Agent

Inputs

  • Price-to-income

  • Mortgage payments / income

  • Rent vs buy spread

Outputs


4. Market Regime Classification Agent (LLM-Reasoning)

This is where GenAI starts to matter.

Role

Classify the current housing regime using signals.

Example Regimes

  • Credit-driven bubble unwind

  • Rate-shock correction

  • Liquidity freeze

  • Structural undersupply slowdown

  • Demand-led recovery

Input

Structured outputs from all signal agents

Output

💡 This is pattern matching, not prediction.


5. Bottom Detection Logic (Critical Part)

5.1 Define “Bottom” Explicitly

Your system should define three bottoms:

  1. Price Bottom (lowest index)

  2. Momentum Bottom (rate of decline slows)

  3. Opportunity Bottom (best risk-adjusted buy)

Most buyers should target #3, not #1.


5.2 Bottom Signal Agent (Hybrid Logic)

Combine hard rules + LLM interpretation.

Hard Conditions (Examples)

  • Interest rates flat or falling ≥ 2 quarters

  • Inventory peaks and starts declining

  • Sales volume stabilizes

  • Price declines decelerate for ≥ 3 months

Soft Interpretation (LLM)

  • Is fear already priced in?

  • Are sellers capitulating?

  • Is demand returning despite bad headlines?

Output


6. Scenario Simulation Agent

Instead of one answer, generate scenarios.

Example Scenarios

  • Rates cut faster than expected

  • Immigration surge continues

  • Recession with job losses

  • Construction collapse causes supply shock

Output


7. Decision Agent (For You, the Buyer)

This agent is personalized.

Inputs

  • Your city (Toronto, Vancouver, etc.)

  • Budget

  • Down payment

  • Risk tolerance

  • Time horizon (live vs invest)

Output (Actionable)


8. Continuous Learning Loop

This system must evolve.

  • Monthly data refresh

  • Re-classify regime

  • Track forecast vs reality

  • Penalize agents that overreact

💡 Treat agents like financial analysts with performance reviews.


9. Tech Stack (Concrete Suggestion)

Since you’re GenAI-heavy:

  • Data: DuckDB / Postgres

  • Pipelines: Prefect / Dagster

  • Agents: LangGraph (clear state machine)

  • LLM Role:

    • Classification

    • Scenario synthesis

    • Narrative explanation

  • Math Models (non-LLM):

    • Trend filters (HP, Kalman)

    • Z-scores

    • Regime change detection


10. What This System Will NOT Do (Be Honest)

  • ❌ Predict exact bottom price

  • ❌ Time the market perfectly

  • ❌ Replace human judgment

✅ It will:

  • Reduce emotional decisions

  • Quantify uncertainty

  • Tell you when not to buy

  • Highlight high-probability windows


Final Advice (Important)

If you build this correctly, the output you should trust most is:

Now is still a bad time to buy” or “Conditions are improving, but wait 1–2 more quarters

That alone can save hundreds of thousands.


Focus on only GTA, Barrie, Oshawa regions

Below is a region-specific agentic GenAI design, narrowed only to GTA core, Barrie, and Oshawa. This is not generic Canada housing—the agents, signals, and decision logic are explicitly tuned to these three micro-markets, which behave very differently.


Image
Image
Image

Regions in Scope (Fixed)

  • Greater Toronto Area (Toronto core + inner suburbs)

  • Barrie

  • Oshawa

Each region gets separate agents, separate bottoms, separate buy windows.


1. System Philosophy (Critical for These Regions)

GTA ≠ Barrie ≠ Oshawa

Region
Market Driver
Sensitivity

GTA Core

Immigration + Income

Rates ↓, Jobs ↓

Oshawa

Commuter affordability

Rates ↑↑

Barrie

Speculation + remote work

Liquidity + sentiment

➡️ One “Canada bottom” does not exist ➡️ You are hunting three different bottoms


2. Data Layer (Region-Partitioned)

2.1 Mandatory Granularity

All data must be indexed by:

Where region ∈ {GTA, Oshawa, Barrie} and property_type ∈ {detached, semi, condo}

2.2 Key Regional Datasets

Price & Activity

  • MLS Benchmark Price (region-specific)

  • Sales volume

  • New listings

  • Months of inventory

Demand Proxies

  • GTA: immigration inflow, rental absorption

  • Oshawa: GO Train commuting patterns (proxy), first-time buyer activity

  • Barrie: investor sales %, pre-con approvals

Stress Indicators

  • Price-to-income (regional)

  • Mortgage payment / median income

  • Forced resale indicators (price cuts, relistings)


3. Regional Signal Agents (Parallel, Isolated)

You will run the same agent logic three times, once per region.


3.1 Rate Transmission Agent (Regionalized)

Why this matters: Rate hikes hit Barrie first, Oshawa second, GTA last.

Outputs

Barrie will show earlier pain, but also earlier stabilization.


3.2 Supply–Demand Imbalance Agent

This agent is extremely region sensitive.

Signals

  • Inventory growth speed

  • Listings / sales ratio

  • Condo vs detached divergence

Outputs

⚠️ Barrie inventory peaks well before GTA ⚠️ Oshawa flips fastest when rates drop


3.3 Price Momentum & Drawdown Agent

Tracks how much damage is already done.

Outputs

Interpretation:

  • Barrie historically overshoots downside

  • GTA bottoms are shallow but long

  • Oshawa snaps back fast once rates ease


3.4 Speculation Flush Agent (Barrie-Specific Bias)

This agent is weighted higher for Barrie.

Inputs

  • Investor resale %

  • Time-on-market spikes

  • Pre-con cancellations

Outputs

If this agent says “mid”, you are not at the bottom yet.


4. Regional Market Regime Agent (LLM)

This is where GenAI earns its keep.

Input

All signal outputs for one region only

Output Example – Barrie

Example – GTA


5. Bottom Detection Logic (Per Region)

5.1 Define Bottoms Separately

For each region, compute:

  1. Price Bottom

  2. Momentum Bottom

  3. Buyer Advantage Bottom ← what you want


5.2 Buyer Advantage Agent (Core Agent)

This agent answers:

“If I buy now vs wait 6–12 months, what’s my downside risk?”

Inputs

  • Rate trend

  • Inventory trend

  • Momentum

  • Stress indicators

Outputs


6. Cross-Region Timing Arbitrage Agent

This is the real edge.

Insight

Historically:

  • Barrie bottoms first

  • Oshawa bottoms next

  • GTA bottoms last

This agent watches lead–lag confirmation.

Logic

Output


7. Scenario Generator (Region-Weighted)

Example Output


8. Final Decision Agent (You-Centric)

This agent does not care about theory—only your action.

Example Output


9. LangGraph Execution Model (Clean)

No agent talks unless contractually required.


10. Hard Truth (Very Important)

For these regions:

  • ❌ You will never catch the absolute bottom

  • ✅ You can catch the maximum buyer leverage window

  • 💰 That window matters more than price alone

If forced to generalize:

  • Barrie = early warning

  • Oshawa = execution window

  • GTA = capital preservation


Let’s focus on GTA alone then

Perfect. Focusing only on GTA actually improves signal quality and reduces false bottoms.

Below is a clean, GTA-only agentic GenAI design, optimized for buy-timing, not price prophecy. This is written the way you’d design it for production, not a blog post.


Image
Image
Image

Scope Locked

  • Greater Toronto Area

  • Sub-segmented by:

    • Property type: condo | freehold

    • Zone: core | inner suburbs | outer suburbs

No Barrie. No Oshawa. No national noise.


1. GTA Market Reality (Design Constraints)

Before architecture, encode these truths as system assumptions:

  1. GTA rarely crashes fast — it bleeds sideways

  2. Immigration creates a price floor, not upside

  3. Bottoms are long plateaus, not V-shapes

  4. Best buying moment ≠ lowest index print

  5. Condos bottom before freehold

Your agents must be tuned to detect plateaus and leverage, not panic.


2. Agent Stack Overview (GTA-Only)

Each agent has one job.


3. Data Ingestion Layer (GTA Precision)

Mandatory Feeds (Monthly or Better)

Prices

  • MLS Benchmark Index (GTA)

  • Condo vs Freehold split

Liquidity

  • Sales volume

  • New listings

  • Months of inventory

Rates

  • BoC policy rate

  • 5-yr fixed mortgage avg

Demand Anchors

  • Net immigration to GTA

  • Rental vacancy rate

  • Rent growth

Stress

  • Price cuts %

  • Relistings

  • Payment-to-income ratio

💡 Rule: LLM never sees raw CSVs—only structured aggregates.


4. Signal Agents (Deterministic, No LLM)

These agents output numbers, not opinions.


4.1 Rate Transmission Agent (GTA-Specific)

Purpose: Detect when rates stop hurting new buyers.

Outputs

Key insight:

GTA reacts 6–12 months after rate changes.


4.2 Inventory & Liquidity Agent

Purpose: Detect seller exhaustion.

Outputs

Bottoms form when:

  • Inventory stops rising

  • Sales stop falling


4.3 Price Momentum Agent

Purpose: Detect deceleration, not rebound.

Outputs

⚠️ First positive MoM ≠ bottom Plateau matters more.


4.4 Affordability Compression Agent

Purpose: Detect buyer re-entry pressure.

Outputs

When renting becomes more expensive, demand returns quietly.


5. Market Regime Classification Agent (LLM)

This is the only agent allowed to “think.”

Input

All signal outputs (structured JSON)

Output

This tells you how bottoms behave, not when.


6. Plateau Detection Agent (MOST IMPORTANT)

GTA bottoms are horizontal, not vertical.

Hard Conditions

  • MoM price within ±0.3% for ≥ 3 months

  • Inventory flat or declining

  • Rate trend flat or easing

  • Sales volume stabilizes

Output

If this agent says false, do not buy.


7. Buyer Leverage Agent (Decision Core)

This agent answers:

“Do I have negotiating power right now?”

Inputs

  • Inventory

  • Days on market

  • Price cuts %

  • Plateau status

Output

This is more valuable than predicting prices.


8. Condo vs Freehold Split Agent

GTA bottoms unevenly.

Typical Order

  1. Condos plateau

  2. Townhomes stabilize

  3. Detached lags

Output


9. Final Decision Agent (Human-Readable)

Output Example

This agent never says “buy now” lightly.


10. LangGraph Execution Model (Simple & Safe)

No agent loops. No hallucination paths.


11. What This System Will Actually Tell You

Most likely outcomes in GTA:

  • Long flat bottom (12–24 months)

  • Multiple “false starts”

  • Best buys happen when:

    • News still negative

    • Rates just stopped rising

    • Sellers are tired, not desperate


Below is the exact LangGraph state machine for a GTA-only housing bottom–detection system. This is implementation-grade, not conceptual. You should be able to translate this directly into code.

I’ll structure it in four parts:

  1. State schema

  2. Node definitions (agents)

  3. Graph topology

  4. Execution + guardrails


Scope (Locked)

  • Greater Toronto Area

  • Monthly cadence (weekly optional for liquidity signals)

  • Outputs: Buy / Wait / Prepare, never “predict price X”


1. LangGraph State Schema (Single Source of Truth)

This is the only mutable object passed between agents.

Rule: No agent writes outside its assigned keys.


2. Node (Agent) Definitions

Each node is pure, idempotent, and single-responsibility.


2.1 Ingestion Node (Deterministic)

  • No LLM

  • No interpretation

  • Fails fast if data missing


2.2 Rate Transmission Agent

Hard logic only (BoC rate trend, mortgage averages, lag assumptions)


2.3 Inventory & Liquidity Agent

Key insight encoded:

  • GTA bottoms when inventory stops rising, not when it peaks


2.4 Price Momentum Agent

No forecasting. Only slope and curvature.


2.5 Affordability Compression Agent

This agent detects buyer pressure, not buyer action.


2.6 Market Regime Classification Agent (LLM)

ONLY agent allowed to reason semantically

Prompt constraints:

  • Choose from fixed regime taxonomy

  • Must cite internal signals

  • No price predictions


2.7 Plateau Detection Agent (Critical)

This is the core bottom detector.

This agent gates all buying decisions.


2.8 Buyer Leverage Agent

This is more important than price direction.


2.9 Segment Split Agent (Condo vs Freehold)

GTA-specific bias encoded:

  • Condos lead

  • Detached lags


2.10 Final Decision Agent (LLM-lite)

This agent cannot override plateau logic.


3. LangGraph Topology

No loops. No agent chatter. No recursion.


4. Guardrails (Non-Negotiable)

Hard Rules

  • ❌ No agent predicts price levels

  • ❌ No agent overrides plateau detection

  • ❌ LLM cannot access raw time series

Soft Rules

  • Prefer false negatives (wait too long) over false positives

  • Trust inventory + rates more than sentiment

  • Re-evaluate monthly, not daily


5. What This Graph Gives You (Real Value)

  • Early detection of plateau zones

  • Identification of buyer leverage windows

  • Protection from false bottoms

  • Clear “wait / prepare / act” signals

This is exactly how institutional real estate desks reason—just automated and disciplined.


Prompt contracts for each agent

Below are production-grade prompt contracts for the LLM agents only in your GTA-only LangGraph. These are strict, auditable, and designed to prevent hallucination, price prediction, and agent overreach.

Scope is fixed to Greater Toronto Area.


Prompt Contract Design Rules (Read First)

These rules apply to all LLM agents:

  1. LLM never sees raw time-series

  2. LLM never outputs numbers it invents

  3. LLM must choose from enumerations

  4. LLM must cite which signals it used

  5. LLM cannot recommend “buy now”

If an output violates schema → reject + retry


1. Market Regime Classification Agent (Primary Reasoning Agent)

Purpose

Classify the current GTA housing regime and cycle stage → This determines how bottoms behave, not when.


System Prompt


User Prompt Template


Required Output Schema


Hard Rejection Rules

❌ Mentions price levels ❌ Mentions “buy” or “sell” ❌ Uses external data ❌ Outputs multiple regimes


2. Plateau Interpretation Agent (LLM-Light, Optional but Powerful)

This agent does not detect plateaus (math already did that) It interprets the quality of the plateau


System Prompt


User Prompt Template


Output Schema


3. Final Decision Narration Agent (Human-Facing)

This agent translates math → English It cannot change decisions


System Prompt


User Prompt Template


Output Schema


4. Prompt-Level Safety Controls (Very Important)

Enforced at runtime:

  • Max tokens: low (prevents rambling)

  • Temperature: ≤ 0.2

  • Stop words: ["$", "price", "target", "forecast"]

  • Schema validation: mandatory

If schema fails → retry with stricter system message


5. Why This Prompt Design Works

✔ Prevents hallucination ✔ Keeps LLM in classification & synthesis, not prediction ✔ Makes outputs auditable ✔ Matches institutional real-estate workflows ✔ Easy to evaluate over time

This is how you safely use GenAI in financial decision systems.


Mathematical plateau formula

Below is the exact plateau mathematics for GTA-only housing bottoms. This is deterministic, auditable, and tunable—no LLM judgment involved.

Scope locked to Greater Toronto Area.


0. Definition (Be Precise)

For GTA, a bottom ≠ minimum price.

A plateau is defined as:

A sustained period where downward price momentum exhausts, liquidity stops deteriorating, and rates stop adding incremental damage.

This is what creates maximum buyer leverage.


1. Core Plateau Variables

You will compute five signals, each normalized to ([0,1]).

Signal
Symbol
Meaning

Price Momentum Exhaustion

PME

Decline is slowing

Inventory Stabilization

IS

Sellers stop flooding

Sales Stabilization

SS

Buyers stop retreating

Rate Pressure Neutralization

RPN

Rates stop worsening

Affordability Re-entry

AR

Buyers can return


2. Price Momentum Exhaustion (PME)

Inputs

  • Monthly price index (P_t)

Calculations

GTA Threshold

📌 Interpretation:

  • Prices can still fall

  • But the rate of falling has stopped accelerating


3. Inventory Stabilization (IS)

Inputs

  • Months of Inventory (MOI)

Calculations

GTA Threshold

📌 GTA nuance:

  • Inventory does not need to fall

  • It only needs to stop rising meaningfully


4. Sales Stabilization (SS)

Inputs

  • Monthly sales count (S_t)

Calculations

GTA Threshold

📌 Interpretation:

  • Buyers aren’t rushing back

  • They’ve stopped disappearing


5. Rate Pressure Neutralization (RPN)

Inputs

  • BoC policy rate

  • 5Y fixed mortgage rate

Calculations

GTA Threshold

📌 No rate cuts required Flat is enough.


6. Affordability Re-entry (AR)

Inputs

  • Mortgage payment / median income

  • Rent vs buy spread

Calculations

GTA Threshold

📌 This captures latent demand, not transactions.


7. Plateau Detection Formula (Final)

Boolean Plateau Gate

Plateau Probability Score

Decision Thresholds

Probability
Interpretation

< 0.40

Not a bottom

0.40–0.55

Early formation

0.55–0.70

Buy-prep zone

> 0.70

Strong plateau


8. Why This Works for GTA (Specifically)

  • GTA prices flatten before recovering

  • Inventory tops before prices

  • Rates hurt with long lags

  • Immigration creates a soft floor, not momentum

This math detects when downside asymmetry collapses—that’s when smart buyers act.


9. Common False Signals (Guardrails)

❌ Single positive MoM print ❌ News-driven optimism ❌ Rate-cut rumors ❌ Immigration headlines alone

✅ Only multi-signal confirmation triggers plateau


10. How You Use This in Practice

Monthly cadence

  1. Compute signals

  2. Update Plateau_Probability

  3. Act only when:

That’s how you avoid false bottoms.


Dashboard metrics (what to watch weekly)

Below is a GTA-only monitoring dashboard design that turns your plateau math into something you can actually watch weekly without noise.

This is operator-grade: minimal charts, explicit thresholds, and clear “ignore / prepare / act” states.


GTA Housing Bottom Dashboard (Design Spec)

Core Principle

You should be able to decide “Do nothing / Prepare / Act” in under 60 seconds.

No forecasts. No commentary. Just signals.


1. Dashboard Layout (One Screen)


2. Header: GTA Bottom Status (MOST IMPORTANT)

Widget: Status Banner

Inputs

  • Plateau_Probability

  • Plateau_Streak (months ≥ threshold)

Logic

Display

This banner overrides everything else.


3. Plateau Probability Gauge

Widget: Horizontal Gauge (0 → 1)

Components (stacked bars):

  • PME (30%)

  • IS (25%)

  • SS (15%)

  • RPN (15%)

  • AR (15%)

Why You instantly see what’s missing.

Example:

  • Green: PME, IS, RPN

  • Yellow: AR

  • Red: SS

Meaning:

Sellers are tired, rates stopped hurting, buyers haven’t fully returned.


4. Buyer Leverage Panel (Your Negotiation Power)

Metrics

  • Months of Inventory

  • % Listings with Price Cuts

  • Median Days on Market

Composite Score

Thresholds

Score
Meaning

< 0.45

Seller control

0.45–0.60

Balanced

> 0.60

Buyer leverage

Display


5. Inventory Stabilization Panel

Charts (Small Multiples)

  • Months of Inventory (line)

  • 3M ΔMOI (bar)

Visual Cue

  • Red → Rising

  • Yellow → Rising slowing

  • Green → Flat / falling

Rule

If inventory is still clearly rising → bottom not in


6. Price Momentum Panel (Anti–False Bottom)

Charts

  • MoM price change (bars)

  • 3M slope (line)

Threshold Line

Interpretation

  • Inside band = acceptable plateau behavior

  • Outside band = trend still active

⚠️ One green bar means nothing You want clustered compression


7. Rates Panel (Silent Killer)

Metrics

  • BoC rate (step line)

  • 5Y mortgage avg (line)

  • 3M rate delta

Signal Lamp

  • 🔴 Rising

  • 🟡 Flat

  • 🟢 Falling

Rule

Plateau probability is capped at 0.55 if rates are still rising.


8. Affordability Re-Entry Panel

Metrics

  • Payment-to-income ratio (z-score)

  • Rent vs Buy monthly delta

Interpretation Zones

Zone
Meaning

Z > 2.5

Frozen

2.0–2.5

Strained

< 2.0

Re-entry possible

This explains why demand returns before prices rise.


9. Condo vs Freehold Toggle

A simple toggle that switches:

  • Prices

  • Inventory

  • Momentum

Default View

  • Condos (lead indicator)

Rule

Never buy freehold if condo plateau hasn’t formed.


10. Weekly vs Monthly Cadence (Important)

Metric
Frequency

Rates

Weekly

Inventory

Weekly

Price Index

Monthly

Plateau Probability

Monthly

Decision State

Monthly

This prevents overtrading your own decisions.


11. Alerts (Minimal, High Signal)

You only need 3 alerts:

  1. Plateau Probability > 0.55

  2. Inventory trend flips flat

  3. Rates stop rising (3M delta ≤ 0)

No notifications beyond this.


12. What This Dashboard Prevents

❌ Emotional buying ❌ News-driven decisions ❌ Catching falling knives ❌ Waiting forever for “perfect bottom”

✅ Disciplined entry ✅ Negotiation leverage ✅ Risk-aware timing


13. Final Operator Rule (Memorize This)

In GTA, you buy when conditions are boring, not exciting.

If headlines are optimistic — you’re late. If everything feels dead — you’re early. If it feels flat and ugly — you’re close.


Buy vs Rent - break-even logic

Below I’ll expand and operationalize the two highlighted items:

Add Monte Carlo downside simulation Turn it into a weekly decision report

This will plug cleanly into the system you’ve already designed—no conceptual drift.


Part A — Monte Carlo Downside Simulation (GTA-Specific)

What This Is (and Is NOT)

This is NOT price forecasting. It is a risk-envelope generator answering:

“If I buy during this plateau window, how bad can it realistically get—and how likely is that?”

You simulate loss paths, not upside fantasies.

Scope locked to Greater Toronto Area.


1. What You Simulate (Minimal, Sufficient)

Each simulation run models price drawdown only, over a holding horizon.

Random variables per run:

  • Monthly price change (μ, σ)

  • Shock events (rates, recession)

  • Duration of plateau failure

You do not simulate:

  • Immigration

  • Sentiment

  • News (those are already encoded in plateau probability)


2. Parameterization (Grounded, Conservative)

2.1 Mean Monthly Drift (μ)

Tie drift to plateau probability:

This encodes:

  • Flat bottoms

  • No V-shaped recoveries


2.2 Volatility (σ)

Use historical GTA monthly volatility, clipped:

This avoids 2008-style fantasy tails that GTA never exhibited.


2.3 Shock Model (Discrete, Rare)

Add Bernoulli shocks:

Shock
Probability
Impact

Rate spike

5%

-6% over 6 months

Recession

8%

-12% over 12 months

Policy relief

5%

+4% over 12 months

Shocks override μ temporarily, then revert.


3. Simulation Engine (Pseudo-code)

Typical values:

  • N = 10,000

  • H = 60 months (5 years)


4. Outputs That Matter (Only These)

From the terminal price distribution:

Metric
Meaning

P10

Severe downside

P25

Bad but plausible

Median

Base case

Max Drawdown

Worst pain

Loss Probability

Chance of being underwater

Example output:


5. How This Feeds Decisions

Add one more hard gate:

This is how you sleep at night.


Part B — Weekly Decision Report (Human-Consumable)

This is the only thing you read regularly.

No dashboards. No charts unless something changed.


1. Report Cadence

Component
Frequency

Rates & inventory

Weekly

Plateau probability

Monthly

Monte Carlo

Monthly

Decision state

Weekly

Weekly report = delta-focused.


2. One-Page Report Structure

Header


Section 1 — What Changed This Week (Binary)

If nothing changed → say so explicitly.


Section 2 — Current Market State (Snapshot)

No commentary beyond one sentence.


Section 3 — Downside Risk (Monte Carlo Summary)

This anchors emotion.


Section 4 — Decision Logic (Explicit)

No ambiguity.


Section 5 — Action Items (Concrete)


3. Tone Rules (Critical)

  • No optimism

  • No urgency language

  • No “opportunity” talk

  • Use risk language, not upside language

This prevents self-sabotage.


How This Completes the System

You now have:

  1. Structural market understanding

  2. Mathematical bottom detection

  3. Personal buy vs rent logic

  4. Probabilistic downside envelope

  5. Weekly decision discipline

This is institutional-grade decision engineering, adapted for a personal purchase.


Below is a concrete expansion of the two highlighted items, focused on how they actually plug into your existing LangGraph—not conceptually, but mechanically.

Scope remains Greater Toronto Area.


A. Integrating Monte Carlo as a Gated LangGraph Node

Why a gated node?

Monte Carlo is expensive and decision-critical. You should not run it every cycle.

Instead:

  • Run it only when the market is near a buyable zone

  • Use it to veto false confidence


1. Where the Monte Carlo Node Sits

Updated graph (only the delta shown):

The Monte Carlo node cannot trigger a buy It can only block or downgrade one.


2. Gate Condition (Very Important)

Monte Carlo runs only if:

Why:

  • Below this, the decision is already WAIT

  • Simulation adds no value early in the cycle


3. LangGraph Node Definition (Pseudo-code)


4. Monte Carlo Output Contract (Strict)

No narratives. No optimism. Just risk geometry.


5. Decision Agent Override Logic

Final decision logic becomes:

This ensures:

You never buy when downside tails are unacceptable—even if the market “looks good.”

That’s institutional discipline.


B. Auto-Generated Weekly Decision Memo

This replaces dashboards for actual decision-making.


1. What the Memo Is

  • A 1-page internal memo

  • Written as if for an investment committee

  • Generated automatically from graph state

  • Read once per week, max

Think:

“What would a cautious CIO send me every Friday?”


2. Memo Generation Agent (LLM, Read-Only)

This agent:

  • Cannot change state

  • Cannot recommend buying

  • Only explains why the system says what it says


3. Memo Agent Input (Structured Only)

No raw numbers beyond summaries.


4. Memo Prompt Contract (Key Excerpt)


5. Memo Structure (Fixed)

Header


Section 1 — Executive Summary (3 lines max)

Example:

Market conditions remain in a late-decline plateau formation. Buyer leverage is improving, but downside risk remains non-trivial. The system recommends continued preparation, not execution.


Section 2 — What Changed This Week (Binary)

If nothing changed:

No material changes this week.

This is psychologically critical.


Section 3 — Risk Snapshot (Monte Carlo)

No upside framing.


Section 4 — Why We Are / Are Not Buying

Example:


Section 5 — Explicit Triggers to Act

This prevents second-guessing.


6. Output Format

  • Markdown or PDF

  • Stored weekly (audit trail)

  • Diff-friendly (track your own discipline)


Why This Matters More Than Anything Else

Most buyers fail because:

  • They re-decide every week

  • They react to noise

  • They override their own rules

This integration ensures:

  • Rules > feelings

  • Risk > narratives

  • Consistency > timing brilliance


Final Mental Model (Keep This)

LangGraph decides when to think. Monte Carlo decides when to fear. The memo decides when to act—or not.


Add a personal regret-minimization score

Below is a precise expansion of “Add a personal regret-minimization score”—what it is, how to compute it, and how it plugs into your existing GTA decision system.

Scope remains Greater Toronto Area.


What “Regret-Minimization” Means (Operationally)

You’re not trying to maximize expected returns. You’re trying to minimize the worst personal regret across two mistakes:

  1. Buy too early → prices fall / cash-flow pain

  2. Wait too long → prices stabilize or rise / lost optionality

A regret score quantifies which mistake would hurt you more, given your finances, psychology, and constraints—then biases the decision accordingly.


Regret Is Personal (Not Market-Based)

Two buyers seeing the same market should act differently if:

  • One hates negative equity

  • Another hates missing a deal

  • One has fragile cash flow

  • Another has surplus liquidity

So regret ≠ volatility ≠ risk. Regret = pain × probability × personal sensitivity.


The Regret-Minimization Score (RMS)

High-level idea

  • RMS > 0 → waiting hurts more → bias toward BUY

  • RMS < 0 → buying hurts more → bias toward WAIT/RENT

  • RMS ≈ 0 → truly indifferent → follow system default


Step 1 — Quantify “Regret of Buying Too Early” (R_buy)

This is downside pain if prices fall after purchase.

Inputs (already in your system)

  • Monte Carlo P25 drawdown (e.g., −9%)

  • Probability of negative equity (e.g., 31%)

  • Monthly ownership premium vs rent

  • Holding period

  • Loss Aversion Factor (personal, 1–3)

Formula

Where:

  • Expected_Drawdown_Value = Purchase_Price × |P25_Drawdown|

  • Stress_Weight increases if cash flow is tight


Step 2 — Quantify “Regret of Waiting Too Long” (R_wait)

This is optionality pain if the market stabilizes without you.

Inputs

  • Plateau probability

  • Buyer leverage score

  • Expected discount window (e.g., 6–10%)

  • Replacement cost of waiting (rent increases, competition)

  • FOMO Sensitivity (personal, 1–3)

Formula

Where:

  • Missed_Discount_Value = Purchase_Price × Expected_Discount

  • Re-entry_Friction captures bidding wars, stress, time cost


Step 3 — Normalize & Compute RMS

Normalize both regrets to a 0–1 scale, then:

Interpretation

RMS Range
Meaning
Action Bias

≤ −0.20

Buying regret dominates

WAIT / RENT

−0.20 to +0.20

Balanced

Follow core system

≥ +0.20

Waiting regret dominates

BUY (if gates pass)


Step 4 — Hard Safety Gates (Still Apply)

Even if RMS screams “BUY”, you still cannot buy unless:

Regret biases decisions; it does not override risk controls.


Where RMS Fits in Your LangGraph

Add it after Monte Carlo, before final decision.

Regret Node Output Contract

The decision agent uses this as a tie-breaker, not a dictator.


Why This Is Extremely Powerful

Most systems answer:

“What’s the optimal decision on average?”

Regret-minimization answers:

“What decision will you least hate, even if you’re wrong?”

That’s how you:

  • Stick to the plan

  • Avoid second-guessing

  • Sleep at night

  • Prevent emotional overrides


Example (Concrete)

  • Plateau Probability: 0.60

  • Buyer Leverage: 0.68

  • Monte Carlo P25: −9%

  • You hate losses (Loss Aversion = 2.5)

  • You’re okay missing deals (FOMO = 1.2)

R_buy > R_wait → RMS = −0.22 → WAIT

Same market, different buyer:

  • Loss Aversion = 1.2

  • FOMO = 2.5

RMS = +0.31 → BUY_SELECTIVE

Same data. Rationally different outcomes.


Final Mental Model (Keep This)

Risk models protect your money. Regret models protect your behavior.


Concrete, month-by-month walkthrough of how the Regret-Minimization Score (RMS)

Below is a concrete, month-by-month walkthrough of how the Regret-Minimization Score (RMS) evolves as GTA approaches a plateau, and why your decision bias changes over time even if prices barely move.

Scope fixed to Greater Toronto Area.


Key Reminder (What RMS Measures)

  • RMS < 0 → buying regret dominates → WAIT / RENT bias

  • RMS ≈ 0 → balanced → follow system gates

  • RMS > 0 → waiting regret dominates → BUY bias (if allowed)

RMS changes even without price changes, because risk asymmetry changes.


Assumptions for the Walkthrough (Fixed)

To keep this concrete, assume:

  • Holding period: 5 years

  • Loss Aversion: 2.0 (moderate)

  • FOMO Sensitivity: 1.5 (moderate)

  • Risk tolerance: −8% drawdown

  • Property type: GTA condo

  • Monthly rent growth: modest

Only market signals evolve month by month.


Month-by-Month Near a Plateau

Month T-2 — Late Decline (Too Early)

Market State

  • Plateau Probability: 0.42

  • Buyer Leverage: 0.58

  • Monte Carlo P25: −14%

  • Inventory: still rising

  • Rates: flat but recently high

Regret Components

  • R_buy (buying early): very high

    • Large downside tail

    • High chance of negative equity

  • R_wait (waiting): low

    • Discounts likely improve

    • No urgency

RMS

Interpretation

Buying regret massively dominates. Waiting is cheap.

Correct Bias ➡️ WAIT / RENT


Month T-1 — Early Plateau Formation

Market State

  • Plateau Probability: 0.52

  • Buyer Leverage: 0.63

  • Monte Carlo P25: −11%

  • Inventory: rising slows

  • Momentum: decelerating

Regret Components

  • R_buy: still dominant, but shrinking

  • R_wait: rising (some discounts already gone)

RMS

Interpretation

Still more regret from buying early, but gap is closing.

Correct Bias ➡️ WAIT (but prepare seriously)


Month T — Plateau Confirmed (Asymmetry Flips)

Market State

  • Plateau Probability: 0.60

  • Buyer Leverage: 0.70

  • Monte Carlo P25: −9%

  • Inventory: flat

  • Rates: neutral

Regret Components

  • R_buy: much lower

    • Downside tails compressed

  • R_wait: materially higher

    • Discounts shrinking

    • Re-entry friction rising

RMS

Interpretation

Regrets are roughly balanced. This is the decision zone.

Correct Bias ➡️ Follow core system ➡️ BUY_SELECTIVE allowed (if gates pass)


Month T+1 — Early Recovery (Too Late for Comfort)

Market State

  • Plateau Probability: 0.68

  • Buyer Leverage: 0.62 (declining)

  • Monte Carlo P25: −6%

  • Inventory: declining

  • Competition: rising

Regret Components

  • R_buy: low

  • R_wait: high

    • Missed discounts

    • Bidding pressure

    • Psychological stress

RMS

Interpretation

Waiting regret dominates. The cost of hesitation is now real.

Correct Bias ➡️ BUY (if financially feasible)


Month T+2 — Post-Plateau (Emotionally Hard)

Market State

  • Plateau Probability: 0.75

  • Buyer Leverage: 0.50

  • Monte Carlo P25: −5%

  • Inventory: tight

  • Prices: flat-to-up

Regret Components

  • R_buy: minimal

  • R_wait: very high (mostly psychological)

RMS

Interpretation

Market is no longer risky, but entry is painful.

Correct Bias ➡️ BUY only if you must ➡️ Otherwise accept you missed optimal asymmetry


Visual Summary (Mental Model)

The crossing near zero is the moment your system is designed to catch.


Why This Is Extremely Important

Most buyers ask:

“Will prices go up or down next month?”

You’re asking:

“At what point does waiting become riskier than acting?”

That flip happens before headlines improve and before prices rise meaningfully.

RMS lets you:

  • Act without needing conviction

  • Stop second-guessing

  • Accept being imperfect but rational


Final Rule (Memorize This)

You buy near a plateau not because upside is clear, but because regret has changed sides.


How the RMS timeline is embedded into the weekly memo

Got it. I’ll explicitly show how the RMS timeline is embedded into the weekly memo, what gets computed, what gets written, and how it changes week to week. No new concepts—just wiring.

Scope remains Greater Toronto Area.


What “Plug RMS Timeline into the Weekly Memo” Actually Means

It means:

The weekly memo does not show a single regret number. It shows where you are on the regret curve, how that position changed since last week, and whether the direction of regret is flipping.

This prevents the most common failure mode: “Nothing changed in price, so I’m confused why the advice changed.”


1. RMS Is Tracked as a Time Series (Not a Snapshot)

Internally, you store:

This trend is what the memo references.


2. RMS Section in the Weekly Memo (Fixed Placement)

Section Title (always present)

Even if unchanged, it stays. This builds discipline.


3. RMS Summary Block (Quantitative but Human)

Example (Week W):

Interpretation line (mandatory):

The balance of regret has shifted from “buying too early” toward “waiting too long,” but remains near neutral.

No emotion. No advice yet.


4. RMS Timeline Indicator (Very Important)

Add a one-line positional statement:

Possible values (enumerated):

  • Late decline

  • Early plateau

  • Decision zone

  • Post-plateau

This is mapped mechanically:


5. “What Changed in Regret” (Delta-Driven)

This section exists only if RMS moved ≥ 0.10.

Example:

If RMS barely moved:

This sentence is crucial. It stops overthinking.


6. RMS → Decision Bias Mapping (Explicit, Not Implied)

You never let readers infer.

Example:

If RMS is positive but gates fail:

This preserves hierarchy: Risk > Regret > Preference


7. RMS-Based Forward Guidance (Trigger-Oriented)

Instead of predictions, you state:

This tells you what to watch, not what to hope for.


8. Full Weekly Memo Excerpt (Concrete Example)

That’s it. No drama. No urgency.


9. Why This Is So Powerful (Practically)

Most people fail because:

  • They feel different emotions each week

  • They can’t articulate why

  • They override systems impulsively

This RMS integration:

  • Externalizes emotion into math

  • Shows direction, not noise

  • Makes hesitation or action defensible

You’re no longer asking:

“Do I feel ready?”

You’re asking:

“Has regret structurally changed sides?”


Final Mental Rule (Pin This)

Prices tell you what happened. Risk tells you what can hurt. Regret tells you when waiting becomes the mistake.


Integrate RMS into the LangGraph decision node

Below is a precise, implementation-level clarification of what

“Integrate RMS into the LangGraph decision node” actually means in practice.

I’ll stay narrowly focused on how RMS influences the final decision without breaking your risk discipline.

Scope remains Greater Toronto Area.


1. What RMS Is Allowed to Do in LangGraph

RMS is NOT a decision-maker. It is a bias adjuster used only when the system is already near indifference.

Think of RMS as:

“If we’re already close, which mistake would I regret more?”

So RMS:

  • ✅ Can tilt WAIT ↔ PREPARE ↔ BUY_SELECTIVE

  • ❌ Cannot override hard risk gates

  • ❌ Cannot force a BUY


2. Where RMS Lives in the Graph (Exact Placement)

Final graph tail looks like this:

Important: RMS runs only after downside risk is already acceptable.


3. RMS Node: Inputs and Outputs (Contract)

Inputs (Read-Only)

Outputs (Strict)

No narratives. No decisions. Just directional bias.


4. The Final Decision Node (This Is the Key Part)

This node already has a baseline action from plateau + leverage logic.

Example baseline:

RMS modifies this baseline only within bounds

Decision Logic (Pseudo-Code)

Translation into English

  • If risk is unacceptable → WAIT (always)

  • If risk is acceptable but RMS is:

    • Strongly negative → bias toward WAIT

    • Neutral → follow core system

    • Strongly positive → allow BUY_SELECTIVE

RMS never escalates beyond what the market allows.


5. Why RMS Is Not Redundant with Monte Carlo

This is subtle but important:

Tool
Answers

Monte Carlo

“How bad could this get?”

RMS

“Which mistake would hurt me more?”

You need both:

  • Monte Carlo protects capital

  • RMS protects behavior

Without RMS, users still override systems emotionally.


6. Example: Same Market, Two Outcomes (Correctly)

Market State (Same)

  • Plateau Probability: 0.60

  • Buyer Leverage: 0.67

  • Monte Carlo P25: −9%

Person A

  • Loss aversion: 2.5

  • FOMO: 1.0 → RMS = −0.28 → Final Action: WAIT

Person B

  • Loss aversion: 1.2

  • FOMO: 2.4 → RMS = +0.31 → Final Action: BUY_SELECTIVE

Same market. Different humans. Both decisions are rational and disciplined.


7. Why This Integration Is the “Last 5%”

Without RMS:

  • System is correct

  • Human still hesitates or rushes

With RMS:

  • Decision matches psychological tolerance

  • Much higher chance you stick to the plan

This is exactly how professional investment committees work:

risk → return → regret → decision


Final Takeaway (One Line)

Risk decides if you’re allowed to act. Regret decides whether you should.


Single LangGraph decision table

Below is the single LangGraph decision table you asked for. This is the entire decision surface collapsed into one auditable artifact.

Scope fixed to Greater Toronto Area.


GTA LangGraph — Final Decision Table

This table is evaluated top → bottom. First matching row wins.

Think of it as a deterministic policy, not “agent reasoning”.


1. Inputs (All Pre-Computed Upstream)

Variable
Meaning

P

Plateau_Probability

L

Buyer_Leverage_Score

MC

MonteCarlo_P25_Drawdown

RT

Risk_Tolerance (absolute %)

RMS

Regret-Minimization Score


2. Decision Table (Authoritative)

Priority
Condition (ALL must be true)
Action
Rationale

1

P < 0.55

WAIT

Not in bottom zone

2

MC < -RT

WAIT / RENT

Tail risk unacceptable

3

L < 0.60

WAIT

No negotiation leverage

4

0.55 ≤ P < 0.65 AND L ≥ 0.60 AND -0.20 ≤ RMS ≤ +0.20

PREPARE

Decision zone, asymmetry forming

5

P ≥ 0.55 AND L ≥ 0.60 AND RMS ≤ -0.20

WAIT

Buying regret dominates

6

P ≥ 0.55 AND L ≥ 0.60 AND +0.20 ≤ RMS < +0.35

BUY_SELECTIVE

Waiting regret dominates (controlled)

7

P ≥ 0.65 AND L ≥ 0.65 AND RMS ≥ +0.35 AND MC ≥ -RT

BUY (HIGH CONVICTION)

Rare, strong asymmetry


3. Visual Hierarchy (Important)

  • Risk gates block actions

  • Leverage gates permit negotiation

  • RMS only resolves ambiguity

RMS never bypasses rows 1–3.


4. How This Maps to LangGraph Code

Decision Node (Pseudo-Code)

This is unit-testable and non-ambiguous.


5. Why a Decision Table Beats “Agent Reasoning”

  • No hidden logic

  • No prompt drift

  • No emotional override

  • Fully auditable after the fact

  • Easy to explain to future you

This is exactly how risk committees formalize decisions.


6. One-Line Interpretation Guide

  • WAIT → market still dangerous

  • PREPARE → line up financing & shortlist

  • BUY_SELECTIVE → negotiate hard, stay picky

  • BUY_HIGH_CONVICTION → rare, act decisively


Final Rule (Pin This)

If you can’t point to the row you’re in, you’re not allowed to act.


Kiro Requirements

Below is a clean, structured Kiro Requirements document converted from this entire chat. You can paste this as-is into Kiro and ask it to plan, design, and implement the system.

I’ve written this the way a senior product / systems architect would hand off requirements to an autonomous engineering agent.


📄 KIRO REQUIREMENTS

Project: GTA Housing Market Bottom Detection & Buy Decision System (Agentic GenAI)


1. Objective

Build an agentic decision-support system that analyzes the Greater Toronto Area (GTA) housing market to determine:

  • When the market enters a price plateau / bottom zone

  • When a buyer has maximum negotiating leverage

  • Whether a specific user should BUY / WAIT / RENT, based on:

    • Market structure

    • Downside risk

    • Personal regret minimization

The system must not predict prices or give speculative forecasts. It must provide risk-aware, auditable, repeatable decisions.


2. Scope (Strict)

Geography

  • GTA only

  • No Canada-wide aggregation

  • No Barrie, Oshawa, or other spillover regions

Property Focus

  • Condos (lead indicator)

  • Freehold tracked but secondary

Time Horizon

  • Monthly decision cadence

  • Weekly monitoring cadence


3. Core Principles (Non-Negotiable)

  1. No price prediction

  2. No exact “market bottom” claims

  3. Risk > Regret > Preference

  4. False negatives preferred over false positives

  5. LLMs classify and narrate — never calculate

  6. All decisions must be explainable via deterministic rules


4. System Architecture (High Level)


5. Data Requirements

Market Data (Monthly)

  • MLS Benchmark Price (GTA)

  • Condo vs Freehold price split

  • Sales volume

  • New listings

  • Months of inventory

Rate Data (Weekly)

  • Bank of Canada policy rate

  • 5-year fixed mortgage rate (average)

Demand & Stress

  • Rent levels

  • Rent vs buy spread

  • Price cuts %

  • Days on market


6. Deterministic Signal Agents (No LLM)

Each agent:

  • Reads structured data

  • Outputs structured JSON

  • No inference, no text generation

Required Agents

  1. Rate Transmission Agent

  2. Inventory & Liquidity Agent

  3. Price Momentum Agent

  4. Affordability Compression Agent


7. Market Regime Classification Agent (LLM)

Purpose

Classify the current GTA housing regime and cycle stage

Allowed Regimes

  • affordability_freeze

  • rate_shock_correction

  • liquidity_drought

  • demand_reacceleration

  • speculative_unwind

Allowed Cycle Stages

  • early_decline

  • mid_decline

  • late_decline

  • plateau

  • early_recovery

Constraints

  • Must choose exactly one regime and one stage

  • Must cite which signals influenced the decision

  • Must not output price targets or advice


8. Plateau Detection (Mathematical Core)

Signals (Binary)

  • Price Momentum Exhaustion (PME)

  • Inventory Stabilization (IS)

  • Sales Stabilization (SS)

  • Rate Pressure Neutralization (RPN)

  • Affordability Re-entry (AR)

Plateau Condition

Plateau Probability

Thresholds

  • < 0.40 → Not a bottom

  • 0.40–0.55 → Early formation

  • 0.55–0.70 → Buy-prep zone

  • 0.70 → Strong plateau


9. Buyer Leverage Scoring

Inputs

  • Months of inventory

  • % price cuts

  • Days on market

Output

  • Buyer_Leverage_Score ∈ [0,1]

Interpretation

  • < 0.45 → Seller control

  • 0.45–0.60 → Balanced

  • 0.60 → Buyer leverage


10. Monte Carlo Downside Simulation (Gated)

Purpose

Quantify downside tail risk, not upside.

Run Conditions

  • Plateau_Probability ≥ 0.50

  • Buyer_Leverage ≥ 0.55

Outputs

  • P10 drawdown

  • P25 drawdown

  • Median outcome

  • Probability of negative equity

  • Max drawdown

Hard Gate


11. Regret-Minimization Score (RMS)

Purpose

Bias decisions based on personal regret asymmetry, not market optimism.

Formula

Interpretation

  • RMS ≤ -0.20 → Buying regret dominates → WAIT bias

  • -0.20 to +0.20 → Neutral → Follow system

  • RMS ≥ +0.20 → Waiting regret dominates → BUY bias (if allowed)

RMS may:

  • Tilt WAIT ↔ PREPARE ↔ BUY_SELECTIVE

  • Must never override risk gates


12. Final Decision Policy (Authoritative Table)

Priority
Conditions
Action

1

Plateau_Probability < 0.55

WAIT

2

MonteCarlo_P25 < -Risk_Tolerance

WAIT / RENT

3

Buyer_Leverage < 0.60

WAIT

4

Plateau 0.55–0.65 AND RMS ∈ [-0.20, +0.20]

PREPARE

5

RMS ≤ -0.20

WAIT

6

RMS ≥ +0.20

BUY_SELECTIVE

7

Plateau ≥ 0.65 AND RMS ≥ +0.35 AND Leverage ≥ 0.65

BUY_HIGH_CONVICTION

First matching row wins.


13. Weekly Decision Memo (Human Output)

Characteristics

  • One page

  • No charts unless something changed

  • Written for a risk-averse buyer

  • No urgency language

Required Sections

  1. Executive summary

  2. What changed this week

  3. Current market state

  4. Downside risk snapshot (Monte Carlo)

  5. Regret balance (RMS + trend)

  6. Explicit triggers to act


14. LangGraph Requirements

Graph Properties

  • Directed, acyclic

  • Deterministic state transitions

  • No agent-to-agent chatter

Node Types

  • Deterministic compute nodes

  • LLM classification nodes

  • Read-only narration nodes

State Object

  • Single shared state

  • Typed, schema-validated

  • No raw time series exposed to LLMs


15. Non-Goals (Explicit)

  • No price forecasting

  • No news sentiment scraping

  • No reinforcement learning

  • No autonomous buying actions

  • No emotional language


16. Success Criteria

The system is successful if:

  • It consistently avoids false bottoms

  • It delays buying during high-risk periods

  • It produces auditable decisions

  • The user can explain why they acted or waited

  • Decisions remain stable week-to-week unless signals change


17. Expected Output from Kiro

Ask Kiro to:

  1. Break this into implementation tasks

  2. Propose a LangGraph state machine

  3. Define schemas & unit tests

  4. Implement Monte Carlo simulation

  5. Generate weekly memo templates

  6. Validate decision logic with test scenarios


Final Instruction You Can Give Kiro

“Build exactly what is described here. Do not add forecasting, sentiment, or speculative logic. Optimize for discipline, risk control, and explainability.”


Product Requirements Document (PRD)

Below is a formal Product Requirements Document (PRD) rewritten from the full conversation and requirements you defined. This is board / exec / senior-engineering ready, not a brainstorm doc.


Product Requirements Document (PRD)

Product Name

GTA Housing Decision Intelligence System (GTA-HDIS)

Geography

Greater Toronto Area


1. Purpose & Vision

1.1 Problem Statement

Home buyers in the GTA face a structurally complex housing market where:

  • Prices rarely crash cleanly

  • “Market bottom” is ambiguous and prolonged

  • Emotional and news-driven decisions cause suboptimal timing

  • Traditional tools focus on price prediction rather than decision asymmetry

Buyers lack a disciplined, risk-aware system to determine when buying is rational, not merely “cheap.”


1.2 Product Vision

Build a decision-support system that determines:

  • When the GTA housing market enters a plateau / bottom zone

  • When buyer leverage is structurally favorable

  • Whether an individual buyer should BUY / WAIT / RENT, given:

    • Market structure

    • Downside risk

    • Personal regret asymmetry

The system does not forecast prices. It optimizes for capital protection, behavioral discipline, and explainability.


2. Goals & Non-Goals

2.1 Goals

  • Detect price plateaus (not exact bottoms)

  • Quantify buyer negotiating leverage

  • Bound downside risk probabilistically

  • Align decisions with personal regret minimization

  • Produce auditable, repeatable decisions

  • Prevent emotional overrides

2.2 Non-Goals (Explicit)

  • ❌ No price prediction or targets

  • ❌ No “best time to buy” claims

  • ❌ No news or sentiment scraping

  • ❌ No reinforcement learning

  • ❌ No automated transactions

  • ❌ No speculative upside modeling


3. Target User

Primary User

  • End-user: Individual GTA home buyer

  • Risk-aware, capital-constrained

  • Medium–long holding horizon (≥ 5 years)

Secondary Users

  • Advisors

  • Analysts

  • Internal investment committees (future extension)


4. Core Product Principles (Hard Constraints)

  1. Risk > Regret > Preference

  2. False negatives preferred over false positives

  3. LLMs classify and narrate only

  4. All decisions must be explainable by deterministic rules

  5. System must remain stable week-to-week unless signals change


5. System Overview

5.1 High-Level Architecture


6. Data Requirements

6.1 Market Data (Monthly)

  • MLS Benchmark Price (GTA)

  • Condo vs Freehold price indices

  • Sales volume

  • New listings

  • Months of inventory

6.2 Rate Data (Weekly)

  • Bank of Canada policy rate

  • 5-year fixed mortgage rate (average)

6.3 Demand & Stress Indicators

  • Rent levels

  • Rent vs buy monthly spread

  • % of listings with price cuts

  • Days on market


7. Deterministic Signal Layer (No LLM)

Each signal agent:

  • Accepts structured inputs

  • Emits structured JSON

  • Performs no inference or narrative

Required Agents

  1. Rate Transmission Agent

  2. Inventory & Liquidity Agent

  3. Price Momentum Agent

  4. Affordability Compression Agent


8. Market Regime Classification (LLM)

Purpose

Classify how the market behaves, not where prices go.

Allowed Regimes

  • affordability_freeze

  • rate_shock_correction

  • liquidity_drought

  • demand_reacceleration

  • speculative_unwind

Allowed Cycle Stages

  • early_decline

  • mid_decline

  • late_decline

  • plateau

  • early_recovery

Constraints

  • Exactly one regime + one stage

  • Must cite which signals influenced the classification

  • Must not produce price targets or advice


9. Plateau Detection (Mathematical Core)

Binary Signals

  • Price Momentum Exhaustion (PME)

  • Inventory Stabilization (IS)

  • Sales Stabilization (SS)

  • Rate Pressure Neutralization (RPN)

  • Affordability Re-entry (AR)

Plateau Condition

Plateau Probability

Interpretation

Probability
Meaning

< 0.40

Not a bottom

0.40–0.55

Early formation

0.55–0.70

Buy-prep zone

> 0.70

Strong plateau


10. Buyer Leverage Scoring

Inputs

  • Months of inventory

  • % price cuts

  • Days on market

Output

  • Buyer_Leverage_Score ∈ [0,1]

Interpretation

  • < 0.45 → Seller control

  • 0.45–0.60 → Balanced

  • 0.60 → Buyer leverage


11. Monte Carlo Downside Risk Simulation

Purpose

Quantify downside tail risk, not upside potential.

Execution Conditions

  • Plateau_Probability ≥ 0.50

  • Buyer_Leverage ≥ 0.55

Outputs

  • P10 drawdown

  • P25 drawdown

  • Median outcome

  • Probability of negative equity

  • Maximum drawdown

Hard Risk Gate


12. Regret-Minimization Score (RMS)

Purpose

Bias decisions toward the mistake the user is least likely to regret, without overriding risk controls.

Definition

Interpretation

RMS
Bias

≤ −0.20

WAIT

−0.20 to +0.20

Neutral

≥ +0.20

BUY bias (if allowed)

RMS may tilt decisions but never bypass risk gates.


13. Final Decision Policy (Authoritative)

Priority
Conditions
Action

1

Plateau_Probability < 0.55

WAIT

2

MonteCarlo_P25 < -Risk_Tolerance

WAIT / RENT

3

Buyer_Leverage < 0.60

WAIT

4

Plateau 0.55–0.65 AND RMS neutral

PREPARE

5

RMS ≤ −0.20

WAIT

6

RMS ≥ +0.20

BUY_SELECTIVE

7

Plateau ≥ 0.65 AND RMS ≥ +0.35 AND Leverage ≥ 0.65

BUY_HIGH_CONVICTION

First matching rule wins.


14. Weekly Decision Memo (Primary Output)

Characteristics

  • One page

  • No charts unless signals changed

  • Conservative tone

  • Explicit triggers only

Required Sections

  1. Executive summary

  2. What changed this week

  3. Market state snapshot

  4. Downside risk (Monte Carlo)

  5. Regret balance (RMS + trend)

  6. Conditions required to act


15. Technical Constraints

  • Directed, acyclic LangGraph

  • Single shared typed state

  • No raw time series exposed to LLMs

  • Schema validation required

  • Unit-testable decision policy


16. Success Metrics

The product is successful if:

  • False bottoms are consistently avoided

  • Decisions remain stable under noise

  • Users can explain decisions post-hoc

  • Emotional overrides decrease

  • Risk exposure is explicitly bounded


17. Deliverables

  • LangGraph implementation

  • Deterministic decision table

  • Monte Carlo simulation module

  • Weekly memo generator

  • Unit tests for all decision paths


Final Instruction for Execution

Build exactly what is specified. Do not add forecasting, sentiment, or speculative logic. Optimize for discipline, explainability, and risk control.


Last updated