Dashboard Login

Enter the dashboard password to continue.

Invalid password. Please try again.

Rohit Communities — Market Analytics

Source: CREA DDF (listings.benchmetrics.app) — active listings only. Grain: one count per report × city × area × price band × garage, per weekly snapshot. Active listings are a stock at snapshot time, not a count of new listings.

Raw Data

Date City Area Price Range Garage Count

Source: CREA DDF weekly snapshots. One row per snapshot date × filter cell; counts only — listing identity is not retained on this side.

Loading data...

No data available for the selected filters. Try running a data collection first.

Supply: CREA DDF active listings, month-end (latest snapshot in each calendar month). Sales: SK MLS sold records via sk-sold-feed, by month of close. Joined at city × area × price band × month; the current, still-accruing month is excluded.

Period comparison

Market Balance — Latest Month

Area Price Band New Active Sold MOI Absorption Sale/List Med. Sold Avg Sold Med. DOM Avg DOM Sold $/sqft Active $/sqft

Definitions, segments & limitations

Metrics

  • Months of Inventory (MOI): active listings ÷ that month's sales. Lower = tighter market. Under ~4 is a seller's market.
  • Absorption / Sell-Through: sales ÷ active listings for the month. Higher = faster-moving. Over 100% means more sold in the month than were standing at month-end.
  • Sale-to-List: sold price ÷ original list price. Over 1.0 = selling above ask.
  • Active vs Sold $/sqft: asking $/sqft of current supply vs achieved $/sqft of sales.

Segments

  • Competitive (Single Family): Residential, PropertySubType Detached/Attached, 3+ beds — mirrors the competitive listing reports.
  • All Listings: every property type, no filter.
  • Detached (House): Residential sales where BuildingType = "House".
  • Townhome: Residential sales where BuildingType = "Row/Townhouse".
  • Semi-Detached / Duplex: Residential sales where BuildingType = "Semi-Detached (1/2 Duplex)" or "Duplex (both units)".

Property-type segments come from the sold feed's BuildingType field. The coarse Detached/Attached PropertySubType used by "Competitive" can't tell a townhome from a house — BuildingType can, which is why these segments are separate.

Product segments

  • Freehold / Condominium come straight from the sale record and need no interpretation — the field is populated on 99% of sales with exactly those values (plus a little leasehold).
  • New construction / Resale is a stated proxy, not a flag: the feed has no new-construction marker, so a sale counts as new construction when the home was built in the year it sold or the year before. It measures new stock reaching the market rather than strictly first sales.
  • Attached / Detached garage is what the parking description actually says. The guidelines ask for front-attached versus rear-lane, which is usually the same distinction in Saskatoon and Regina new builds — but the feed has no lane field, so these are labelled for what they are until that mapping is confirmed.
  • All of these are sales-side only: the listings feed carries no ownership title, no year-built segmentation of its own and no parking detail, so Active, Months of Inventory and Absorption are blank for them.
  • Not offered, and why: lot width is recorded on about half of sales, so a lot-width segment would silently drop the other half. Possession status is recorded on every sale but in nearly 500 different spellings of a handful of meanings, so it needs normalising first — and the client’s real interest there is builder quick-possession stock, which is not something MLS records.

Garage

  • With Garage: the sale's parking description names a private garage (e.g. "2 Car Attached", "1 Car Detached").
  • No Garage: everything else — "No Garage", surface "Parking Spaces", "Underground Parking" (parkade), or a blank parking field.
  • Any: both combined (With + No always reconcile to Any).

