background knowledge both in Python programming as well as in financial practical guide to the creation of automated trading systems using Python and
Previous PDF | Next PDF |
[PDF] Python for Algorithmic Trading - The Python Quants
background knowledge both in Python programming as well as in financial practical guide to the creation of automated trading systems using Python and
[PDF] Algorithmic Trading Step By Step Strategies And T
and back testing it, pdf beginner s guide to forex trading, automated trading on oanda for dummies like me by sangeet moy das, python programming tutorials,
[PDF] Introduction to Algorithmic Trading - Interactive Brokers
A Beginner's Guide to Automating Investing Strategies QuantConnect – An Introduction to Algorithmic Trading Page 2 Coding and Backtesting A Strategy
[PDF] Python Multimedia Beginners Guide Index Of - OVHnet
Learn Python - Full Course for Beginners [Tutorial] by freeCodeCamp 2 # Trading #Programming I Coded A Trading Bot And Gave It $1000 To Trade
[PDF] Python For Finance Algorithmic Trading Python Quants img
3 mar 2021 · This tutorial serves as the beginner's guide to quantitative trading with Python Python for Finance – Algorithmic Trading Tutorial for The rise
[PDF] Algorithmic Trading Using Python Dvc Futures - str-tnorg
It is an immensely sophisticated area of finance This tutorial serves as the beginner's guide to quantitative trading with Python Python for Finance – Algorithmic
[PDF] a blue commonwealth
[PDF] a book pdf
[PDF] a certified digital signature merkle
[PDF] a circonflexe alt
[PDF] a circonflexe clavier
[PDF] a circonflexe mac
[PDF] a circonflexe majuscule
[PDF] a circonflexe majuscule clavier
[PDF] a circonflexe shortcut
[PDF] a circonflexe sur clavier
[PDF] a class can be abstract
[PDF] a class can have only one
[PDF] a class can have only one constructor true false
[PDF] a class can have only one destructor
Python for Algorithmic Trading
The Python Quants GmbH
Table of Contents
Copyright. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Author Biography. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Python and Algorithmic Trading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Python for Finance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3. Algorithmic Trading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4. Python for Algorithmic Trading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5. Focus and Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6. Trading Strategies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7. Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.8. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.9. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2. Python Infrastructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2. Conda as a Package Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3. Conda as a Virtual Environment Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.4. Using Docker Containers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.5. Using Cloud Instances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.6. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.7. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3. Working with Financial Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2. Reading Financial Data From Different Sources. . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3. Working with Open Data Sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.4. Eikon Data API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.5. Storing Financial Data Efficiently. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.6. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.7. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.8. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4. Mastering Vectorized Backtesting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.2. Making Use of Vectorization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.3. Strategies based on Simple Moving Averages. . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.4. Strategies based on Momentum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.5. Strategies based on Mean-Reversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.6. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.7. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.8. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5. Predicting Market Movements with Machine Learning. . . . . . . . . . . . . . . . . . . . . . 140
5.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.2. Using Linear Regression for Market Movement Prediction. . . . . . . . . . . . . . . 141
5.3. Using Machine Learning for Market Movement Prediction. . . . . . . . . . . . . . . 157
5.4. Using Deep Learning for Market Movement Prediction. . . . . . . . . . . . . . . . . . 172
5.5. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.6. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.7. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
6. Building Classes for Event-based Backtesting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
6.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
6.2. Backtesting Base Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
6.3. Long Only Backtesting Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6.4. Long Short Backtesting Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
6.5. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.6. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
6.7. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7. Working with Real-Time Data and Sockets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
7.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
7.2. Running a Simple Tick Data Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
7.3. Connecting a Simple Tick Data Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
7.4. Signal Generation in Real-Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
7.5. Visualizing Streaming Data with Plotly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
7.6. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
7.7. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
7.8. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
8. FX Trading with FXCM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
8.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
8.2. Getting Started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
8.3. Retrieving Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
8.4. Working with the API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
8.5. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
8.6. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
9. CFD Trading with Oanda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
9.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
9.2. Setting Up an Account. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
9.3. The Oanda API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
9.4. Retrieving Historical Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
9.5. Working with Streaming Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
9.6. Placing Market Orders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
9.7. Implementing Trading Strategies in Real-Time. . . . . . . . . . . . . . . . . . . . . . . . . . 292
9.8. Retrieving Account Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
9.9. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
9.10. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
9.11. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
10. Stock Trading with Interactive Brokers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
10.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
10.2. Setting up an Account. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
10.3. Python and the IB API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
10.4. A Wrapper Class for the IB API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
10.5. Retrieving Historical Data from IB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
10.6. Working with Streaming Data from the IB API. . . . . . . . . . . . . . . . . . . . . . . . . 312
10.7. Implementing Trading Strategies in Real-Time. . . . . . . . . . . . . . . . . . . . . . . . . 314
10.8. Retrieving Account Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
10.9. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
10.10. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
10.11. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11. Trading Cryptocurrencies with Gemini. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
11.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
11.2. Gemini Platform. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
11.3. Setting Up an Account. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
11.4. A Wrapper Class for the Gemini API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
11.5. Retrieving Historical Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
11.6. Placing and Managing Orders via the API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
11.7. Most Recent Transaction History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
11.8. Implementing Trading Strategies in Real-Time. . . . . . . . . . . . . . . . . . . . . . . . . 353
11.9. Retrieving Account Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
11.10. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
11.11. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
11.12. Python Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12. Automating Trading Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
12.1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
12.2. Capital Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
12.3. ML-Based Trading Strategy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
12.4. Online Algorithm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
12.5. Infrastructure and Deployment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
12.6. Logging and Monitoring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
12.7. Visual Step-by-Step Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
12.8. Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
12.9. Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
12.10. Python Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Appendix A: Python, NumPy, matplotlib, pandas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Python Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
NumPy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
matplotlib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
pandas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Case Study. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Further Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470