Muschamp Rd

Certificate in Python for Finance

August 22nd, 2025
Dog with book

In September of 2025, I officially start my next online certification program, the Certificate in Python for Finance. The course consists of 350+ hours of video, 2750+ pages of text, 85,000+ lines of code, in 500+ Jupyter notebooks. You also get access to seven eBooks related to using Python in Finance. If you guessed this program is not the cheapest option online you’d be correct.

I previously read one of Yves Hilpisch’s books back when I was unemployed or had just started working in Finance. A lot has happened since then including COVID-19. I still work for the same firm in Calgary but there is a renewed push to use AI in Finance and although that is not the book I previously read, I had been following Yves on Twitter and was on his mailing list for years, so was familiar with the courses he also offered.

The CPF, however looked like a lot of work, and my day job of course is demanding. Although, I’d already learned a fair amount of Python, I’m just not leveraging in my day job. However, anything involving AI, machine learning, or natural language processing is getting pushed hard at the firm and in the industry. So as we have a professional development budget which I had not been touching, it was hinted strongly I should do something.

Previous Adventures in Python

In 2018, I finally passed the third and final CFA® exam. The running joke online back then was as soon as you finished studying for the CFA exam you started learning Python, so of course I did. Python was also appearing on many, many job postings and I was definitely looking for a new job in 2018.

Eventually, I did find a new job but I had to relocate halfway around the world to do so. While all that was going on I continued to learn Python eventually reading a book by Wes McKinney. I definitely read Wes’s book before I read any of Yves’s books. Wes has a lengthy biography on his website and he must speak at conferences, however his books and online tutorials will have to suffice if you want to learn more about pandas from its creator.

After reading “Python for Data Analysis”, I must have moved on to financial analysis which is when I took my first online Python course through Udemy. It was about that time, when I read one of Yves books. And during this period I finally got a new job and relocated to Calgary where Python largely got put on hold as there was a large project involving moving the firm from things like Advent Portfolio Exchange, FactSet, and Charles River IMS to SimCorp Dimensions. I also made a lot of Power BI dashboards and wrote a lot of SQL, but almost no Python code.

Having already completed one online course and not even mentioning it on my resume for six years, I enrolled in another certificate leveraging Python, this time offered by the CFA Institute as I was being strongly encouraged on multiple fronts to do more professional development and to get on the AI bandwagon.

Artificial intelligence, machine learning and natural language processing were some of the focuses of the Data Science for Investment Professionals certificate I just completed. This was actually my 2024 professional development as I started this certificate in October of 2024. The Data Science for Investment Professionals certificate consists of five online courses and I estimated it took me well over 100 hours to complete them all. The other program I considered last year was the CPF. So I doubled down on Python for Finance.

Preparing for the Program

I probably should have prepared even more for this online course. I was strongly encouraged to do an introductory online course on Yves’s platform and I intend to. It seems to be 35 videos long and likely covers some of the material in the books I’ve read and the previous two online courses I’ve taken.

The online learning platform is of course password protected, but Yves and the CPF program are on social media and prior to registering I did watch one or two free online videos where Yves introduces some of the material that will be covered, explains why the material was chosen, and how the online learning platform works. He refers to his online learning platform as “the Quant Platform” if you watch the two videos below.

Python for Finance Bootcamp

When you register for the program, Yves suggests you prepare by watching 90 hours of videos. The first videos you should watch are what he refers to as the PFF Bootcamp with PFF being “Python for Finance”. I actually couldn’t get the first video to play, but every single online course I’ve ever take has had technical problems. You can contact Yves or someone on his team via the Internet and eventually I and others could get the videos to play.

The PFF bootcamp currently consists of three videos and they are long, the first video covers Python syntax but also might briefly touch on matplotlib, this is the one I only reviewed the code for. There are Jupyter notebooks and often other files you can download or you can run the code on the online learning platform. The PFF Bootcamp is an overview of the material covered in the course and is similar to the videos above. It is a lot like pair programming as you sit there and watch Yves type the code on the screen. I didn’t type along with him in the second and third video, but maybe I will in the future. However if you get the data and code at the end of class, you can modify that version should you be so inclined at a later date.

I did watch the second and third video and they go more in depth. The first assumes you know almost no Python syntax. The second video covers NumPy and the ndarray which is faster than the native list and tuple objects in some instances. NumPy or Numerical Python has a lot of useful features for financial analysis as I and others have covered before. You definitely use matplotlib to create line graphs and histograms. The third video focuses on pandas which has another datatype known as a DataFrame. This is very useful for financial data such as time series. Also covered is SciKit-learn aka sklearn which is used in the PFF Bootcamp for machine learning and backtesting. The algorithm we look into is for evaluating American Puts using OLS Monte Carlo simulations and was first described in a paper by Longstaff and Schwartz.

The last thing covered was actually network programming which I haven’t done since I was an undergrad. It is definitely a lot less code to set up a client and server that communicates over TCP using a library called zmq. I had to do it in Java and I remember my client/server had to have a UI which I implemented in Swing. That code may still be on my laptop or is definitely on a floppy somewhere. I got a B- in CSC 450 apparently, but in my defence that was the first course I ever took in Java and those two assignments were the first Java code I ever wrote. They were my “Hello World”. While I was a student, UVic kept changing programming languages. Now the course appears to be CSC 361, it isn’t even a senior elective anymore like it was in the 90s.

Kickoff Session September 2025 Cohort

Yesterday, September 10th, was the kickoff to the final cohort of 2025 for the CPF. I got up at 6 AM to tune in and it is very much like the videos you see above from YouTube. Obviously there was some variance he shared a recently released paper from Brynjolfsson, Chandar, and Chen. I’d already updated the schedule and for the next three weeks will be focussing on six Finance with Python lessons. My secondary focus will be to work through PFF Basics. These two modules might contain a lot of review for me. Finally a new module is being introduced on Thursday and that will focus on Deep Learning.

After the first three weeks you can specialize more and I will focus on Python for Asset Management as well as continuing to learn about Deep Learning and AI in Finance. There are also modules on agents and generative AI. Basically everything that is new and trendy I will study because I already have done a discounted cashflow and a Monte Carlo simulation before in Python and definitely in Excel.

You can run the Jupyter notebooks online, though some code you must run locally. I actually have taken to typing along on my local machine, though you don’t need to type out everything as at the end of class the code is uploaded somewhere where you can hopefully download it. I just find that by typing along I might pay attention better. When the lessons are pre-recorded you can also pause the video if you can’t type fast enough.

Finance with Python

Officially I am a quarter of the way through program, but I have of course fallen slightly behind. I did finish the main course, Finance with Python, and of course did additional studies including attending the new Deep Learning classes. I have not done all the tutorials or exercises or readings. I’ve been focusing on watching the videos and coding along. The fourth week was hard to find time and energy to study, but now that is Sunday I am trying to catch up.

Next weekend is Thanksgiving here in Canada so I likely will fall further behind, which is why I’m not really holding myself to a strict 16 weeks to complete everything, which even Yves likely thinks is a challenge. Instead I’ll try to keep up with the core classes and live lessons and then allow myself more time to complete the final project and cover additional material. I plan to start the AI in Finance soon and actually ordered the book, so I can read along and reduce my screen time.

I did want to give a quick update acknowledging I’m grinding along even if I lack all the time and energy necessary, progress has definitely been made and I wanted to try and add a code snippet to this WordPress post as it was one of the algorithms or techniques we’ve been studying the last few weeks, Least-Squares Monte Carlo Valuation. You’ll of course need to import the right libraries and declare all the variables but this is the penultimate Jupyter notebook cell.

# Least-Squares Monte Carlo Valuation (LSM algorithm)
V = h[-1]
for t in range(M - 1, 0, -1): # start at the second but last, backwards induction
    reg = np.polyfit(S[t], df * V, deg=5)
    C = np.polyval(reg, S[t])
    V = np.where(h[t] > C, h[t], df * V)

Python for Asset Management

Based on my current job, the most obvious stream to initially focus on is asset management. I do plan to cover Artificial Intelligence in Finance, I even bought the book. However, with Thanksgiving and having been sick for over a week, I had to be even more realistic how much I can accomplish in a given week or weekend. This most recent weekend I managed to watch two videos and complete an actual tutorial assignment, along with running various personal errands. It will be hard for me to do much more than that on an average weekend.

