Back to work
Quantitative ResearchData AnalysisPython

Winter Demand in Toronto's Shelter System

Winter Demand in Toronto's Shelter System
Company
OCAD University
Duration
Nov 2025
Team
Solo
Role
Researcher & Data Analyst

A quantitative study built around a question: can Toronto's shelter system meet the demand in winter weather? Three years of daily shelter occupancy and climate data, cleaned and joined in Python, and the uncomfortable answer is no.

3 yrs

of daily shelter and climate data analyzed (2022–2024)

~99%

average occupancy — every season, every year

2

public datasets joined on date: City of Toronto + Environment Canada

The Question Behind the Winter Panic

Homelessness has intensified sharply in Toronto. Through CivicLabTO, I had the privilege of meeting with City staff and municipal officials — joining the conversations around municipal policy and service delivery, and studying the challenges the City is up against firsthand. Those sessions made the strain plain: a shelter system stretched by structural failures across housing, health care, and income support — and every winter, the same worry resurfaces that cold weather is what tips it over. This study tests that assumption against the data instead of taking it on faith.

Research question: Does winter weather significantly impact Toronto's shelter system?

To answer it with public data, I set two testable hypotheses — then let three years of numbers decide.

  • H1 — Colder days fill more beds. Days with lower temperatures will correspond with significant increases in shelter occupancy.
  • H2 — Winter runs tightest. The gap between available beds and actual occupancy will be smallest in the winter months.

Joining Shelter Occupancy to the Weather

A quantitative design using three years of daily shelter and overnight-service occupancy data alongside matching historical weather. Shelter data came from Open Data Toronto; weather from Environment and Climate Change Canada's Toronto City climate station (ID 31688). Everything was cleaned and processed in Python in a Kaggle notebook, with ChatGPT used to help design the processing steps and debug.

SourceFields kept
Daily shelter & overnight service occupancy (Open Data Toronto)DATE, TOTAL_CAPACITY_BED, TOTAL_OCCUPIED_BED, OCC_RATE, CAPACITY_GAP
Daily climate data (Environment and Climate Change Canada)DATE, TEMP_MIN, TEMP_MEAN, TEMP_MAX (°C)

Shelter records were standardized by date and aggregated from individual sites into a single city-wide total per day. Weather records were parsed, converted to numeric, and each day was tagged with a temperature-severity level based on the City of Toronto's Cold Weather Plan — which triggers an extreme-cold alert whenever the temperature hits ≤ –15 °C. A winter-plan flag (November–April) was added so winter and non-winter days could be compared directly.

Severity levelMinimum temperature
Normal dayAbove 0 °C
Cold day0 to –4 °C
Mild winter–5 to –14 °C
Extreme cold≤ –15 °C

What the Data Actually Shows

Occupancy is pinned to the ceiling — all year

Average occupancy sat at roughly 98–99% across all three years and barely moved: 98.2% in 2022, 98.9% in 2023, 99.1% in 2024. The system isn't near capacity in winter — it's near capacity constantly. There's almost no headroom left for cold weather to consume.

Figure 1 — Average occupancy rate by year (2022–2024). The demand baseline sits just below 100% every year.

Breaking occupancy out by temperature severity tells the same story. Across normal days, cold days, mild-winter days, and extreme-cold days, average occupancy stayed at or above 97%, with negligible variation between years. Colder categories do not fill more beds — because the beds are already full.

Figure 2 — Occupancy rate by temperature severity (2022–2024). The bars are effectively flat across every severity band.

But the capacity gap widens every winter

The seasonal signal shows up somewhere else entirely — in the capacity gap, the raw shortfall between people needing beds and beds available. In every year, the gap grew during the winter-plan months (November–April) versus the rest of the year: an overflow the system absorbs precisely when the weather is most dangerous.

Figure 3 — Average capacity gap, winter (1) vs non-winter (0), by year. Winter widens the shortfall by +27.6 beds in 2022, +13.1 in 2023, and +35.0 in 2024.
+27.6

additional beds of winter shortfall in 2022 (71.2 vs 43.6)

+13.1

additional beds of winter shortfall in 2023 (52.6 vs 39.5)

+35.0

additional beds of winter shortfall in 2024 (59.8 vs 24.8)

Finally, plotting minimum temperature directly against occupancy rate confirms there's no linear relationship to find. Occupancy stays saturated no matter how cold it gets — the cloud of points flattens against the top of the chart rather than climbing as temperatures fall.

Figure 4 — Minimum temperature vs occupancy rate (2022–2024). No linear relationship; occupancy stays saturated regardless of cold.

Both hypotheses fail — and that's the finding. Cold days don't raise occupancy (H1), because it's already maxed out. And the capacity gap isn't smallest in winter (H2); it's largest. Winter doesn't create the crisis. It exposes one that's there all year.

