/oct_applications_21

Applications to the apprenticeship program, October 2021.

Skill Set Challenge!

Hudson & Thames has provided the following skillset challenge to allow potential researchers to gauge if they have the required skills to take part in the apprenticeship program.

Our previous cohorts built the ArbitrageLab python library. You will be working on advanced algorithms for the MlFinLab and the PortfolioLab packages.



Your Mission:

The following assignment is an opportunity for you to highlight your skillset and show us what you are made of! It tests your ability to implement academic research for the broader quantitative finance community, and to do it in style!

Briefing


Read the following paper: Kinetic Component Analysis by Marcos Lopez de Prado and Riccardo Rebonato.

In a Jupyter Notebook (python):

  1. Download and save a preferred set of futures (use 5-10 futures) (Can use Yahoo finance to get the data. Checkout the yfinance package.) (Else you can use Polygon to download data or use your own dataset)
  2. Use the implementation of the KCA from Appendice A.1.
  3. Make a function to use the output from the KCA to generate a set of trading signals (Any simple trading algorithm logic).
  4. Optional: Also do the above for the FFT and LOWESS algorithms (Appendices A.2. - A.4.).
  5. Construct trading strategy class(es) using the code from the previous steps for the end-user to make use of (Separate classes for KCA, FFT, and LOWESS, if the last two are being added). The class should take a set of observations as input and, based on a set of parameters, generate a trading signal for the next observation (or multiple).
  6. Make sure to add docstrings and follow PEP8 code style checks. Have plenty of inline comments, good variable names and don't overcomplicate things unnecessarily. It should be easy for the user to make use of.
  7. Showcase your new KCA Strategy (and FFT, LOWESS, if added) in a Jupyter Notebook, apply to the downloaded dataset from p. 1. and analyse performance, make conclusions, add good visualisations.
  8. Add an introduction, body, and conclusion showcasing your new implementation. (Use the correct style headers)
  9. Make a Pull Request to this repo so that we can evaluate your work. (Create a new folder with your name)
  10. Bonus points if you add unit tests (in a separate .py file).
  11. Provide a write-up explaining your way-of-work, your design choices, maybe a UML diagram, and learnings.
  12. Deadline: 22nd of October 2021

How Will You be Evaluated?

Being a good researcher is a multivariate problem that can't be reduced to a few variables. You need to be good at, mathematics, statistics, computer science, finance, and communication.

Pay close attention to detail and know that code style, inline comments, and documentation are heavily weighted.

The one consistent theme between all of our top researchers is their ability to go above and beyond what is asked of them. Please take the initiative to highlight your talent by going the extra mile and adding functionality that end-users would love!

Notes

  • Your code for the implementation should be contained in a .py file that you import into your notebook. Please don't have large chunks of code in your notebook.
  • IDE Choice: Pycharm, NOT Spyder.
  • Save your data with your PR so that we can evaluate it.
  • Turn to the previous cohorts' submissions: 1, 2, 3 for inspiration.

Institutional - Need to Know


  • Company Name: Hudson and Thames Quantitative Research
  • Company Brief: Our core focus is on the implementation of research within buy-side asset management.
  • Company Website: https://hudsonthames.org/
  • Locked Achievement: Apprenticeship Program Alumni
  • Location: Virtual Team (We are all in different time zones across the world.)
  • Education: Familiarity with machine learning, statistics, and applied maths. We care a lot more about what you can do rather than your exact qualifications.

Day on Day Activity

  • Implement academic research for machine learning in finance.
  • Python
  • Unit tests
  • PEP8
  • Continuous integration
  • Documentation
  • Writing articles
  • Public Speaking

Skills:

  • Must speak fluent English. There is a documentation requirement so English is an absolute requirement.
  • Python
  • Machine Learning
  • Software engineering
  • Object Orientated Programming
  • Linear Algebra