Not surprisingly, it was the first question I overheard on the first day of drop off for my youngest at the start of school. “We went camping a lot and I got a pocket knife with my name on it for my birthday to whittle sticks”, Ian says. I heard oohs and ahhs (maybe 8 is too early for a knife?!). In reality, it was a Swiss Army knife, the original multi-tool. He’ll find as he grows older that it has a lot of uses beyond “whittlin’ sticks.”
This made me think of our own progress. This summer I got a new tool, much like my son’s. It is a basis to do so much more. At the end of the summer James and Hal (the former director and associate director) of the ULISSES Project finished the migration of two semester’s worth of econometrics coursework to Jupyter notebooks using Python as our scripting language.
It’s an amazingly complete and complex tool, just like “a Swiss Army knife for finance.” James told me that it’s pretty much undergraduate to Ph.D. level econometrics, an amazingly comprehensive set of tools. When James showed it to an old friend of his who is tasked with upgrading an Ivy League Business Schools’ computational finance courses. James was made an offer to teach the course to alumni through the ExecEd program, instead he turned it over to us, giving the ULISSES Project a license to the course in perpetuity.
Just some history on this. Several years ago I asked James to work with one of MSCI’s educational partners to integrate our data and develop just such a course. The group had worked with big bank alumni to build a program that was highly anticipated. James reviewed it and then came back to me and told me that the codebase was “fractured” and not functioning. I asked for clarification.
He said after a discussion with them he discovered that it was coded by seven different people, not one still with the company, and that 80% of the code was either irrelevant or just not functioning. He would not allow the ULISSES Project to be associated with the group and I then asked him to develop something with him and Hal. That is what he just handed me-packaged, unified and fully functioning. We now have to take it to the next level.
We have tasked ourselves to make the problem sets tailored to investment management tasks. Next, we will do trading, portfolio and risk management. I also got a “tool” over the summer and we’re going to use it as the foundation to give asset managers an Ivy League education and community around it!
In Search of the Perfect Language
James and Hal are computer linguists. They are multi-lingual and able to make decisions of what language for what purpose. For example, James and Hal used Eiffel for certain projects, SAS for others, and C, Python and JavaScript for still more. James often quoted a book by his favorite author, Umberto Eco called “In Search of the Perfect Language,” with the punchline being that there is no perfect language, but only appropropriate tools for the tasks at hand.
In taking responsibility for the future direction of the ULISSES Project, I had to immediately make a decision of what language would be appropriate for our future. Not being a computer linguist myself, this was an important decision I pondered long. James told me he was moving to Julia and Rust, just like many of the best modelers and computer programmers in the world. I looked at it, and while Rust is appropriate for cutting edge jobs for AWS, Google, and Microsoft, it wasn’t right for us. That left others such as SAS, C, JavaScript, Python and Julia. I was familiar with Python and familiarized myself with Julia. James was right, all the top mathematical modelers in the world were moving to Julia, so that narrowed it down, I put the question to the board. James told me he and Hal would help do the coding for us in whatever language we chose.
Python for Education, Julia for Modeling
During my last advisory board meeting I posed the question “What language should we use, Python or Julia?” No one knew that whatever was said, would result in a lot of work for Hal and James. James withheld his vote and his opinion on the matter, letting the majority weigh in and not wielding moral authority as spokesman for the coders.
After a bit of back and forth, the decision was resoundingly in favor of Python. Some of the comments were “Don’t use a language no one is really embracing yet.,” James thought this was funny because he already had discussions with an editor at SIAM, one of the top groups in the world for applied engineers on how the best modelers are moving towards Julia.
“People are looking for graduates that require this skill set.” Yes, that is true, as James has said in the past, Python is the new Microsoft Excel, a base analysis language that everyone needs to know, but rather than just analysis it has the benefit of being a general purpose language.
My initial logic of offering Julia as a suggestion was that Python has matured to the point where you should already know this language and James was moving on to Julia for all his modeling projects. Why not educate students to be more marketable when they graduate by giving them something cutting edge? At least that was my thinking, ultimately Python won out because the primary objective is to teach the material and everything else is secondary.
Python for the People!
While James, the MIT Clima crowd and some of the best macroeconomic modelers in the world are migrating to Julia, we at the ULISSES Project are not about elite research and modeling, but instead about offering universal tools for the general population of those in the investment management and facilitating them working with the best tools. So in short, these are the three main reasons why we decided to go with Python, and why James and Hal delivered us the econometrics courses in Python.
First, Python is the de facto Lingua Franca for analysis. Much like the spreadsheet before it, it is a set of tools that can be easily understood by almost anyone. Elementary school kids have learned to use Python to script for Raspberry Pi’s so I think we can get anyone who can work on a spreadsheet and do a little VBA to be reasonably good with Python. Python is the most popular scripting language in the world for good reason. This common framework and its ease of use to converse across disciplines and among technical and non-technical individuals make it the language of choice to clear communication and transferable knowledge.
Second, Python is very well established. It has in many ways reached the top of the “S-Curve” of its adoption. There is so much available in terms of pre-built functions and libraries and all one has to do is google a function and code is there. Ultimately, while Python can’t do everything well, familiarity with it is necessary to get jobs today.
Third, Python and Jupyter notebooks make experimentation and sharing easy. At my previous employer, we shared Jupyter notebooks and code across many of our different businesses, allowing us to collaborate and leverage one another’s work despite differences in functional roles and operating divisions. This meant we could ideate, test and discuss prototypes internally and externally (w/ clients), very quickly. Innovation accelerated. I’d like to introduce this mindset and way of working collaboratively through Jupyter Notebooks to the ULISSES Project and that’s why I asked James to memorialize the previous work in those notebooks. We’re thankful for all the work this past summer and we’re looking forward to tackling additional tasks such as trading, optimization and portfolio management now that we have our Swiss Army toolkit in Python.