Financial Computing

Objectives and Learning Outcomes
The aim of the course is to enable participants to understand and be able to implement in Python key investment science concepts. Participants acquire tools for making sound investment decisions, develop intuition for investment and trading of financial securities, and learn how to apply these concepts in Python in all stages of the workflow. 
Numerical recipes in Python – root finding; interpolation; numerical integration; linear systems; random number generation. Numerical optimization. Utility and risk: Utility functions and related properties; risk measures and related properties. Portfolio choice: investment-consumption problems, risk management, performance measurement. Capital Asset Pricing Model (CAPM) and Fama-French factors. Arbitrage pricing theory (APT). Forecasting return and risk. Practical portfolio optimisation: costs and constraints, Robust techniques for estimation and portfolio management. Portfolio performance measures. Introduction to algorithmic trading. 
All exercises implemented in Python. Root finding, interpolation, numerical integration, linear systems, random number generation with applications in investments. Accessing, storing and transforming financial data. Collecting financial data using web scrapping. Processing textual info. Estimation of key statistical properties of return series on US industry portfolios and individual stocks. Creating value-weighted index of US industries. Measuring maximum portfolio drawdown. Portfolio optimization using Quadprog. Implementing different constraints. Plotting the efficient frontier. Back-testing investment strategies. Effective number of portfolio constituents. Investment style analysis. Implementing covariance shrinkage estimators. Implementation of Black-Litterman approach. Interactive plots using IPYWIDGETS. Designing and calibrating CPPI strategies. Risk contribution and risk parity. Implementing algo trading strategies. Group trading competition utilizing Market Watch platform.