Reporting periods

  • All five periods are anchored to the latest complete month, so a scorecard and a table row can't disagree about which month "current" means.
  • Flows are summed over the period — new listings and units sold. Stocks are not: 200 listings standing in each of three months is 200, not 600, so active listings is the month-end figure for the most recent month in the period, and the table names which month that is.
  • Ratios are re-derived from those period totals. Months of inventory for a year is the year's active over the year's sales — never an average of twelve monthly ratios.
  • Per-sale figures are weighted by each month's sales, so a 300-sale month counts for more than a 12-sale one. That applies to sale-to-list, days on market, average price and $/sqft.
  • Medians can't be rebuilt from monthly or per-band medians — the median of a year is not the median of its months' medians. They're shown where they're exact and left blank where they aren't; the average carries the period figure instead.
  • Change is shown in the right unit. Counts and prices move in percent; ratios like months of inventory, absorption and sale-to-list move in points, because a percent change of a ratio invites being read as a percent of the market.
  • Year-over-year on supply metrics isn't available yet. Active listings, months of inventory and absorption need twelve months of supply history; sales metrics have the full history and compare year-over-year today. Where the comparison can't be made it says so rather than showing a blank or a zero.

New listings vs active listings

  • New listings is a flow — how many listings came to market during the month. Active is a stock — how many were standing at month-end. They are deliberately never added or blended: a month can bring 300 new listings while active inventory falls, if 350 sold.
  • Counted from both feeds, because a listing that came to market in a month is now either sold (so it's in the sales feed, with its original list date) or still on the market (so it's in the active feed, with its entry date). Those two states can't overlap, so the sides simply add. Hover a New figure to see the split.
  • A recent month leans on the still-active side and will shift toward the sold side as those listings resolve. The total stays roughly stable; the mix doesn't.
  • Listings that expired, withdrew or were cancelled are missing. Neither feed keeps a listing that left the market without selling, so new listings is a slight undercount. There is no way to recover those from the data we have.
  • Banded on the price the listing was asking, not what it eventually sold for — this is a measure about coming to market.
  • Months before the sales history begins are cut off rather than short: a listing from early 2024 only appears if it sold late enough to fall inside our sales window. Treat the first months of the series as truncated, not quiet.

Average and median

  • Both are shown for price and for days on market, because they answer different questions. The median is the typical outcome; the average is pulled by extremes.
  • The gap is largest on days on market: a handful of listings sitting for 200+ days lifts the average well above what a typical seller experiences. Where the two disagree sharply, the median is usually the fairer read.

Price bands

  • Contiguous and fixed: 300K and under · 300–400K · 400–500K · 500–700K · 700K–1M · 1M+. Banded on sold close price, and on list price for active supply.
  • Selecting bands re-derives the scorecards from the selected bands only — Months of Inventory and Absorption are recomputed as total active ÷ total sales across the selection, never averaged across bands.
  • 400–500K is newer than the others: the original count-based supply cube had no such bucket, so this band only pairs against supply for months the row-level active store covers.

Geography

  • City-wide covers the whole city, not the sum of the tracked areas below it — most sales happen outside the tracked new-build communities.
  • Areas are matched from the SK MLS neighbourhood field on each sold record (e.g. Brighton SA, Westerra RG).
  • Emerald Park / White City is a composite: Emerald Park files under the city "Edenwold Rm No.158" while White City is its own city, so both are folded together to match how the reports treat them.
  • Neighbourhood is populated on roughly two-thirds of sold records overall — close to complete for detached homes in Saskatoon and Regina, sparser for rural and non-detached. Area-level sales can therefore under-count; city-wide figures are unaffected.

Reporting standards

  • One cut-off, shown at the top of the page. Supply is taken at month-end — the latest snapshot within each calendar month. Sales are counted by month of close.
  • Complete months only. The current month is excluded while it is still accruing: partial sales would inflate Months of Inventory and deflate Absorption. "Latest month" therefore means the most recent complete one.
  • Definitions are held constant month to month — same geography, same segments, same bands — so a change in a number is a change in the market, not a change in the query.
  • Thin cells are flagged, not hidden. A † marks a row with fewer than 10 sales in the month; its ratios are directional at best. Amber notes above the chart flag anything else affecting the current selection.
  • Blank (–) means not applicable, not zero. Where supply cannot honestly be paired with sales, the supply-side columns are left blank rather than divided against a mismatched denominator.
  • Absorption above 100% is real, not an error: more homes sold during the month than were standing at month-end. It happens in fast-moving bands.
  • Implausible sale-to-list ratios are excluded. The MLS source contains occasional keying errors in the original asking price — a decimal in the wrong place, or a digit dropped — which produce ratios like 8,000× and wreck an average. Sales closing below half or above double their original asking price are left out of the sale-to-list figure (about 0.3% of records). They still count everywhere else, including sales volume.

History & coverage

Loading data coverage…

Limitations — please read

  • Property-type & garage segments are sold-side only. The supply/active feed (CREA DDF) is single-family-only and carries no BuildingType or garage breakdown, so for any segment other than "Competitive"/"All Listings" — or any garage filter other than "Any" — Active supply, Months of Inventory and Absorption are blank (–). Sold-side metrics (median price, DOM, sale-to-list, sold $/sqft, sold count) are always shown.
  • Thin cells. Semi-detached/townhome volumes are small (city-wide, tens per month; far fewer per area/price band). Treat single-digit medians and ratios as directional, not precise.
  • BuildingType coverage. A minority of sold rows have a blank BuildingType and won't fall into any property-type segment (they still appear in "All Listings").
  • Garage inference. "With/No Garage" is inferred from free-text parking descriptions, not a dedicated flag; unusual phrasings may misclassify.

Supply from CREA DDF (weekly snapshots); sales from SK MLS sold records. Joined at City × Area × Price Band × Month. The 400k–500k band and Active $/sqft are available for recent months only.

Loading market data...

No market-balance data for this selection yet.

City comparison

Communities — ranked

Loading comparison data...

No comparison data for this selection yet.

Loading insights...

No insights have been generated yet. They are produced weekly after the data sync.

Builder totals

Series Sales (all months) Share of market Months with sales Busiest month Median sold price Avg DOM Sale/List Sold $/sqft

How builder attribution works

Where the builder comes from

  • Each sold record carries a seller of record. On new construction that is the builder's corporate entity, which is the only builder attribution the MLS feed contains — there is no builder field.
  • The field is populated on every sold record, so coverage is limited by name matching, not by missing data.
  • Builders file under many spellings — one of them appears six ways, including a misspelling — so matching runs on a normalised name against an explicit list of known entities.
  • A name only counts if it looks like a business. Several builder names are also common personal names, and a resale is owned by a private individual; without that guard, individuals get counted as builder sales.

What these series are

  • Individual builders — sales where the seller resolves to that builder.
  • Competitor set — the six named builders combined, aggregated from the underlying sales rather than from their individual series. Medians cannot be averaged.
  • All sales — every residential sale, as the market baseline.
  • Everything is residential only, baseline included: builders sell homes, so a baseline containing farm, commercial and vacant land would bias the comparison against them.

Limitations — please read

  • No supply-side metrics, ever. Active inventory, months of inventory and absorption are absent because the supply feed carries no owner field. There is no builder-attributed standing inventory to divide by, and dividing by the market's would be a mismatched denominator.
  • This is closings, not releases. A sale appears when it closes, which can be months after the buyer signed — so this measures completions, not current sales pace.
  • Volumes are small. The named builders together are under 2% of residential sales. One builder's month is often single digits, so month-to-month moves in its price or DOM are mostly noise. Totals over many months are the reliable read.
  • The most recent months under-report. Sales are still being filed; the feed re-pulls a trailing window each week, so recent months fill in over time.
  • Entity edge cases are listed against each series where they apply — merged entities, joint ventures, and builders whose volume is too low to chart. Hover a series chip to see its note.
  • Sale-to-list excludes keying errors in the source's original asking price (ratios below 0.5 or above 2.0, about 0.3% of records). Without that filter one mistyped listing moved the market-wide figure from 0.96 to 1.22.

Loading builder data...

No builder data for this selection yet.