In [28]:
tKey = 'YOUR_TIINGO_KEY'
%matplotlib inline
import pandas as pd
import pandas_datareader.tiingo as tiingo
import datetime

# last trade day from previous year
# TODO: auto calculate
dStrLastYearClose = '12/31/2018'

# get the current date
d = datetime.datetime.today()
# convert to string format
dStrToday = d.strftime('%m/%d/%Y')
dStrYearStart = d.strftime('01/01/%Y')

# tickers of all peers
peers = ['CRZO','CDEV','DNR','LPI','OAS','PDCE','PE','RRC','SM','SWN','WLL','WPX','XEC']

# fetch the stock data
dr = tiingo.TiingoDailyReader(symbols=peers, start=dStrLastYearClose, end=dStrToday, api_key=tKey)
df = dr.read()
dr.close()

# show some stats on the data
df.describe()


Out[28]:
adjClose adjHigh adjLow adjOpen adjVolume close divCash high low open splitFactor volume
count 520.000000 520.000000 520.000000 520.000000 5.200000e+02 520.000000 520.000000 520.000000 520.000000 520.000000 520.0 5.200000e+02
mean 18.074767 18.411541 17.668075 18.006340 6.159148e+06 18.085019 0.000346 18.421913 17.678127 18.016529 1.0 6.159148e+06
std 18.095398 18.330301 17.768455 18.011581 5.056756e+06 18.125904 0.007894 18.361045 17.798370 18.041850 0.0 5.056756e+06
min 1.710000 1.780000 1.600000 1.650000 6.352690e+05 1.710000 0.000000 1.780000 1.600000 1.650000 1.0 6.352690e+05
25% 5.892500 6.032500 5.760000 5.847500 2.570019e+06 5.892500 0.000000 6.032500 5.760000 5.847500 1.0 2.570019e+06
50% 12.525000 12.782500 12.275000 12.480000 4.724221e+06 12.525000 0.000000 12.782500 12.275000 12.480000 1.0 4.724221e+06
75% 19.635000 19.902275 19.067500 19.475000 8.279120e+06 19.635000 0.000000 19.902275 19.067500 19.475000 1.0 8.279120e+06
max 76.420000 76.915083 75.189233 76.166882 3.783066e+07 76.420000 0.180000 77.100000 75.370000 76.350000 1.0 3.783066e+07

In [2]:
# show column info
df.columns


Out[2]:
Index(['adjClose', 'adjHigh', 'adjLow', 'adjOpen', 'adjVolume', 'close',
       'divCash', 'high', 'low', 'open', 'splitFactor', 'volume'],
      dtype='object')

In [3]:
# filter data down to adjusted close price
df_close = df.loc[peers,['adjClose']]

df_close.head()


Out[3]:
adjClose
symbol date
CRZO 2018-12-31 11.29
2019-01-02 11.51
2019-01-03 11.45
2019-01-04 12.18
2019-01-07 12.54

In [4]:
# pivot the data
df_pivot = pd.pivot_table(df_close, index='date', columns='symbol',values="adjClose")

df_pivot.head(10)


Out[4]:
symbol CDEV CRZO DNR LPI OAS PDCE PE RRC SM SWN WLL WPX XEC
date
2018-12-31 11.02 11.29 1.71 3.62 5.53 29.76 15.98 9.57 15.48 3.41 22.69 11.35 61.502139
2019-01-02 11.30 11.51 1.96 3.74 5.54 30.42 16.22 9.96 15.34 3.72 22.69 11.63 62.559596
2019-01-03 11.28 11.45 1.97 3.66 5.64 30.96 16.15 9.95 15.32 3.64 22.80 11.54 61.691683
2019-01-04 11.81 12.18 2.19 3.99 6.04 32.71 16.88 10.69 16.63 3.90 24.77 12.13 64.774272
2019-01-07 12.68 12.54 2.20 4.12 6.18 34.25 18.12 11.13 17.48 4.07 26.65 12.87 66.200842
2019-01-08 12.89 12.49 2.19 4.17 6.42 34.02 18.74 11.00 17.96 4.11 27.18 12.93 67.268276
2019-01-09 13.22 12.93 2.23 4.19 6.58 34.04 19.19 11.60 18.78 4.37 28.63 13.06 68.545206
2019-01-10 13.21 12.64 2.29 4.18 6.59 33.99 19.01 11.44 19.44 4.30 28.67 13.18 70.291009
2019-01-11 13.03 12.24 2.17 4.01 6.33 33.57 18.72 11.50 19.31 4.35 27.47 12.85 70.470577
2019-01-14 13.30 12.34 2.15 4.03 6.41 33.57 18.46 11.87 19.34 4.38 27.87 12.72 71.857243

In [5]:
# Close price at end of previous year
df_pivot.iloc[0,:]


Out[5]:
symbol
CDEV    11.020000
CRZO    11.290000
DNR      1.710000
LPI      3.620000
OAS      5.530000
PDCE    29.760000
PE      15.980000
RRC      9.570000
SM      15.480000
SWN      3.410000
WLL     22.690000
WPX     11.350000
XEC     61.502139
Name: 2018-12-31 00:00:00, dtype: float64

In [6]:
# Latest price at close
df_pivot.iloc[-1,:]


Out[6]:
symbol
CDEV     9.66
CRZO    11.30
DNR      2.05
LPI      3.48
OAS      5.91
PDCE    37.14
PE      18.62
RRC     10.36
SM      16.65
SWN      4.29
WLL     25.01
WPX     12.59
XEC     72.64
Name: 2019-02-27 00:00:00, dtype: float64

In [21]:
# Calculate YTD performance
perf_ytd = (df_pivot / df_pivot.iloc[0,:]) - 1

perf_ytd


Out[21]:
symbol CDEV CRZO DNR LPI OAS PDCE PE RRC SM SWN WLL WPX XEC
date
2018-12-31 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2019-01-02 0.025408 0.019486 0.146199 0.033149 0.001808 0.022177 0.015019 0.040752 -0.009044 0.090909 0.000000 0.024670 0.017194
2019-01-03 0.023593 0.014172 0.152047 0.011050 0.019892 0.040323 0.010638 0.039707 -0.010336 0.067449 0.004848 0.016740 0.003082
2019-01-04 0.071688 0.078831 0.280702 0.102210 0.092224 0.099126 0.056320 0.117032 0.074289 0.143695 0.091670 0.068722 0.053204
2019-01-07 0.150635 0.110717 0.286550 0.138122 0.117541 0.150874 0.133917 0.163009 0.129199 0.193548 0.174526 0.133921 0.076399
2019-01-08 0.169691 0.106289 0.280702 0.151934 0.160940 0.143145 0.172716 0.149425 0.160207 0.205279 0.197885 0.139207 0.093755
2019-01-09 0.199637 0.145261 0.304094 0.157459 0.189873 0.143817 0.200876 0.212121 0.213178 0.281525 0.261789 0.150661 0.114517
2019-01-10 0.198730 0.119575 0.339181 0.154696 0.191682 0.142137 0.189612 0.195402 0.255814 0.260997 0.263552 0.161233 0.142903
2019-01-11 0.182396 0.084145 0.269006 0.107735 0.144665 0.128024 0.171464 0.201672 0.247416 0.275660 0.210665 0.132159 0.145823
2019-01-14 0.206897 0.093003 0.257310 0.113260 0.159132 0.128024 0.155194 0.240334 0.249354 0.284457 0.228294 0.120705 0.168370
2019-01-15 0.225045 0.110717 0.280702 0.104972 0.175407 0.125672 0.170213 0.226750 0.282300 0.293255 0.270604 0.133040 0.189294
2019-01-16 0.248639 0.073516 0.269006 0.099448 0.182640 0.113239 0.187735 0.223615 0.293282 0.287390 0.270163 0.123348 0.199027
2019-01-17 0.262250 0.051373 0.274854 0.027624 0.198915 0.105511 0.192115 0.203762 0.313307 0.304985 0.282503 0.119824 0.188159
2019-01-18 0.288566 0.109832 0.309942 0.077348 0.226040 0.127352 0.204631 0.206897 0.365633 0.346041 0.313795 0.153304 0.212328
2019-01-22 0.196915 0.067316 0.192982 -0.011050 0.110307 0.126008 0.168335 0.136886 0.293928 0.252199 0.204936 0.081057 0.191727
2019-01-23 0.174229 0.005314 0.169591 -0.024862 0.095841 0.135753 0.136421 0.106583 0.239664 0.234604 0.163508 0.066960 0.174047
2019-01-24 0.160617 0.014172 0.181287 0.000000 0.124774 0.127016 0.135169 0.129572 0.235788 0.275660 0.205818 0.077533 0.188483
2019-01-25 0.186025 0.004429 0.210526 0.019337 0.132007 0.123320 0.155194 0.177638 0.258398 0.328446 0.258704 0.099559 0.227899
2019-01-28 0.172414 -0.011515 0.152047 -0.005525 0.106691 0.075269 0.126408 0.177638 0.247416 0.287390 0.241075 0.069604 0.211841
2019-01-29 0.179673 0.010629 0.181287 0.008287 0.097649 0.065860 0.132666 0.183908 0.271318 0.310850 0.236227 0.070485 0.217032
2019-01-30 0.221416 0.101860 0.233918 0.066298 0.139241 0.146169 0.177096 0.228840 0.319121 0.348974 0.297929 0.088106 0.238767
2019-01-31 0.195100 0.087688 0.187135 0.049724 0.088608 0.094422 0.162703 0.152560 0.267442 0.281525 0.261789 0.080176 0.222060
2019-02-01 0.208711 0.137290 0.210526 0.077348 0.108499 0.113575 0.164581 0.144201 0.275194 0.284457 0.293521 0.102203 0.235523
2019-02-04 0.209619 0.154119 0.216374 0.091160 0.110307 0.129032 0.180851 0.137931 0.257752 0.275660 0.325253 0.144493 0.237307
2019-02-05 0.170599 0.124004 0.181287 0.058011 0.050633 0.115591 0.150188 0.120167 0.217700 0.243402 0.267078 0.138326 0.226926
2019-02-06 0.166969 0.108946 0.152047 0.041436 0.041591 0.108535 0.149562 0.059561 0.209302 0.167155 0.269282 0.135683 0.212814
2019-02-07 0.130672 0.031887 0.081871 -0.044199 0.010850 0.072245 0.118273 0.009404 0.125969 0.090909 0.187748 0.078414 0.160746
2019-02-08 0.112523 -0.023915 0.000000 -0.049724 -0.001808 0.035618 0.103880 -0.013584 0.082687 0.114370 0.162627 0.049339 0.145499
2019-02-11 0.118875 -0.001771 0.046784 0.022099 0.021700 0.044691 0.128911 0.081505 0.127907 0.155425 0.175408 0.072247 0.172263
2019-02-12 0.118875 0.029229 0.081871 0.002762 0.043400 0.130376 0.119524 0.087774 0.179587 0.175953 0.200970 0.086344 0.182482
2019-02-13 0.116152 0.055802 0.122807 0.046961 0.061483 0.188172 0.140175 0.085684 0.228682 0.187683 0.221684 0.122467 0.205353
2019-02-14 0.138838 0.078831 0.216374 0.063536 0.070524 0.227487 0.154568 0.084639 0.217700 0.175953 0.262230 0.147137 0.217356
2019-02-15 0.177858 0.123118 0.257310 0.066298 0.124774 0.284946 0.172090 0.135841 0.279716 0.228739 0.293962 0.181498 0.235567
2019-02-19 0.170599 0.113375 0.269006 0.038674 0.108499 0.279906 0.177722 0.137931 0.232558 0.222874 0.290877 0.166520 0.220608
2019-02-20 0.188748 0.116032 0.309942 0.055249 0.148282 0.319220 0.160200 0.157785 0.271964 0.269795 0.316439 0.180617 0.242558
2019-02-21 0.120690 0.052259 0.251462 -0.008287 0.097649 0.302083 0.122028 0.131661 0.099483 0.255132 0.281181 0.140969 0.192154
2019-02-22 0.138838 0.043401 0.251462 0.000000 0.112116 0.313172 0.209637 0.108673 0.091085 0.243402 0.281181 0.131278 0.206137
2019-02-25 0.153358 0.029229 0.222222 -0.008287 0.101266 0.262433 0.172716 0.150470 0.091085 0.293255 0.249008 0.098678 0.198658
2019-02-26 -0.107078 0.058459 0.181287 -0.033149 0.066908 0.244624 0.143304 0.107628 0.060724 0.272727 0.239753 0.083700 0.180447
2019-02-27 -0.123412 0.000886 0.198830 -0.038674 0.068716 0.247984 0.165207 0.082550 0.075581 0.258065 0.102248 0.109251 0.181097

