Towards the end of the fourth day, or maybe fifth, I finally figured out how to make the code do what I wanted it to do and run without errors. I found the blind-spot.
There are some take-aways about naming conventions, and how to structure a code base. I also have some thoughts about pandas. I guess the general conclusion is that with more power comes more responsibility. Code can be written in many ways, but only a few of them will let developers work as efficiently as possible.
Programming is an art and the only way to get good at writing complex code is to practice.
Also, I'd like to find a code visualization tool that can show the flow of classes and methods as they are instantiated.