QuantRocket logo

Trade inspection

This notebook shows how to inspect individual trades.

First, we can load the transactions and identify a trade to look at. Here we load transactions for a particular month:

In [1]:
from quantrocket.zipline import ZiplineBacktestResult
result = ZiplineBacktestResult.from_csv("sell_gap_backtest_results.csv")
transactions = result.transactions

# Set UTC to America/New_York time for convenience
transactions = transactions.tz_convert("America/New_York").tz_localize(None)
transactions.loc["2020-02"]
Out[1]:
columnamountorder_idpricesidsymboltxn_dollars
date
2020-02-03 09:41:00-439b983ddc047544a3082b8428c656eafe0113.600910Equity(FIBBG000K82ZT8 [CHKP])Equity(FIBBG000K82ZT8 [CHKP])49870.799270
2020-02-03 15:56:00439b6dff03a1a364feb996af6310646b046113.604071Equity(FIBBG000K82ZT8 [CHKP])Equity(FIBBG000K82ZT8 [CHKP])-49872.187169
2020-02-06 09:41:00-20283f6a0b029b842198db1f8f32a975b60245.486332Equity(FIBBG000BCZYD3 [BDX])Equity(FIBBG000BCZYD3 [BDX])49588.239064
2020-02-06 09:41:00-7662a110acfeae84834bbeb1b44879367a964.910521Equity(FIBBG005D7PF34 [CDAY])Equity(FIBBG005D7PF34 [CDAY])49721.459086
2020-02-06 09:41:00-484ef3ac1fae39b4d7db2a15c2f7449c920103.368980Equity(FIBBG000BH3GZ2 [YUM])Equity(FIBBG000BH3GZ2 [YUM])50030.586320
2020-02-06 15:56:002020febd5ea68834a87a9dd538620d0254a253.095906Equity(FIBBG000BCZYD3 [BDX])Equity(FIBBG000BCZYD3 [BDX])-51125.373012
2020-02-06 15:56:00766b4e349c75f6a4f1b80cab9171b1ec5d465.749719Equity(FIBBG005D7PF34 [CDAY])Equity(FIBBG005D7PF34 [CDAY])-50364.284754
2020-02-06 15:56:00484812233ccf0a54717bf2f23f18fa89651103.806132Equity(FIBBG000BH3GZ2 [YUM])Equity(FIBBG000BH3GZ2 [YUM])-50242.168130
2020-02-07 09:41:00-434a34eb7144c3741c9abb21e02be7e0c40114.935509Equity(FIBBG000BS1YV5 [TTWO])Equity(FIBBG000BS1YV5 [TTWO])49882.010906
2020-02-07 15:56:004340f4f16efd1de4d5aaff6db2a66929562112.868850Equity(FIBBG000BS1YV5 [TTWO])Equity(FIBBG000BS1YV5 [TTWO])-48985.081117
2020-02-11 09:41:00-10612fa4f184b69b4b069196b3bb8f67f0fe47.105864Equity(FIBBG000BNNKG9 [MAS])Equity(FIBBG000BNNKG9 [MAS])49979.321704
2020-02-11 15:56:001061c93eb2b6f18c4188a4f2007ef8f8b49a47.669297Equity(FIBBG000BNNKG9 [MAS])Equity(FIBBG000BNNKG9 [MAS])-50577.123586
2020-02-12 09:41:00-2601cb7bda83ef9b4d29aed34676446db11d19.158251Equity(FIBBG003PHHZT1 [MRNA])Equity(FIBBG003PHHZT1 [MRNA])49830.610331
2020-02-12 09:41:00-1898edf253846bfb48e8b851ca335b01beb926.257121Equity(FIBBG000BB5373 [WU])Equity(FIBBG000BB5373 [WU])49836.014709
2020-02-12 15:56:002601b6e4d3ae50e04a4c87e68361aaacc68719.010701Equity(FIBBG003PHHZT1 [MRNA])Equity(FIBBG003PHHZT1 [MRNA])-49446.834601
2020-02-12 15:56:001898e302a85f35c6477b9d70d35a519be50d26.092826Equity(FIBBG000BB5373 [WU])Equity(FIBBG000BB5373 [WU])-49524.182799
2020-02-13 09:41:00-385a22ceaadd2024971a816dfd89d12a83b130.160940Equity(FIBBG000BLSL58 [IFF])Equity(FIBBG000BLSL58 [IFF])50111.961900
2020-02-13 09:41:00-21330ecc4439c114a60977f464d14820cb3234.749554Equity(FIBBG000CC7LQ7 [ZBRA])Equity(FIBBG000CC7LQ7 [ZBRA])50001.655002
2020-02-13 09:41:00-9287736ded1c6434981b0657f820301ab6353.703884Equity(FIBBG000FP1N32 [NTAP])Equity(FIBBG000FP1N32 [NTAP])49837.204352
2020-02-13 09:41:00-10593888ce9ee8964ed1abc3e01250932ede47.065876Equity(FIBBG000C3J3C9 [CSCO])Equity(FIBBG000C3J3C9 [CSCO])49842.762684
2020-02-13 15:56:0038518ddf82d75de4fafa9fa5aefd6aacd9e136.931067Equity(FIBBG000BLSL58 [IFF])Equity(FIBBG000BLSL58 [IFF])-52718.460795
2020-02-13 15:56:00213a76181649e2e4083ade891d21d58d51d234.240251Equity(FIBBG000CC7LQ7 [ZBRA])Equity(FIBBG000CC7LQ7 [ZBRA])-49893.173463
2020-02-13 15:56:00928193cfb6961cb4d408ca2f35031af055b55.161544Equity(FIBBG000FP1N32 [NTAP])Equity(FIBBG000FP1N32 [NTAP])-51189.912368
2020-02-13 15:56:001059589228b8937c429d8e27f8a5cf16ef2a47.379209Equity(FIBBG000C3J3C9 [CSCO])Equity(FIBBG000C3J3C9 [CSCO])-50174.582860
2020-02-18 09:41:00-296448d275fe2ce4dba98134c9da477bdb3169.209222Equity(FIBBG000BMTFR4 [KLAC])Equity(FIBBG000BMTFR4 [KLAC])50085.929712
2020-02-18 15:56:00296c30c7262e16941829ba43ef7ca132b14169.470826Equity(FIBBG000BMTFR4 [KLAC])Equity(FIBBG000BMTFR4 [KLAC])-50163.364496
2020-02-21 09:41:00-9864566ecff920d4b9cb88351b001001ac750.534835Equity(FIBBG000BFL116 [FSLR])Equity(FIBBG000BFL116 [FSLR])49827.347310
2020-02-21 15:56:00986c508231c76e04ac99c25b921a9bffe7e50.610179Equity(FIBBG000BFL116 [FSLR])Equity(FIBBG000BFL116 [FSLR])-49901.636001
2020-02-24 09:41:00-274fdabdffde7c459eb94bc2695fc185d11782.984944Equity(FIBBG000BLBVN4 [BKNG])Equity(FIBBG000BLBVN4 [BKNG])48140.593488
2020-02-24 09:41:00-1759e6ac36506674d548ef95aa07b710b52282.795136Equity(FIBBG000CH5208 [UNH])Equity(FIBBG000CH5208 [UNH])49489.148800
2020-02-24 09:41:00-24121b33604f12d4888991f738cf352a96b205.623294Equity(FIBBG00KXRCDP0 [CI])Equity(FIBBG00KXRCDP0 [CI])49555.213975
2020-02-24 09:41:00-245aa45e7b5a8bc47d2ab3ce5143bdaa048202.969091Equity(FIBBG000FKJRC5 [EL])Equity(FIBBG000FKJRC5 [EL])49727.427295
2020-02-24 09:41:00-395265dc3ed66894897aa948bf491e06838126.327090Equity(FIBBG001YV1SM4 [OKTA])Equity(FIBBG001YV1SM4 [OKTA])49899.200748
2020-02-24 09:41:00-2167ba42e4fb1fd4f01974ebd2e03f52c5d153.254010Equity(FIBBG001CGB489 [VEEV])Equity(FIBBG001CGB489 [VEEV])33102.866160
2020-02-24 09:41:00-1481fd8fa92106a4594b87b3457c230a953225.232410Equity(FIBBG000BRXP69 [EW])Equity(FIBBG000BRXP69 [EW])33334.396680
2020-02-24 09:41:00-23533e2353d449944df901443f2c610fb94211.766451Equity(FIBBG00GVR8YQ9 [LIN])Equity(FIBBG00GVR8YQ9 [LIN])49765.115985
2020-02-24 09:41:00-327b8626b96e31f4616a1f99a08f2cbe982152.199326Equity(FIBBG000BC9938 [VMW])Equity(FIBBG000BC9938 [VMW])49769.179766
2020-02-24 09:41:00-240498b763972ec4060aa9e02f380c8a94a207.057864Equity(FIBBG000D9D830 [ACN])Equity(FIBBG000D9D830 [ACN])49693.887360
2020-02-24 09:42:00-1097ba42e4fb1fd4f01974ebd2e03f52c5d153.572914Equity(FIBBG001CGB489 [VEEV])Equity(FIBBG001CGB489 [VEEV])16739.447659
2020-02-24 09:42:00-731fd8fa92106a4594b87b3457c230a953225.332380Equity(FIBBG000BRXP69 [EW])Equity(FIBBG000BRXP69 [EW])16449.263740
2020-02-24 15:56:0027c17ab528127b482380b376e6aa774f651798.139280Equity(FIBBG000BLBVN4 [BKNG])Equity(FIBBG000BLBVN4 [BKNG])-48549.760560
2020-02-24 15:56:001758c0a6709955c42aeb60f4fdb5c833513278.353481Equity(FIBBG000CH5208 [UNH])Equity(FIBBG000CH5208 [UNH])-48711.859175
2020-02-24 15:56:00241529808affe92453591778e912db56ace201.020288Equity(FIBBG00KXRCDP0 [CI])Equity(FIBBG00KXRCDP0 [CI])-48445.889408
2020-02-24 15:56:00245532f3e8903af40ae84fdd30949315cf2198.629571Equity(FIBBG000FKJRC5 [EL])Equity(FIBBG000FKJRC5 [EL])-48664.244895
2020-02-24 15:56:00395a4bb446925ff4a82a38fd3a9e7bee5c3127.138130Equity(FIBBG001YV1SM4 [OKTA])Equity(FIBBG001YV1SM4 [OKTA])-50219.561350
2020-02-24 15:56:00325c4d271caf22b4758bcad9512ed7de7a3154.236257Equity(FIBBG001CGB489 [VEEV])Equity(FIBBG001CGB489 [VEEV])-50126.783525
2020-02-24 15:56:002213fb3e7e0c21040fca0ccea07a9f939b4226.868040Equity(FIBBG000BRXP69 [EW])Equity(FIBBG000BRXP69 [EW])-50137.836840
2020-02-24 15:56:00235b6e2a12e009e4d07be63541b0c853df7210.613165Equity(FIBBG00GVR8YQ9 [LIN])Equity(FIBBG00GVR8YQ9 [LIN])-49494.093775
2020-02-24 15:56:003273f9ce928c07446cb87970932b50db3d0152.225654Equity(FIBBG000BC9938 [VMW])Equity(FIBBG000BC9938 [VMW])-49777.788858
2020-02-24 15:56:002406854767392334a21b9779caebdb91451204.711395Equity(FIBBG000D9D830 [ACN])Equity(FIBBG000D9D830 [ACN])-49130.734800
2020-02-25 09:41:00-772fb8d39b8e4d34a71b7c141367d3c8e5964.420668Equity(FIBBG0063GCHH8 [SHAK])Equity(FIBBG0063GCHH8 [SHAK])49732.755696
2020-02-25 15:56:007727500baa6ca77472db855c57083a6196c63.023902Equity(FIBBG0063GCHH8 [SHAK])Equity(FIBBG0063GCHH8 [SHAK])-48654.451958
2020-02-27 09:41:00-5914dc333d1032648dcb7fc2627ca6aac6583.724875Equity(FIBBG00GCTWDJ3 [CVNA])Equity(FIBBG00GCTWDJ3 [CVNA])49481.401125
2020-02-27 09:41:00-790dfef92168bb348c2875b631c49a886c763.101064Equity(FIBBG000BV8DN6 [TJX])Equity(FIBBG000BV8DN6 [TJX])49849.840560
2020-02-27 15:56:005919fef624dd8a040be813d20cdb8e455d589.331792Equity(FIBBG00GCTWDJ3 [CVNA])Equity(FIBBG00GCTWDJ3 [CVNA])-52795.088777
2020-02-27 15:56:00790a55da3ed7bac4e50960b7e296d3dbd1b60.538156Equity(FIBBG000BV8DN6 [TJX])Equity(FIBBG000BV8DN6 [TJX])-47825.143240
2020-02-28 09:41:00-1691b63162f565564201a88c3c2fce499bd529.555131Equity(FIBBG000PVRDL2 [WPM])Equity(FIBBG000PVRDL2 [WPM])49977.726183
2020-02-28 09:41:00-2644dc452cc941dc4ac6814526d447d86b8218.874336Equity(FIBBG000BB07P9 [GOLD])Equity(FIBBG000BB07P9 [GOLD])49903.744384
2020-02-28 15:56:001691efc460ddfebb4d968fb3c869d11d824628.458535Equity(FIBBG000PVRDL2 [WPM])Equity(FIBBG000PVRDL2 [WPM])-48123.382685
2020-02-28 15:56:00264480fb11e7a38648a881c7170806fa4d1d18.950684Equity(FIBBG000BB07P9 [GOLD])Equity(FIBBG000BB07P9 [GOLD])-50105.607174