Can Design Fit More Beds?

If occupancy is above 98% in July and January alike, then seasonal surge measures — however necessary — are treating a symptom. The City's Winter Services Plan 2025/2026 adds roughly 1,275 additional spaces through warming centres, a new shelter, and 24-hour respite sites; real, humane, and worth doing. But the data reframes them as short-term relief for a system that is over capacity every single month, not just the cold ones.

Regardless of the weather, occupancy stays above 98% year-round. Winter doesn't cause the overflow — it makes an all-year overflow more dangerous.

Core finding of the analysis

That leaves one obvious design question, and it's the one I wanted to test rather than assert: if the system is permanently full, can we fit more beds into it? Not make shelters nicer, but to fit *more people*, while staying inside the City's own rules. A bed that breaches the standards isn't capacity; it's a violation.

The rules any added bed has to satisfy

Toronto publishes binding space requirements in the Toronto Shelter Standards (v5) and the Shelter Design and Technical Guidelines (2023). Together they set the floor — and the ceiling — on how densely a shelter can be packed.

RequirementStandard
Personal space per client in sleeping areas3.5 m² minimum (Toronto Shelter Standards)
Lateral separation between beds0.75 m minimum
Sleeping room area, 2–8 bed rooms4.6 m² per person (design guideline, per OBC)
Beds per sleeping roomMore than 8 not recommended
Bed groupings ('neighbourhoods')20–25 beds within an 80–90 bed shelter

The standards argue the case themselves: operators are "encouraged to exceed this standard by providing more space between beds and discouraging the use of large dorms." The City's own guidance points away from density, not toward it.

Three places a bed could come from

There are only three. I tested all of them against the 2024 bed-based occupancy data for the whole city — the same dataset behind the figures above.

42

empty in-service beds on an average night — 0.9% of funded capacity

91

beds funded but sitting out of service — 2.0% of funded capacity

99.1%

occupancy of the beds actually in service, city-wide

  • 1 — Empty beds already in service. Across a system of 4,655 funded beds, an average night leaves just 42 unoccupied. There is effectively nothing to reclaim here.
  • 2 — Funded beds that aren't in service. Toronto funds 4,655 beds but only about 4,564 are actually available; roughly 91 beds a night are paid for and unavailable. This is the one genuine recovery opportunity — and notably it sits at 91 in winter *and* non-winter, so it is a permanent leak, not a seasonal one.
  • 3 — Extra beds squeezed into existing floor space. The only remaining option, and the one bounded by the 3.5 m² rule.

Testing the third option against a real shelter

Maxwell Meighen Centre, 135 Sherbourne St — a Salvation Army men's emergency shelter and one of the largest single sites in the city. In 2024 it ran 264 funded beds with an average of 263.8 occupied, and never once fell below 260. It is, in effect, permanently at capacity.

Its floor plans aren't public, so rather than estimate them I worked backwards from the standard, which needs no assumptions: to hold 264 beds lawfully, its sleeping areas must already total at least 924 m² (264 × 3.5 m²). Every additional bed demands another 3.5 m² of sleeping area, *plus* the 0.75 m separation and the circulation space to reach it. Twenty more beds means finding 70 m² of unused floor — inside a building that has been running at 100% occupancy every night of the year.

This is the ceiling. Space at 3.5 m² per person is the *minimum* a bed may legally occupy, not a target to optimize toward — so there is no clever layout that yields more beds from the same floor. Density has already been spent.

What the test actually proves

Adding every recoverable bed together — the 42 empty and the 91 out of service — returns roughly 133 beds, about 2.9% of funded capacity, and the third option returns none without new floor area. Set that against the need: in 2024 the winter capacity gap widened by 35 beds at the city-wide daily average in Figure 3, and thousands remain outside the system entirely. A 2.9% recovery does not close it.

So the design conclusion is a negative result, and a useful one: you cannot fix this by adding beds. The system is at its lawful spatial limit. The only remaining lever is flow — helping people leave faster.

That relocates where design earns its keep. At 99% occupancy a shelter is a queue with no outlet, and adding beds to a queue doesn't shorten it — throughput does. Which means the measurable design targets are the things that shorten a stay: secure storage so people can hold a job, private space for case-management conversations about housing, and sleep quality and health good enough that someone can function during the day. Fix the 91 out-of-service beds, then design for exits.

Fully resolving homelessness still demands long-term, systemic reform across housing, health, and income. But this is the operational-level contribution design can honestly claim — not more beds, which the standards forbid, but faster exits, which the standards actively reward.

Sources & Further Reading

Interested in working together?

Let's talk about your project.

Get in touch
Coming soon
Inspired by Fara Yan