Inspiration
How much will rents grow next year? It sounds like a simple question, but a rising average can tell the wrong story. New buildings can change the mix of apartments being measured, and promotional offers can make a higher advertised rent translate into a much smaller effective increase.
The JADCO challenge asked us to forecast 2026 rent growth for Collection Équinoxe. I wanted to build a forecast that a property team could understand, question, and reproduce. That meant starting with a precise definition of growth and making every assumption visible.
What it does
Équinoxe Forecast is a reproducible Python notebook that estimates annualized effective rent growth for the same apartments, combining renewals and new-tenant leases while holding the apartment mix fixed at the end of 2025. Effective rent is the supplied rent measure after concessions and benefits; it is not an audited record of cash collected.
The notebook separates contractual and effective rent, breaks down results by building, bedroom count, and lease type, and compares five forecasting methods. These include a recent-growth baseline, internal trend models, and alternatives that incorporate public market indicators and asking rents.
The selected method produces a central 2026 forecast of 5.36%, reported as a weighted average of segment medians. An indicative range of 3.77%–6.95% shows the central estimate plus or minus historical mean absolute error, it is not a confidence interval. The notebook also exposes how alternative concession and provincial assumptions change the result.
How it was built
I used Python, pandas, NumPy, and Matplotlib in Jupyter to analyze the supplied lease, asking-rent, listing, and concession files. I matched consecutive leases for the same apartment with a verified property-and-unit key, preserved leading zeros in identifiers, and annualized changes using the actual time between leases.
I audited concessions against lease dates and treated one-time promotional credits over the relevant lease duration. Because the supplied effective rent already incorporates benefits, I avoided subtracting those credits twice.
To give sparse segments more stable estimates, I blended local history with broader province-and-lease-type trends. I compared internal forecasts with dated indicators from CMHC, Statistics Canada, Quebec's Tribunal administratif du logement, and Ontario. The central scenario follows the starter's assumption for regulated Ontario renewals, with an exemption alternative kept visible.
Historical evaluation reconstructs the information available before each forecast year, including the apartment mix and public data available at that cutoff. The final notebook exports aggregate forecasts and model parameters to JSON, alongside visual diagnostics and a presentation for the jury. Public data snapshots are embedded so the analysis can run offline with the supplied local files.
Challenges I ran into
The biggest challenge was making sure I was measuring actual rent changes. A convenient site-and-unit key could merge different apartments, so validating identifiers was essential. Changing building and bedroom mixes also made raw rent medians misleading.
Promotions introduced another trap: a credit described as monthly was mostly recorded as a one-time amount. I had to check what the records represented before using them. Separating renewals from new-tenant leases and documenting different provincial assumptions added another layer of judgment.
Finally, I needed to keep future information out of historical forecasts. I rebuilt each evaluation at its own cutoff instead of allowing later leases, units, or publications to influence an earlier prediction.
Accomplishments
I built a forecast that can be traced from the final number back to its assumptions, data transformations, and segment contributions. The notebook includes checks for matching keys, forecast chronology, weights, and the relationship between contractual and effective rent. Its exported results remain aggregated, with private source files kept local.
I also made model comparison honest. The chronological selection procedure achieved a 1.59 percentage-point mean absolute error over 2023–2025, matching the comparable baseline. The method selected for 2026 had only a small advantage on the selection history, so we present alternatives alongside the central estimate. Because the historical results had already been examined, this evaluation is a retrospective chronological simulation rather than an untouched holdout test.
What I learned
A useful forecast starts with a well-defined question. Comparing the same apartment over time, understanding concessions, and respecting information cutoffs mattered as much as choosing a model.
I also learned that additional data and complexity need to earn their place. Public market signals provide valuable comparisons and scenarios, but the historical selection favored the internal trend model with a stable effective-to-contractual rent ratio. That result reinforced the value of explainable methods and explicit uncertainty.
What's next for Équinoxe Forecast
I would validate the forecast against newly observed 2026 leases, extend the history, and reconcile concession records with accounting data. Confirming building-level regulatory eligibility and collecting more operational context would strengthen the assumptions.
A future interactive dashboard could let property teams explore buildings, lease types, and promotion scenarios without editing the notebook. The current deliverable provides the analytical foundation for that workflow.
Built with
Python · Jupyter Notebook · pandas · NumPy · Matplotlib · JSON
Log in or sign up for Devpost to join the conversation.