Let's pick a single stock, TTWO:

In [2]:
SID = "FIBBG000BS1YV5"
DATE = "2020-02-07"

trade = transactions[transactions.symbol.str.contains(SID)].loc[DATE]
trade
Out[2]:
columnamountorder_idpricesidsymboltxn_dollars
date
2020-02-07 09:41:00-434a34eb7144c3741c9abb21e02be7e0c40114.935509Equity(FIBBG000BS1YV5 [TTWO])Equity(FIBBG000BS1YV5 [TTWO])49882.010906
2020-02-07 15:56:004340f4f16efd1de4d5aaff6db2a66929562112.868850Equity(FIBBG000BS1YV5 [TTWO])Equity(FIBBG000BS1YV5 [TTWO])-48985.081117

We use the data object to load minutes prices for this sid and date, looking back 390 minutes from the session close to get the entire trading day:

In [3]:
from zipline.research import get_data, sid
data = get_data(f"{DATE} 16:00:00")

minute_prices = data.history(sid(SID), "close", 390, "1m")

# Zipline timestamps are in UTC, convert to New York time for convenience
minute_prices.index = minute_prices.index.tz_convert("America/New_York").tz_localize(None)

Then we plot the minute prices and add trade markers for our buy and sell transactions:

In [4]:
# Plot minute prices
ax = minute_prices.plot(title=f"Buy and sell transactions for {SID} on {DATE}")
    
# Add the trade markers
trade[trade.amount<0].price.plot(ax=ax, marker="v", color="red", label="Sell")
trade[trade.amount>0].price.plot(ax=ax, marker="^", color="green", label="Buy")

ax.legend()
Out[4]:
<matplotlib.legend.Legend at 0x7fe6f4f4ae10>