In [34]:
perf_ytd.plot(title='Peer YTD Performance', figsize=(20,10))


Out[34]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f00114f6630>

In [23]:
# Daily performance
perf_daily = df_pivot.pct_change(1)

perf_daily


Out[23]:
symbol CDEV CRZO DNR LPI OAS PDCE PE RRC SM SWN WLL WPX XEC
date
2018-12-31 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2019-01-02 0.025408 0.019486 0.146199 0.033149 0.001808 0.022177 0.015019 0.040752 -0.009044 0.090909 0.000000 0.024670 0.017194
2019-01-03 -0.001770 -0.005213 0.005102 -0.021390 0.018051 0.017751 -0.004316 -0.001004 -0.001304 -0.021505 0.004848 -0.007739 -0.013873
2019-01-04 0.046986 0.063755 0.111675 0.090164 0.070922 0.056525 0.045201 0.074372 0.085509 0.071429 0.086404 0.051127 0.049968
2019-01-07 0.073666 0.029557 0.004566 0.032581 0.023179 0.047080 0.073460 0.041160 0.051112 0.043590 0.075898 0.061006 0.022024
2019-01-08 0.016562 -0.003987 -0.004545 0.012136 0.038835 -0.006715 0.034216 -0.011680 0.027460 0.009828 0.019887 0.004662 0.016124
2019-01-09 0.025601 0.035228 0.018265 0.004796 0.024922 0.000588 0.024013 0.054545 0.045657 0.063260 0.053348 0.010054 0.018983
2019-01-10 -0.000756 -0.022428 0.026906 -0.002387 0.001520 -0.001469 -0.009380 -0.013793 0.035144 -0.016018 0.001397 0.009188 0.025469
2019-01-11 -0.013626 -0.031646 -0.052402 -0.040670 -0.039454 -0.012357 -0.015255 0.005245 -0.006687 0.011628 -0.041856 -0.025038 0.002555
2019-01-14 0.020721 0.008170 -0.009217 0.004988 0.012638 0.000000 -0.013889 0.032174 0.001554 0.006897 0.014561 -0.010117 0.019677
2019-01-15 0.015038 0.016207 0.018605 -0.007444 0.014041 -0.002085 0.013001 -0.010952 0.026370 0.006849 0.034446 0.011006 0.017909
2019-01-16 0.019259 -0.033493 -0.009132 -0.005000 0.006154 -0.011045 0.014973 -0.002555 0.008564 -0.004535 -0.000347 -0.008554 0.008183
2019-01-17 0.010901 -0.020627 0.004608 -0.065327 0.013761 -0.006942 0.003688 -0.016225 0.015485 0.013667 0.009715 -0.003137 -0.009064
2019-01-18 0.020848 0.055602 0.027523 0.048387 0.022624 0.019757 0.010499 0.002604 0.039843 0.031461 0.024399 0.029898 0.020341
2019-01-22 -0.071127 -0.038308 -0.089286 -0.082051 -0.094395 -0.001192 -0.030130 -0.058009 -0.052507 -0.069717 -0.082858 -0.062643 -0.016992
2019-01-23 -0.018954 -0.058091 -0.019608 -0.013966 -0.013029 0.008654 -0.027317 -0.026654 -0.041937 -0.014052 -0.034382 -0.013040 -0.014836
2019-01-24 -0.011592 0.008811 0.010000 0.025496 0.026403 -0.007692 -0.001101 0.020774 -0.003127 0.033254 0.036364 0.009909 0.012296
2019-01-25 0.021892 -0.009607 0.024752 0.019337 0.006431 -0.003280 0.017641 0.042553 0.018296 0.041379 0.043860 0.020442 0.033165
2019-01-28 -0.011477 -0.015873 -0.048309 -0.024390 -0.022364 -0.042776 -0.024919 0.000000 -0.008727 -0.030905 -0.014006 -0.027244 -0.013078
2019-01-29 0.006192 0.022401 0.025381 0.013889 -0.008170 -0.008750 0.005556 0.005324 0.019161 0.018223 -0.003906 0.000824 0.004283
2019-01-30 0.035385 0.090272 0.044554 0.057534 0.037891 0.075347 0.039227 0.037952 0.037602 0.029083 0.049911 0.016461 0.017860
2019-01-31 -0.021545 -0.012862 -0.037915 -0.015544 -0.044444 -0.045148 -0.012228 -0.062075 -0.039177 -0.050000 -0.027844 -0.007287 -0.013487
2019-02-01 0.011390 0.045603 0.019704 0.026316 0.018272 0.017501 0.001615 -0.007253 0.006116 0.002288 0.025148 0.020392 0.011017
2019-02-04 0.000751 0.014798 0.004831 0.012821 0.001631 0.013881 0.013971 -0.005479 -0.013678 -0.006849 0.024532 0.038369 0.001444
2019-02-05 -0.032258 -0.026094 -0.028846 -0.030380 -0.053746 -0.011905 -0.025967 -0.015611 -0.031844 -0.025287 -0.043898 -0.005389 -0.008390
2019-02-06 -0.003101 -0.013396 -0.024752 -0.015666 -0.008606 -0.006325 -0.000544 -0.054104 -0.006897 -0.061321 0.001739 -0.002322 -0.011502
2019-02-07 -0.031104 -0.069489 -0.060914 -0.082228 -0.029514 -0.032737 -0.027218 -0.047337 -0.068910 -0.065327 -0.064236 -0.050427 -0.042932
2019-02-08 -0.016051 -0.054077 -0.075676 -0.005780 -0.012522 -0.034159 -0.012871 -0.022774 -0.038439 0.021505 -0.021150 -0.026961 -0.013136
2019-02-11 0.005710 0.022686 0.046784 0.075581 0.023551 0.008761 0.022676 0.096398 0.041766 0.036842 0.010993 0.021830 0.023364
2019-02-12 0.000000 0.031056 0.033520 -0.018919 0.021239 0.082020 -0.008315 0.005797 0.045819 0.017766 0.021747 0.013147 0.008717
2019-02-13 -0.002433 0.025818 0.037838 0.044077 0.017331 0.051130 0.018446 -0.001921 0.041621 0.009975 0.017248 0.033252 0.019342
2019-02-14 0.020325 0.021812 0.083333 0.015831 0.008518 0.033088 0.012623 -0.000962 -0.008938 -0.009877 0.033189 0.021978 0.009958
2019-02-15 0.034263 0.041051 0.033654 0.002597 0.050676 0.046811 0.015176 0.047206 0.050928 0.044888 0.025140 0.029954 0.014959
2019-02-19 -0.006163 -0.008675 0.009302 -0.025907 -0.014469 -0.003923 0.004805 0.001840 -0.036850 -0.004773 -0.002384 -0.012677 -0.012107
2019-02-20 0.015504 0.002387 0.032258 0.015957 0.035889 0.030717 -0.014878 0.017447 0.031971 0.038369 0.019802 0.012085 0.017983
2019-02-21 -0.057252 -0.057143 -0.044643 -0.060209 -0.044094 -0.012990 -0.032902 -0.022563 -0.135602 -0.011547 -0.026783 -0.033582 -0.040565
2019-02-22 0.016194 -0.008418 0.000000 0.008357 0.013180 0.008516 0.078081 -0.020314 -0.007638 -0.009346 0.000000 -0.008494 0.011729
2019-02-25 0.012749 -0.013582 -0.023364 -0.008287 -0.009756 -0.038639 -0.030523 0.037700 0.000000 0.040094 -0.025112 -0.028816 -0.006201
2019-02-26 -0.225806 0.028399 -0.033493 -0.025070 -0.031199 -0.014107 -0.025080 -0.037239 -0.027827 -0.015873 -0.007410 -0.013633 -0.015193
2019-02-27 -0.018293 -0.054393 0.014851 -0.005714 0.001695 0.002700 0.019157 -0.022642 0.014007 -0.011521 -0.110914 0.023577 0.000551

In [ ]: