Python財務計算

本課程將透過Python實現財務分析與模型計算。課程首先為初學Python的學員介紹Python的語法,也可供已學Python的學員作為複習之用。接著介紹如何擷取市場資料,並進行初步資料整理與資料視覺化;利用Python現有的量化套件進行時間序列分析 (time series analysis)。此外,我們也將介紹衍生性金融商品 (derivatives)的定價模型 (pricing model, e.g. CAPM, Black-Scholes model),並透過市場資料進行模型校正 (model calibration, e.g. 隱含波動率),利用此模型為自己的投資策略進行回測評估 (evaluation by backtesting)。若時間許可,我將介紹如何使用機器學習套件 (scikit-learn)應用於財務資料與區塊鏈 (Blockschain) [0]的原理與實作。



SP500_impv


 
[0] What is Blockchain Technology? A Step-by-Step Guide For Beginners, blockgeeks

課程大綱

(tentative schedule)

References


Python crash course [IP ch.2-6]

  • Variable, simple data types (int, float, str, boolean), and operators (arithmetic, rational, logical)

  • Built-in data structures: list, tuple, dictionary, and set

  • Selections (if-elif-else)

  • Iterations (for-in loop, while loop) with jump statements (break, continue)

  • Iterables: range, map, zip, enumerate

  • Comprehensions

  • Numpy [PDA ch. 4 and 10]

  • Function, scope, arguments (positional, keyword)

  • Functional programming: lambda expression, map/filter pattern, generator (yield), decorator

  • Analysis of algorithms

  • Script, module and package

  • Python Standard Library [IP ch.5 (partial)]

  • Class and object: attributes and methods

  • Object-oriented paradigm: encapsulation and inheritance

  • Exception handling (try-except-finally, raise, with)

  • Systems: files and directories [IP ch. 10]



Data preprocessing [PFF ch. 6-7; PDA ch. 5-7]

  • IO with pandas

  • Regular expressions

  • Automatic data crawler using urllib and requests [DSS ch. 9 (partial)]



Data visualization [PFF ch. 5; PDA ch. 8 and 10]

  • 2D plotting with matplotlib and seaborn

  • 3D plotting



Mathematical tools and time series analysis [PFF ch. 9-11; DSS ch. 5 nad 7]

  • Probability and random number generation

  • Descriptive statistics, hypothesis testing using statsmodels

  • Regression and interpolation

  • ARMA model and ARCH model

  • Backtest framework using backtrader

  • Portfolio optimization



Financial models [PFF ch. 15-17, 19; DAP ch. 4-5, 7-13]

  • Tutorial on financial markets: stocks, futures, and options

  • Valuation framework: fundamental theorem of asset pricing

  • Simulation of financial models: geometric Brownian motion (Black-Scholes model), jump diffusion, square-root diffusion

  • Derivatives valuation

  • Binomial Option Pricing Model (BOPM) for European and American options

  • Monte Carlo simulation

  • Greeks: sensitivity analysis

  • Calibration procedure

  • Risk measure: Value at Risk (VaR)



Machine learning [DSS ch. 11-19]

  • Supervised learning: ridge regression, LASSO regression, logistic regression, supporting vector machine, decision tree, random forest

  • Unsupervised learning: K-mean, K-clustering, K-nearest neighbors, principal component analysis (PCA)

  • Reinforcement learning: Q-learning

  • Deep learning using tensorflow



註0:updated on 2018/12/6
註1:英文教材中文授課。英文目前仍為科技領域主要語言,想長期進入資訊領域者,應具備"透過英文學習"的基本能力。
註2:課程仍會依照上課的需要而更動。

適合對象

對財務計算有興趣或具備基本財務金融知識者

開發環境

Python 3.6.x on Jupyter/Spyder in Anaconda

近期班次

注意事項

  • 上課地點:台灣大學資訊工程學系系館 詳細位置;教室號碼將於開課前一日公佈於官網"最新消息"中。
  • 上課教材:開課後將公布教學網站給同學查閱。
  • 結業狀況:請上官網”結業名單”查閱是否合格及可領取證書進度。

講師介紹

  • 臺灣大學資訊工程學系 博士班
  • 交通大學電信工程研究所 碩士
  • 中央大學電機工程學系 學士

// 服務經驗

  • 在本班已教授超過100個班,累計教學時數3,000個小時
  • 國立台灣大學 腦與心智科學研究所 兼任研究助理 (2014.8--present)
  • 中國信託商業銀行 全球金融商品交易處 期貨自營部 實習研究員 (2014.1--present)
  • 國立台灣大學 資訊工程學系 資訊系統訓練班 講師 (2014.1--present)
  • 國立台灣大學 資訊工程學系 課程助教:計算理論、離散數學、財務演算法 (2012.9--present)

// 研究興趣

  • Financial computing
  • Analysis and design of algorithms
  • Quantitative finance, econometrics, and algorithmic trading
  • Statistics and machine learning
  • Computing theory and programming language design

// 程式語言

  • MATLAB, Java, C, C++, Python

// 教學特色

  • 中文授課,課程教材以英文為主。適合規劃出國求學或對科學/技術理論有興趣的學員。