I’ve also stopped typing out all the code. There are necessary changes to the code featured in the videos that must be made due to the advancement of Python libraries and the depreciation of functions and methods. So rather than debug and investigate all these myself I use Yves’s fixes. Now I generally just add additional comments to the code, which greatly speeds things up now that the code is denser and a single typo can be extremely difficult to spot. Maybe I’ll be forced to type along again…

My solution to the assignment must have been sufficient. It was daunting at first but I reviewed example code and looked up areas of Python I was less familiar with such as Class and Static methods, I’m not sure I’ve even created a Class before in Python, certainly not recently, but all that was necessary for me to complete the assignment. It took me most of a day, at least an entire afternoon, to complete the assignment and there were a few more things I have improved since. I took the exact assignment text from the email and put it into a large language model and it spit out some convincing looking Python code which I’ve yet to test. I suspect online courses like offline courses have a lot of issues with people getting agents and LLMs to do their assignments.

Overlap with previous studies

As someone who has done a computer science degree, an MBA, completed the CFA® Program, and studied Python and Data Science before, I knew there would be materials I’ve seen before but the program has so much material and new videos seem to be added most weeks, there is more material than I can cover in a limited amount of time. For instances, the most recent lesson I completed covered portfolio optimization techniques first documented by Black and Litterman in 1992.

Other topics covered recently include:

During this course I’ve made no further progress updating my blog’s taxonomy. In fact I couldn’t even update my blog yesterday and I was not happy. I don’t think I’ve played my new guitar and I certainly haven’t had any time for other hobbies like gaming or miniature painting. Maybe next year will be better, but it is hard to be optimistic at this time. My plan is to keep my head down and grind away. I’ve booked my flight home for Christmas and will book a vacation in March to return to Japan.

Practice Project and Final Project

At some point I got an email informing me I had to do a practice project. I stuck with asset management and my solution must have been good enough as I was encouraged to submit my proposal for my final project. Alas that was deemed “a bit like a buffet, a bit of everything but nothing really delicious for my taste.” So I was encouraged to focus on using reinforcement learning to improve portfolio optimization. Alas that was one of the books and classes I did not complete by December.

So after taking a break for Christmas I will attempt to absorb this new material and revise my proposal to be more specific, though all the features I proposed in the class are needed in my opinion so I may code them up eventually. However as it is now 2026, this will be one of the last updates to this blog post as I will write a separate post detailing my final project when I’m able.

Progress has been slow

I’ve done a lot of reading and I actually spent a lot of time trying to get the code in Reinforcement Learning for Finance to run on my local machine. Apparently it requires TensorFlow 2.10 which you can no longer install with pip but worse Google Colab where my final project must run is also using TensorFlow 2.19. Yves must be aware of this as he seems to have written his latest AI code to use PyTorch, this is the same conclusion I and Aurélien Géron have come to. Aurélien is the author of the most recent book I’m reading. I definitely don’t want my final project to only run on an old version of TensorFlow, PyTorch seems to be where people are moving, at least most people who write O’Reilly books.

Using Google Colab is another thing Yves and Aurélien seem to agree on, this offloads the maintenance of an online coding environment to a corporate juggernaut but forces you to use the libraries they include in their online coding environment. PyTorch was invented by Meta *cough* Facebook *cough* but is supported by Google though they also have their own framework called Jax.

While trying to find answers online to some problem I was facing in Python for Finance, I found a video of Yves talking more about Reinforcement Learning for Finance. Then even more recently he released a new video about the Certificate in Python for Finance so hopefully I can include both below. I must make more progress as I still plan to travel to Japan in March 2026 and had hoped to have this course finished before then.

The Grind is Real

Now that more than half of February has passed, I’m still not finished my final project. I have gotten many features I wanted to implement working in various proof of concept jupyter notebooks. And tonight I plan to review the video and code for using Reinforcement Learning to allocate funds between three assets which I must extend and incorporate into my notebooks. After that there is one more technique I want to explore more and of course various calculations I want to perform to measure portfolio risk. This is still a lot of work to complete by March 3rd when I’m scheduled to fly to Japan.

