Skip to main content

Modeling my first-year finances

·831 words·4 mins
Author
Ghassan Shahzad
Table of Contents

A notebook that models and analyses my personal finances for my first-year as an incoming University of Toronto, Faculty of Arts and Sciences student. Modeling on Pandas rather than a spreadsheet offers a few benefits on top of providing practice: it enables the application of some advanced statistical techniques not easily accessible in Excel, some advanced visualisation libraries, and so on. I have not utilised most of these features yet. I intend to extend this analysis further with a Monte Carlo simulation (as opposed to scenario based modeling) in the future, for instance.

Structure
#

The notebook consists of cost, revenue, and net dataframes for base, pessimistic, and optimistic forecasts. In total, there are 9 such, ‘core’ dataframes. Costs are categorised largely according to the UofT Financial Planner. So too are revenues. I estimated OSAP and UTAPS grants and loans, and zeroed scholarships and family support for simplicities sake. My main revenues aside from these are: summer work, expressed as a starting balance added to my running balance in the net dataframes; part-time work, expressed as a constant revenue source. More on these later.

NetRunning Balance
Date
2026-09-011144.06424.0
2026-10-011922.08346.0
2026-11-01-1078.07268.0
2026-12-01-1078.06190.0
2027-01-01-1000.05190.0
2027-02-01-1078.04112.0
2027-03-01-1078.03034.0
2027-04-01-1078.01956.0
Table 1.1: Net Dataframe for Pessimistic Scenario
Fig 1.1
Fig 1.1: Net Monthly Revenue by Scenario

After inputting all the relevant data and consolidating it into the three main models, I got to the core of my analysis: the use of aggregate metrics to analyse my forecast finances. I judged my finances by the following metrics:

  • Final balance
  • Minimum balance
  • Maximum deficit
  • Worst month
  • Months negative
  • Required buffer
Final BalanceMinimum BalanceMax DeficitWorst MonthMonths NegativeRequired Buffer
Base13948.011927.0-151.02026-11-01 00:00:0000
Optimistic22140.015415.0521.02026-11-01 00:00:0000
Pessimistic1956.01956.0-1078.02026-11-01 00:00:0000
Table 1.2: Metrics by Scenario

I also performed a sensitivity analysis on the two main variable revenues in my budget, part-time and summer work. The intention was to determine how much I could bend these variables and stay in the green. I visualised this in heatmaps, and a feasible frontier curve.

Fig 1.2
Fig 1.2: Heatmap of Minimum Balance by Summer and Part-time Earnings
Fig 1.3
Fig 1.3: Heatmap of Months Negative by Summer and Part-time Earnings
Part-time EarningsSummer Earnings
006500
11005500
22005000
33004000
44003000
55002500
66001500
77001000
88000
99000
1010000
Table 1.3: Feasible Frontier

The final aspect of this notebook was a residence cost, and then weighted, comparison. For the former, I manually input the costs for each residence available to me to see how they would mesh with my broader budget.

ResidenceMinimum BalanceFinal BalanceMonths NegativeMax Deficit
3New College24062406.00-3014.5
0Woodsworth19561956.00-1078.0
2Knox14751475.00-2183.0
6University College823823.00-3806.0
1Chestnut-2559-2560.04-3797.0
5Trinity-5196-5197.04-6816.0
4Oak-6962-6963.04-7699.0
Table 1.4: Key Metrics by Residence

After that, I had three LLMs (Claude 4.6, GPT-5.3, and Deepseek) rank the (first four) viable residences across a few similar categories. I got the following results:

CostRoom & AmenitiesCommunityFoodLocation
Woodsworth21313
Knox34434
UC43141
New College12222
Table 1.5: LLM Rankings of Residences by Category

I weighted these categories according to my preferences, and then derived a ranking of residences.

Weighted Ranking
Woodsworth1.55
New College1.95
UC2.75
Knox3.75
Table 1.6: Weighted Ranking of Residences

Analysis
#

What lessons did I derive from this? I got a viable ranking of residences, which I have used in my StarRez application. OSAP and UTAPS applications ask the applicant for estimates regarding, among other things, their starting assets and work earnings expectations throughout the school year. I have a model that can inform the values I give when asked for such details. Not to mention that I have an idea of how hard I’ll need to actually work, this summer and the school year, in order to stay afloat, which is extremely useful. I also have a nice budget template, something I can refine based on my actual data even better in my second year.

Generally, my finances are viable so long as I earn either $1000 per month during the school year, save up $6500 this summer, or (in the middle) save $2500 and earn $500/month during the school year. This is all according to my pessimistic cost forecasts, so this is a worst case analysis.

It does, however, use OSAP and UTAPS estimates that are not guaranteed. I will have to update these with actual figures once I’ve applied. Moreover, it treats OSAP loans as if they were revenue - loans are liabilities.