Thanks for the response. The model is something I've been developing to supplement an educational website I've been working on. It ultimately produces balance sheet metrics for a life insurance company based on hypothetical portfolios of assets and liabilities.
Admittedly, I've got c. 10k assets and 10k liabilities being valued and re-valued under various different bases. I've done what I can to optimise (e.g. avoiding python loops at all costs and instead relying on numpy matrix operations), but I suppose one run of the model is still running a lot of calculations (albeit with each individual calculation being fairly basic). No DB queries, but data is stored in csv files (uploaded to PythonAnywhere along with my code).
I don't expect to get much traffic to the site, since it's pretty niche. I also don't expect to monetise it, so there are constraints on spending on computing power since it's just coming out of my pocket. That said, I'm happy to spend a bit since it's basically a hobby.
Perhaps if I can develop a status bar that updates the user with the progress of their run then the run times will be less of an issue since they will know that it's still running and they just need to be patient.