├── Projects ├── 1 - Building An Equal-Weight S&P 500 Index Fund │ ├── secrets.py │ ├── recommended trades.xlsx │ ├── __pycache__ │ │ └── secrets.cpython-38.pyc │ └── 001_equal_weight_S&P_500.ipynb ├── 3 - Building A Quantitative Value Investing Strategy │ ├── secrets.py │ ├── value_strategy.xlsx │ └── __pycache__ │ │ └── secrets.cpython-38.pyc ├── 2 - Building A Quantitative Momentum Investing Strategy │ ├── secrets.py │ ├── momentum_strategy.xlsx │ ├── __pycache__ │ │ └── secrets.cpython-38.pyc │ └── .ipynb_checkpoints │ │ └── 002_quantitative_momentum_strategy-checkpoint.ipynb └── sp_500_stocks.csv ├── requirements.txt └── README.md /Projects/1 - Building An Equal-Weight S&P 500 Index Fund/secrets.py: -------------------------------------------------------------------------------- 1 | IEX_CLOUD_API_TOKEN = 'Tpk_059b97af715d417d9f49f50b51b1c448' -------------------------------------------------------------------------------- /Projects/3 - Building A Quantitative Value Investing Strategy/secrets.py: -------------------------------------------------------------------------------- 1 | IEX_CLOUD_API_TOKEN = 'Tpk_059b97af715d417d9f49f50b51b1c448' -------------------------------------------------------------------------------- /Projects/2 - Building A Quantitative Momentum Investing Strategy/secrets.py: -------------------------------------------------------------------------------- 1 | IEX_CLOUD_API_TOKEN = 'Tpk_059b97af715d417d9f49f50b51b1c448' -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | jupyter==1.0.0 2 | jupyter-client==6.1.3 3 | jupyter-console==6.1.0 4 | jupyter-core==4.6.3 5 | numpy==1.17.4 6 | pandas==0.25.3 7 | requests==2.22.0 8 | scipy==1.5.2 9 | XlsxWriter==1.2.2 10 | -------------------------------------------------------------------------------- /Projects/1 - Building An Equal-Weight S&P 500 Index Fund/recommended trades.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cengizozel/Algorithmic-Trading-In-Python/HEAD/Projects/1 - Building An Equal-Weight S&P 500 Index Fund/recommended trades.xlsx -------------------------------------------------------------------------------- /Projects/3 - Building A Quantitative Value Investing Strategy/value_strategy.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cengizozel/Algorithmic-Trading-In-Python/HEAD/Projects/3 - Building A Quantitative Value Investing Strategy/value_strategy.xlsx -------------------------------------------------------------------------------- /Projects/2 - Building A Quantitative Momentum Investing Strategy/momentum_strategy.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cengizozel/Algorithmic-Trading-In-Python/HEAD/Projects/2 - Building A Quantitative Momentum Investing Strategy/momentum_strategy.xlsx -------------------------------------------------------------------------------- /Projects/1 - Building An Equal-Weight S&P 500 Index Fund/__pycache__/secrets.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cengizozel/Algorithmic-Trading-In-Python/HEAD/Projects/1 - Building An Equal-Weight S&P 500 Index Fund/__pycache__/secrets.cpython-38.pyc -------------------------------------------------------------------------------- /Projects/3 - Building A Quantitative Value Investing Strategy/__pycache__/secrets.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cengizozel/Algorithmic-Trading-In-Python/HEAD/Projects/3 - Building A Quantitative Value Investing Strategy/__pycache__/secrets.cpython-38.pyc -------------------------------------------------------------------------------- /Projects/2 - Building A Quantitative Momentum Investing Strategy/__pycache__/secrets.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cengizozel/Algorithmic-Trading-In-Python/HEAD/Projects/2 - Building A Quantitative Momentum Investing Strategy/__pycache__/secrets.cpython-38.pyc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Algorithmic Trading In Python 2 | 3 | Collection of 3 quantitative finance projects in Python that uses algorithmic trading. 4 | I completed these projects by watching a full course by the software developer Nick McCullum on 5 | [YouTube](https://youtu.be/xfzGZB4HhEE). 6 | The projects consist of instructions given on a Jupyter notebook from 7 | [this repo](https://github.com/nickmccullum/algorithmic-trading-python) 8 | and I did the coding part by following the course. 9 | 10 | ### Projects 11 | 1. [Building An Equal-Weight SP 500 Index Fund](https://github.com/cengizozel/algorithmic-trading-in-python#building-an-equal-weight-sp-500-index-fund) 12 | 2. [Building A Quantitative Momentum Investing Strategy](https://github.com/cengizozel/algorithmic-trading-in-python#building-a-quantitative-momentum-investing-strategy) 13 | 3. [Building A Quantitative Value Investing Strategy](https://github.com/cengizozel/algorithmic-trading-in-python#building-a-quantitative-value-investing-strategy) 14 | 15 | All three projects use the sandbox version of 16 | [IEX Cloud API](https://iexcloud.io/docs/api/). 17 | The free sandbox version is for testing purposes and gives random values. 18 | 19 | ## Building An Equal-Weight S&P 500 Index Fund 20 | #### [View project](https://github.com/cengizozel/Algorithmic-Trading-In-Python/blob/main/Projects/1%20-%20Building%20An%20Equal-Weight%20S%26P%20500%20Index%20Fund/001_equal_weight_S%26P_500.ipynb) 21 | The goal of this project is to build an equal-weight version of the S&P 500 index fund by taking the value of a portfolio as input and tell how many shares of each S&P 500 stock should be purchased. The script exports an excel file with the equal-weight version of the index fund as a result. 22 | 23 |  24 | 25 | ## Building A Quantitative Momentum Investing Strategy 26 | #### [View project](https://github.com/cengizozel/Algorithmic-Trading-In-Python/blob/main/Projects/2%20-%20Building%20A%20Quantitative%20Momentum%20Investing%20Strategy/002_quantitative_momentum_strategy.ipynb) 27 | The goal of this project is to build a quantitative momentum strategy that decides how many of each of the best 50 stocks to buy based on their HQM scores (high-quality momentum) that indicate that they have increased in price the most. 28 | 29 |  30 | 31 | ## Building A Quantitative Value Investing Strategy 32 | #### [View project](https://github.com/cengizozel/Algorithmic-Trading-In-Python/blob/main/Projects/3%20-%20Building%20A%20Quantitative%20Value%20Investing%20Strategy/003_quantitative_value_strategy.ipynb) 33 | The goal of this project is to build a quantitative value strategy that decides how many of each of the best 50 stocks to buy based on their RV scores (robust value) that indicate how cheap they are relative to common measures of business value. 34 | 35 |  36 | -------------------------------------------------------------------------------- /Projects/sp_500_stocks.csv: -------------------------------------------------------------------------------- 1 | Ticker 2 | A 3 | AAL 4 | AAP 5 | AAPL 6 | ABBV 7 | ABC 8 | ABMD 9 | ABT 10 | ACN 11 | ADBE 12 | ADI 13 | ADM 14 | ADP 15 | ADSK 16 | AEE 17 | AEP 18 | AES 19 | AFL 20 | AIG 21 | AIV 22 | AIZ 23 | AJG 24 | AKAM 25 | ALB 26 | ALGN 27 | ALK 28 | ALL 29 | ALLE 30 | ALXN 31 | AMAT 32 | AMCR 33 | AMD 34 | AME 35 | AMGN 36 | AMP 37 | AMT 38 | AMZN 39 | ANET 40 | ANSS 41 | ANTM 42 | AON 43 | AOS 44 | APA 45 | APD 46 | APH 47 | APTV 48 | ARE 49 | ATO 50 | ATVI 51 | AVB 52 | AVGO 53 | AVY 54 | AWK 55 | AXP 56 | AZO 57 | BA 58 | BAC 59 | BAX 60 | BBY 61 | BDX 62 | BEN 63 | BF.B 64 | BIIB 65 | BIO 66 | BK 67 | BKNG 68 | BKR 69 | BLK 70 | BLL 71 | BMY 72 | BR 73 | BRK.B 74 | BSX 75 | BWA 76 | BXP 77 | C 78 | CAG 79 | CAH 80 | CARR 81 | CAT 82 | CB 83 | CBOE 84 | CBRE 85 | CCI 86 | CCL 87 | CDNS 88 | CDW 89 | CE 90 | CERN 91 | CF 92 | CFG 93 | CHD 94 | CHRW 95 | CHTR 96 | CI 97 | CINF 98 | CL 99 | CLX 100 | CMA 101 | CMCSA 102 | CME 103 | CMG 104 | CMI 105 | CMS 106 | CNC 107 | CNP 108 | COF 109 | COG 110 | COO 111 | COP 112 | COST 113 | COTY 114 | CPB 115 | CPRT 116 | CRM 117 | CSCO 118 | CSX 119 | CTAS 120 | CTL 121 | CTSH 122 | CTVA 123 | CTXS 124 | CVS 125 | CVX 126 | CXO 127 | D 128 | DAL 129 | DD 130 | DE 131 | DFS 132 | DG 133 | DGX 134 | DHI 135 | DHR 136 | DIS 137 | DISCA 138 | DISCK 139 | DISH 140 | DLR 141 | DLTR 142 | DOV 143 | DOW 144 | DPZ 145 | DRE 146 | DRI 147 | DTE 148 | DUK 149 | DVA 150 | DVN 151 | DXC 152 | DXCM 153 | EA 154 | EBAY 155 | ECL 156 | ED 157 | EFX 158 | EIX 159 | EL 160 | EMN 161 | EMR 162 | EOG 163 | EQIX 164 | EQR 165 | ES 166 | ESS 167 | ETFC 168 | ETN 169 | ETR 170 | EVRG 171 | EW 172 | EXC 173 | EXPD 174 | EXPE 175 | EXR 176 | F 177 | FANG 178 | FAST 179 | FB 180 | FBHS 181 | FCX 182 | FDX 183 | FE 184 | FFIV 185 | FIS 186 | FISV 187 | FITB 188 | FLIR 189 | FLS 190 | FLT 191 | FMC 192 | FOX 193 | FOXA 194 | FRC 195 | FRT 196 | FTI 197 | FTNT 198 | FTV 199 | GD 200 | GE 201 | GILD 202 | GIS 203 | GL 204 | GLW 205 | GM 206 | GOOG 207 | GOOGL 208 | GPC 209 | GPN 210 | GPS 211 | GRMN 212 | GS 213 | GWW 214 | HAL 215 | HAS 216 | HBAN 217 | HBI 218 | HCA 219 | HD 220 | HES 221 | HFC 222 | HIG 223 | HII 224 | HLT 225 | HOLX 226 | HON 227 | HPE 228 | HPQ 229 | HRB 230 | HRL 231 | HSIC 232 | HST 233 | HSY 234 | HUM 235 | HWM 236 | IBM 237 | ICE 238 | IDXX 239 | IEX 240 | IFF 241 | ILMN 242 | INCY 243 | INFO 244 | INTC 245 | INTU 246 | IP 247 | IPG 248 | IPGP 249 | IQV 250 | IR 251 | IRM 252 | ISRG 253 | IT 254 | ITW 255 | IVZ 256 | J 257 | JBHT 258 | JCI 259 | JKHY 260 | JNJ 261 | JNPR 262 | JPM 263 | K 264 | KEY 265 | KEYS 266 | KHC 267 | KIM 268 | KLAC 269 | KMB 270 | KMI 271 | KMX 272 | KO 273 | KR 274 | KSS 275 | KSU 276 | L 277 | LB 278 | LDOS 279 | LEG 280 | LEN 281 | LH 282 | LHX 283 | LIN 284 | LKQ 285 | LLY 286 | LMT 287 | LNC 288 | LNT 289 | LOW 290 | LRCX 291 | LUV 292 | LVS 293 | LW 294 | LYB 295 | LYV 296 | MA 297 | MAA 298 | MAR 299 | MAS 300 | MCD 301 | MCHP 302 | MCK 303 | MCO 304 | MDLZ 305 | MDT 306 | MET 307 | MGM 308 | MHK 309 | MKC 310 | MKTX 311 | MLM 312 | MMC 313 | MMM 314 | MNST 315 | MO 316 | MOS 317 | MPC 318 | MRK 319 | MRO 320 | MS 321 | MSCI 322 | MSFT 323 | MSI 324 | MTB 325 | MTD 326 | MU 327 | MXIM 328 | MYL 329 | NBL 330 | NCLH 331 | NDAQ 332 | NEE 333 | NEM 334 | NFLX 335 | NI 336 | NKE 337 | NLOK 338 | NLSN 339 | NOC 340 | NOV 341 | NOW 342 | NRG 343 | NSC 344 | NTAP 345 | NTRS 346 | NUE 347 | NVDA 348 | NVR 349 | NWL 350 | NWS 351 | NWSA 352 | O 353 | ODFL 354 | OKE 355 | OMC 356 | ORCL 357 | ORLY 358 | OTIS 359 | OXY 360 | PAYC 361 | PAYX 362 | PBCT 363 | PCAR 364 | PEAK 365 | PEG 366 | PEP 367 | PFE 368 | PFG 369 | PG 370 | PGR 371 | PH 372 | PHM 373 | PKG 374 | PKI 375 | PLD 376 | PM 377 | PNC 378 | PNR 379 | PNW 380 | PPG 381 | PPL 382 | PRGO 383 | PRU 384 | PSA 385 | PSX 386 | PVH 387 | PWR 388 | PXD 389 | PYPL 390 | QCOM 391 | QRVO 392 | RCL 393 | RE 394 | REG 395 | REGN 396 | RF 397 | RHI 398 | RJF 399 | RL 400 | RMD 401 | ROK 402 | ROL 403 | ROP 404 | ROST 405 | RSG 406 | RTX 407 | SBAC 408 | SBUX 409 | SCHW 410 | SEE 411 | SHW 412 | SIVB 413 | SJM 414 | SLB 415 | SLG 416 | SNA 417 | SNPS 418 | SO 419 | SPG 420 | SPGI 421 | SRE 422 | STE 423 | STT 424 | STX 425 | STZ 426 | SWK 427 | SWKS 428 | SYF 429 | SYK 430 | SYY 431 | T 432 | TAP 433 | TDG 434 | TDY 435 | TEL 436 | TFC 437 | TFX 438 | TGT 439 | TIF 440 | TJX 441 | TMO 442 | TMUS 443 | TPR 444 | TROW 445 | TRV 446 | TSCO 447 | TSN 448 | TT 449 | TTWO 450 | TWTR 451 | TXN 452 | TXT 453 | TYL 454 | UA 455 | UAA 456 | UAL 457 | UDR 458 | UHS 459 | ULTA 460 | UNH 461 | UNM 462 | UNP 463 | UPS 464 | URI 465 | USB 466 | V 467 | VAR 468 | VFC 469 | VIAC 470 | VLO 471 | VMC 472 | VNO 473 | VRSK 474 | VRSN 475 | VRTX 476 | VTR 477 | VZ 478 | WAB 479 | WAT 480 | WBA 481 | WDC 482 | WEC 483 | WELL 484 | WFC 485 | WHR 486 | WLTW 487 | WM 488 | WMB 489 | WMT 490 | WRB 491 | WRK 492 | WST 493 | WU 494 | WY 495 | WYNN 496 | XEL 497 | XLNX 498 | XOM 499 | XRAY 500 | XRX 501 | XYL 502 | YUM 503 | ZBH 504 | ZBRA 505 | ZION 506 | ZTS -------------------------------------------------------------------------------- /Projects/1 - Building An Equal-Weight S&P 500 Index Fund/001_equal_weight_S&P_500.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Equal-Weight S&P 500 Index Fund\n", 8 | "\n", 9 | "## Introduction & Library Imports\n", 10 | "\n", 11 | "The S&P 500 is the world's most popular stock market index. The largest fund that is benchmarked to this index is the SPDR® S&P 500® ETF Trust. It has more than US$250 billion of assets under management.\n", 12 | "\n", 13 | "The goal of this section of the course is to create a Python script that will accept the value of your portfolio and tell you how many shares of each S&P 500 constituent you should purchase to get an equal-weight version of the index fund.\n", 14 | "\n", 15 | "## Library Imports\n", 16 | "\n", 17 | "The first thing we need to do is import the open-source software libraries that we'll be using in this tutorial." 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 1, 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "import numpy as np\n", 27 | "import pandas as pd\n", 28 | "import requests\n", 29 | "import xlsxwriter\n", 30 | "import math" 31 | ] 32 | }, 33 | { 34 | "cell_type": "markdown", 35 | "metadata": {}, 36 | "source": [ 37 | "## Importing Our List of Stocks\n", 38 | "\n", 39 | "The next thing we need to do is import the constituents of the S&P 500.\n", 40 | "\n", 41 | "These constituents change over time, so in an ideal world you would connect directly to the index provider (Standard & Poor's) and pull their real-time constituents on a regular basis.\n", 42 | "\n", 43 | "Paying for access to the index provider's API is outside of the scope of this course. \n", 44 | "\n", 45 | "There's a static version of the S&P 500 constituents available here. [Click this link to download them now](https://drive.google.com/file/d/1ZJSpbY69DVckVZlO9cC6KkgfSufybcHN/view?usp=sharing). Move this file into the `starter-files` folder so it can be accessed by other files in that directory.\n", 46 | "\n", 47 | "Now it's time to import these stocks to our Jupyter Notebook file." 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 2, 53 | "metadata": {}, 54 | "outputs": [ 55 | { 56 | "output_type": "execute_result", 57 | "data": { 58 | "text/plain": [ 59 | " Ticker\n", 60 | "0 A\n", 61 | "1 AAL\n", 62 | "2 AAP\n", 63 | "3 AAPL\n", 64 | "4 ABBV\n", 65 | ".. ...\n", 66 | "500 YUM\n", 67 | "501 ZBH\n", 68 | "502 ZBRA\n", 69 | "503 ZION\n", 70 | "504 ZTS\n", 71 | "\n", 72 | "[505 rows x 1 columns]" 73 | ], 74 | "text/html": "
| \n | Ticker | \n
|---|---|
| 0 | \nA | \n
| 1 | \nAAL | \n
| 2 | \nAAP | \n
| 3 | \nAAPL | \n
| 4 | \nABBV | \n
| ... | \n... | \n
| 500 | \nYUM | \n
| 501 | \nZBH | \n
| 502 | \nZBRA | \n
| 503 | \nZION | \n
| 504 | \nZTS | \n
505 rows × 1 columns
\n| \n | Ticker | \nStock Price | \nMarket Capitalization | \nNumber of Shares to Buy | \n
|---|
| \n | Ticker | \nStock Price | \nMarket Capitalization | \nNumber of Shares to Buy | \n
|---|---|---|---|---|
| 0 | \nAAPL | \n130.01 | \n2183518918199 | \nN/A | \n
| \n | Ticker | \nStock Price | \nMarket Capitalization | \nNumber of Shares to Buy | \n
|---|---|---|---|---|
| 0 | \nA | \n133.030 | \n39366872493 | \nN/A | \n
| 1 | \nAAL | \n16.210 | \n9815553653 | \nN/A | \n
| 2 | \nAAP | \n167.076 | \n11288595782 | \nN/A | \n
| 3 | \nAAPL | \n129.780 | \n2216217542006 | \nN/A | \n
| 4 | \nABBV | \n115.050 | \n203980777067 | \nN/A | \n
| \n | Ticker | \nStock Price | \nMarket Capitalization | \nNumber of Shares to Buy | \n
|---|---|---|---|---|
| 0 | \nA | \n130.346 | \n40527794594 | \nN/A | \n
| 1 | \nAAL | \n16.770 | \n10017922788 | \nN/A | \n
| 2 | \nAAP | \n174.092 | \n11746396257 | \nN/A | \n
| 3 | \nAAPL | \n131.400 | \n2203652069531 | \nN/A | \n
| 4 | \nABBV | \n114.507 | \n198528364449 | \nN/A | \n
| ... | \n... | \n... | \n... | \n... | \n
| 500 | \nYUM | \n112.210 | \n33075398208 | \nN/A | \n
| 501 | \nZBH | \n161.590 | \n33476578508 | \nN/A | \n
| 502 | \nZBRA | \n424.880 | \n22123181524 | \nN/A | \n
| 503 | \nZION | \n49.730 | \n8210756172 | \nN/A | \n
| 504 | \nZTS | \n168.180 | \n79794813684 | \nN/A | \n
505 rows × 4 columns
\n| \n | Ticker | \nStock Price | \nMarket Capitalization | \nNumber of Shares to Buy | \n
|---|---|---|---|---|
| 0 | \nA | \n130.346 | \n40527794594 | \n151 | \n
| 1 | \nAAL | \n16.770 | \n10017922788 | \n1180 | \n
| 2 | \nAAP | \n174.092 | \n11746396257 | \n113 | \n
| 3 | \nAAPL | \n131.400 | \n2203652069531 | \n150 | \n
| 4 | \nABBV | \n114.507 | \n198528364449 | \n172 | \n
| ... | \n... | \n... | \n... | \n... | \n
| 500 | \nYUM | \n112.210 | \n33075398208 | \n176 | \n
| 501 | \nZBH | \n161.590 | \n33476578508 | \n122 | \n
| 502 | \nZBRA | \n424.880 | \n22123181524 | \n46 | \n
| 503 | \nZION | \n49.730 | \n8210756172 | \n398 | \n
| 504 | \nZTS | \n168.180 | \n79794813684 | \n117 | \n
505 rows × 4 columns
\n| \n", 210 | " | Ticker | \n", 211 | "Price | \n", 212 | "One-Year Price Return | \n", 213 | "Number of Shares to Buy | \n", 214 | "
|---|---|---|---|---|
| 0 | \n", 219 | "A | \n", 220 | "{'symbol': 'A', 'companyName': 'Agilent Techno... | \n", 221 | "0.421176 | \n", 222 | "N/A | \n", 223 | "
| 1 | \n", 226 | "AAL | \n", 227 | "{'symbol': 'AAL', 'companyName': 'American Air... | \n", 228 | "-0.459204 | \n", 229 | "N/A | \n", 230 | "
| 2 | \n", 233 | "AAP | \n", 234 | "{'symbol': 'AAP', 'companyName': 'Advance Auto... | \n", 235 | "0.105095 | \n", 236 | "N/A | \n", 237 | "
| 3 | \n", 240 | "AAPL | \n", 241 | "{'symbol': 'AAPL', 'companyName': 'Apple Inc',... | \n", 242 | "0.626905 | \n", 243 | "N/A | \n", 244 | "
| 4 | \n", 247 | "ABBV | \n", 248 | "{'symbol': 'ABBV', 'companyName': 'Abbvie Inc'... | \n", 249 | "0.330988 | \n", 250 | "N/A | \n", 251 | "
| ... | \n", 254 | "... | \n", 255 | "... | \n", 256 | "... | \n", 257 | "... | \n", 258 | "
| 500 | \n", 261 | "YUM | \n", 262 | "{'symbol': 'YUM', 'companyName': 'Yum Brands I... | \n", 263 | "0.031391 | \n", 264 | "N/A | \n", 265 | "
| 501 | \n", 268 | "ZBH | \n", 269 | "{'symbol': 'ZBH', 'companyName': 'Zimmer Biome... | \n", 270 | "0.082741 | \n", 271 | "N/A | \n", 272 | "
| 502 | \n", 275 | "ZBRA | \n", 276 | "{'symbol': 'ZBRA', 'companyName': 'Zebra Techn... | \n", 277 | "0.638815 | \n", 278 | "N/A | \n", 279 | "
| 503 | \n", 282 | "ZION | \n", 283 | "{'symbol': 'ZION', 'companyName': 'Zions Banco... | \n", 284 | "0.005153 | \n", 285 | "N/A | \n", 286 | "
| 504 | \n", 289 | "ZTS | \n", 290 | "{'symbol': 'ZTS', 'companyName': 'Zoetis Inc -... | \n", 291 | "0.164193 | \n", 292 | "N/A | \n", 293 | "
505 rows × 4 columns
\n", 297 | "| \n", 391 | " | index | \n", 392 | "Ticker | \n", 393 | "Price | \n", 394 | "One-Year Price Return | \n", 395 | "Number of Shares to Buy | \n", 396 | "
|---|---|---|---|---|---|
| 0 | \n", 401 | "78 | \n", 402 | "CARR | \n", 403 | "{'symbol': 'CARR', 'companyName': 'Carrier Glo... | \n", 404 | "2.372000 | \n", 405 | "N/A | \n", 406 | "
| 1 | \n", 409 | "179 | \n", 410 | "FCX | \n", 411 | "{'symbol': 'FCX', 'companyName': 'Freeport-McM... | \n", 412 | "1.398449 | \n", 413 | "N/A | \n", 414 | "
| 2 | \n", 417 | "275 | \n", 418 | "LB | \n", 419 | "{'symbol': 'LB', 'companyName': 'L Brands Inc'... | \n", 420 | "1.317416 | \n", 421 | "N/A | \n", 422 | "
| 3 | \n", 425 | "23 | \n", 426 | "ALB | \n", 427 | "{'symbol': 'ALB', 'companyName': 'Albemarle Co... | \n", 428 | "1.285509 | \n", 429 | "N/A | \n", 430 | "
| 4 | \n", 433 | "345 | \n", 434 | "NVDA | \n", 435 | "{'symbol': 'NVDA', 'companyName': 'NVIDIA Corp... | \n", 436 | "1.099806 | \n", 437 | "N/A | \n", 438 | "
| 5 | \n", 441 | "387 | \n", 442 | "PYPL | \n", 443 | "{'symbol': 'PYPL', 'companyName': 'PayPal Hold... | \n", 444 | "1.075444 | \n", 445 | "N/A | \n", 446 | "
| 6 | \n", 449 | "24 | \n", 450 | "ALGN | \n", 451 | "{'symbol': 'ALGN', 'companyName': 'Align Techn... | \n", 452 | "1.059351 | \n", 453 | "N/A | \n", 454 | "
| 7 | \n", 457 | "490 | \n", 458 | "WST | \n", 459 | "{'symbol': 'WST', 'companyName': 'West Pharmac... | \n", 460 | "0.914538 | \n", 461 | "N/A | \n", 462 | "
| 8 | \n", 465 | "385 | \n", 466 | "PWR | \n", 467 | "{'symbol': 'PWR', 'companyName': 'Quanta Servi... | \n", 468 | "0.895436 | \n", 469 | "N/A | \n", 470 | "
| 9 | \n", 473 | "85 | \n", 474 | "CDNS | \n", 475 | "{'symbol': 'CDNS', 'companyName': 'Cadence Des... | \n", 476 | "0.853129 | \n", 477 | "N/A | \n", 478 | "
| 10 | \n", 481 | "6 | \n", 482 | "ABMD | \n", 483 | "{'symbol': 'ABMD', 'companyName': 'Abiomed Inc... | \n", 484 | "0.845840 | \n", 485 | "N/A | \n", 486 | "
| 11 | \n", 489 | "288 | \n", 490 | "LRCX | \n", 491 | "{'symbol': 'LRCX', 'companyName': 'Lam Researc... | \n", 492 | "0.820363 | \n", 493 | "N/A | \n", 494 | "
| 12 | \n", 497 | "410 | \n", 498 | "SIVB | \n", 499 | "{'symbol': 'SIVB', 'companyName': 'SVB Financi... | \n", 500 | "0.789187 | \n", 501 | "N/A | \n", 502 | "
| 13 | \n", 505 | "31 | \n", 506 | "AMD | \n", 507 | "{'symbol': 'AMD', 'companyName': 'Advanced Mic... | \n", 508 | "0.766951 | \n", 509 | "N/A | \n", 510 | "
| 14 | \n", 513 | "266 | \n", 514 | "KLAC | \n", 515 | "{'symbol': 'KLAC', 'companyName': 'KLA Corp.',... | \n", 516 | "0.764740 | \n", 517 | "N/A | \n", 518 | "
| 15 | \n", 521 | "444 | \n", 522 | "TSCO | \n", 523 | "{'symbol': 'TSCO', 'companyName': 'Tractor Sup... | \n", 524 | "0.745959 | \n", 525 | "N/A | \n", 526 | "
| 16 | \n", 529 | "236 | \n", 530 | "IDXX | \n", 531 | "{'symbol': 'IDXX', 'companyName': 'Idexx Labor... | \n", 532 | "0.741275 | \n", 533 | "N/A | \n", 534 | "
| 17 | \n", 537 | "436 | \n", 538 | "TGT | \n", 539 | "{'symbol': 'TGT', 'companyName': 'Target Corp'... | \n", 540 | "0.726739 | \n", 541 | "N/A | \n", 542 | "
| 18 | \n", 545 | "128 | \n", 546 | "DE | \n", 547 | "{'symbol': 'DE', 'companyName': 'Deere & Co.',... | \n", 548 | "0.724275 | \n", 549 | "N/A | \n", 550 | "
| 19 | \n", 553 | "415 | \n", 554 | "SNPS | \n", 555 | "{'symbol': 'SNPS', 'companyName': 'Synopsys, I... | \n", 556 | "0.709623 | \n", 557 | "N/A | \n", 558 | "
| 20 | \n", 561 | "246 | \n", 562 | "IPGP | \n", 563 | "{'symbol': 'IPGP', 'companyName': 'IPG Photoni... | \n", 564 | "0.704526 | \n", 565 | "N/A | \n", 566 | "
| 21 | \n", 569 | "388 | \n", 570 | "QCOM | \n", 571 | "{'symbol': 'QCOM', 'companyName': 'Qualcomm, I... | \n", 572 | "0.691453 | \n", 573 | "N/A | \n", 574 | "
| 22 | \n", 577 | "29 | \n", 578 | "AMAT | \n", 579 | "{'symbol': 'AMAT', 'companyName': 'Applied Mat... | \n", 580 | "0.686041 | \n", 581 | "N/A | \n", 582 | "
| 23 | \n", 585 | "36 | \n", 586 | "AMZN | \n", 587 | "{'symbol': 'AMZN', 'companyName': 'Amazon.com ... | \n", 588 | "0.680633 | \n", 589 | "N/A | \n", 590 | "
| 24 | \n", 593 | "339 | \n", 594 | "NOW | \n", 595 | "{'symbol': 'NOW', 'companyName': 'ServiceNow I... | \n", 596 | "0.647236 | \n", 597 | "N/A | \n", 598 | "
| 25 | \n", 601 | "502 | \n", 602 | "ZBRA | \n", 603 | "{'symbol': 'ZBRA', 'companyName': 'Zebra Techn... | \n", 604 | "0.638815 | \n", 605 | "N/A | \n", 606 | "
| 26 | \n", 609 | "3 | \n", 610 | "AAPL | \n", 611 | "{'symbol': 'AAPL', 'companyName': 'Apple Inc',... | \n", 612 | "0.626905 | \n", 613 | "N/A | \n", 614 | "
| 27 | \n", 617 | "63 | \n", 618 | "BIO | \n", 619 | "{'symbol': 'BIO', 'companyName': 'Bio-Rad Labo... | \n", 620 | "0.623846 | \n", 621 | "N/A | \n", 622 | "
| 28 | \n", 625 | "101 | \n", 626 | "CMG | \n", 627 | "{'symbol': 'CMG', 'companyName': 'Chipotle Mex... | \n", 628 | "0.616703 | \n", 629 | "N/A | \n", 630 | "
| 29 | \n", 633 | "13 | \n", 634 | "ADSK | \n", 635 | "{'symbol': 'ADSK', 'companyName': 'Autodesk In... | \n", 636 | "0.615915 | \n", 637 | "N/A | \n", 638 | "
| 30 | \n", 641 | "180 | \n", 642 | "FDX | \n", 643 | "{'symbol': 'FDX', 'companyName': 'Fedex Corp',... | \n", 644 | "0.612854 | \n", 645 | "N/A | \n", 646 | "
| 31 | \n", 649 | "462 | \n", 650 | "URI | \n", 651 | "{'symbol': 'URI', 'companyName': 'United Renta... | \n", 652 | "0.610011 | \n", 653 | "N/A | \n", 654 | "
| 32 | \n", 657 | "400 | \n", 658 | "ROL | \n", 659 | "{'symbol': 'ROL', 'companyName': 'Rollins, Inc... | \n", 660 | "0.599151 | \n", 661 | "N/A | \n", 662 | "
| 33 | \n", 665 | "325 | \n", 666 | "MXIM | \n", 667 | "{'symbol': 'MXIM', 'companyName': 'Maxim Integ... | \n", 668 | "0.590771 | \n", 669 | "N/A | \n", 670 | "
| 34 | \n", 673 | "45 | \n", 674 | "APTV | \n", 675 | "{'symbol': 'APTV', 'companyName': 'Aptiv PLC',... | \n", 676 | "0.587889 | \n", 677 | "N/A | \n", 678 | "
| 35 | \n", 681 | "440 | \n", 682 | "TMUS | \n", 683 | "{'symbol': 'TMUS', 'companyName': 'T-Mobile US... | \n", 684 | "0.587534 | \n", 685 | "N/A | \n", 686 | "
| 36 | \n", 689 | "120 | \n", 690 | "CTVA | \n", 691 | "{'symbol': 'CTVA', 'companyName': 'Corteva Inc... | \n", 692 | "0.576934 | \n", 693 | "N/A | \n", 694 | "
| 37 | \n", 697 | "152 | \n", 698 | "EBAY | \n", 699 | "{'symbol': 'EBAY', 'companyName': 'EBay Inc.',... | \n", 700 | "0.571282 | \n", 701 | "N/A | \n", 702 | "
| 38 | \n", 705 | "389 | \n", 706 | "QRVO | \n", 707 | "{'symbol': 'QRVO', 'companyName': 'Qorvo Inc',... | \n", 708 | "0.556746 | \n", 709 | "N/A | \n", 710 | "
| 39 | \n", 713 | "150 | \n", 714 | "DXCM | \n", 715 | "{'symbol': 'DXCM', 'companyName': 'Dexcom Inc'... | \n", 716 | "0.549310 | \n", 717 | "N/A | \n", 718 | "
| 40 | \n", 721 | "319 | \n", 722 | "MSCI | \n", 723 | "{'symbol': 'MSCI', 'companyName': 'MSCI Inc', ... | \n", 724 | "0.521268 | \n", 725 | "N/A | \n", 726 | "
| 41 | \n", 729 | "447 | \n", 730 | "TTWO | \n", 731 | "{'symbol': 'TTWO', 'companyName': 'Take-Two In... | \n", 732 | "0.513972 | \n", 733 | "N/A | \n", 734 | "
| 42 | \n", 737 | "50 | \n", 738 | "AVGO | \n", 739 | "{'symbol': 'AVGO', 'companyName': 'Broadcom In... | \n", 740 | "0.512355 | \n", 741 | "N/A | \n", 742 | "
| 43 | \n", 745 | "351 | \n", 746 | "ODFL | \n", 747 | "{'symbol': 'ODFL', 'companyName': 'Old Dominio... | \n", 748 | "0.511270 | \n", 749 | "N/A | \n", 750 | "
| 44 | \n", 753 | "48 | \n", 754 | "ATVI | \n", 755 | "{'symbol': 'ATVI', 'companyName': 'Activision ... | \n", 756 | "0.510283 | \n", 757 | "N/A | \n", 758 | "
| 45 | \n", 761 | "147 | \n", 762 | "DVA | \n", 763 | "{'symbol': 'DVA', 'companyName': 'DaVita Inc',... | \n", 764 | "0.494770 | \n", 765 | "N/A | \n", 766 | "
| 46 | \n", 769 | "439 | \n", 770 | "TMO | \n", 771 | "{'symbol': 'TMO', 'companyName': 'Thermo Fishe... | \n", 772 | "0.488762 | \n", 773 | "N/A | \n", 774 | "
| 47 | \n", 777 | "332 | \n", 778 | "NFLX | \n", 779 | "{'symbol': 'NFLX', 'companyName': 'NetFlix Inc... | \n", 780 | "0.476668 | \n", 781 | "N/A | \n", 782 | "
| 48 | \n", 785 | "133 | \n", 786 | "DHR | \n", 787 | "{'symbol': 'DHR', 'companyName': 'Danaher Corp... | \n", 788 | "0.474731 | \n", 789 | "N/A | \n", 790 | "
| 49 | \n", 793 | "323 | \n", 794 | "MTD | \n", 795 | "{'symbol': 'MTD', 'companyName': 'Mettler-Tole... | \n", 796 | "0.474263 | \n", 797 | "N/A | \n", 798 | "