I’m certainly not giving up, but the reason I wanted to update my post about doing a professional development certificate in Python for Finance is something I read on LinkedIn. Before I officially decided to do this certificate I did some research, certainly more research than I did when I agreed to do the CFA Institute’s Data Science for Investment Professionals certificate. Another program I learned about with a very similar acronym is the CQF and I’ve been kicking around the idea of doing that program next, perhaps starting in June.

Alas I’m exhausted, and I definitely think there are diminishing returns to doing these professional development certificates. I can’t say it has been worth it, but I do want to position myself better for the future as AI is coming for a lot of jobs, so if all you do in yours is forward on emails from your boss to someone else to get the data and perform the calculations in Excel and then you put the results in PowerPoint or another format, maybe AI can do your job.

It turns out Yves is also teaching part of the CQF program and I’ve already put in so much time, putting in another six months or a year shouldn’t kill me. I do think I can complete my current program even if I fail to do so before March 3rd. That remains my highest priority, but below is some articles on finance professional development certificates I’ve read recently, as there certainly seem to be more than there were twenty years ago.

Submitted my final project

As mentioned at least twice previously, I travel to Japan in March for a long overdue vacation. I worked furiously on this Python for Finance final project, working on it many times late into the night and of course on every weekend since my birthday. All told, I worked on this project and various prototypes and proofs of concept for almost three months. I still don’t know if it is good enough, especially as my conclusion is I should have done the whole thing differently. Instead of optimizing for the Sharpe Ratio, I think my Investing Agent and his neural network should instead be trying to increase the Information Ratio as that would incorporate direct competition with the benchmark.

Unfortunately, hindsight is often 20/20. I did look at the code and I would have to modify multiple methods but even more so I’d have to retrain, retune, and basically do the project over again to optimize for Information Ratio. It is not something I have the energy for the Sunday before I fly to Japan. We’ll see what Yves says, because there is no guarantee the Agent will perform better trying to increase Information Ratio instead of Sharpe Ratio, it was just a theory I had after spending months studying and coding in the Python for Finance certificate program.

I did use Python to produce a lot of graphs, but even that was ultimately disappointing. In Google Colab the bigger graphs did not render well in one box, so I had to make them all smaller. Then after doing all my graphing with matplotlib, I suddenly got the idea to try using seaborn as it can quickly produce good looking graphs, but ultimately the interactivity of plotly may be the way to go. But again on a Sunday before submitting my final project changing every single graph was not something I had the energy for. Like I said several paragraphs back and multiple times to multiple people. I’m exhausted.

I’ll have to think long and hard before agreeing to do more professional development. My MBA was a terrible experience, the worst of my life. The CFA Program took me way longer than three years. The next certificate I did from the CFA Institute was supposed to take 90-100 hours but of course I spent way longer studying for a test no one cares about. This program was estimated to be completable in 16 weeks by many participants. I spent almost twice as long and most of that time was spent just on the final project. Hopefully, you like the graphs. I’m finally going on vacation.

The final project has a lot of requirements, two of them were finally adding a README.md file to my github repository and trying to ensure all the code was done to the PEP8 standards. I’ll find out how I did when I get back from Japan, though I’ll probably check my email at some point.

Wrapping up

I had hoped to complete this online professional development certificate program in a timely manner, though it took me longer than sixteen weeks, which I did expect. I’m not sure how much more I’ll blog about it, but I’m trying to be disciplined in covering the material and taking notes, but there is a lot of material online about this course and Python in general since I first started studying Python for Finance. I hope to learn some new tricks with a renewed focus on AI and machine learning.

WordPress might be better at including code samples than it was 20 years ago. I really did try studying as close to daily as I could manage to cover all this material in a timely manner. Since I moved my website, Google seems to be indexing it less deeply, but my new posts generally show up in the index eventually, it might help to post them to social media, but there is a lot of competition for “Python for Finance”. Eventually I found another account of taking this same program, tsferro seems to have focussed on algorithmic trading and to start 2026 the course material was revised yet again, so be sure and read the latest curriculum.

If you did stumble across this and have thoughts you can leave a comment below. It will take a lot of effort to finish this program.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Posts on Muskblog © Andrew "Muskie" McKay.
CFA Institute does not endorse, promote or warrant the accuracy or quality of Muskblog. CFA® and Chartered Financial Analyst® are registered trademarks owned by CFA Institute.