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 [ ]:
Content source: hydrosquall/tiingo-python
Similar notebooks: