Files
options_backtester/backtester/examples/2legs_example.ipynb
T
2020-03-16 17:17:25 -03:00

1375 lines
57 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"0% [██████████████████████████████] 100% | ETA: 00:00:00\n",
"Total time elapsed: 00:00:00\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>total capital</th>\n",
" <th>cash</th>\n",
" <th>VTI</th>\n",
" <th>VEU</th>\n",
" <th>BND</th>\n",
" <th>VNQ</th>\n",
" <th>DBC</th>\n",
" <th>options qty</th>\n",
" <th>calls capital</th>\n",
" <th>puts capital</th>\n",
" <th>stocks qty</th>\n",
" <th>options capital</th>\n",
" <th>stocks capital</th>\n",
" <th>% change</th>\n",
" <th>accumulated return</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>2014-12-14</td>\n",
" <td>1000000.000000</td>\n",
" <td>1000000.000000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-02</td>\n",
" <td>964109.713884</td>\n",
" <td>-20071.346493</td>\n",
" <td>201294.434010</td>\n",
" <td>199500.085077</td>\n",
" <td>194650.276734</td>\n",
" <td>202603.740636</td>\n",
" <td>186132.523921</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>80.0</td>\n",
" <td>23291.0</td>\n",
" <td>80.0</td>\n",
" <td>984181.060377</td>\n",
" <td>-0.035890</td>\n",
" <td>0.964110</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-05</td>\n",
" <td>955268.364042</td>\n",
" <td>-20071.346493</td>\n",
" <td>197835.636144</td>\n",
" <td>195098.090912</td>\n",
" <td>195215.504398</td>\n",
" <td>203712.615403</td>\n",
" <td>183477.863678</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>150.0</td>\n",
" <td>23291.0</td>\n",
" <td>150.0</td>\n",
" <td>975339.710535</td>\n",
" <td>-0.009170</td>\n",
" <td>0.955268</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-06</td>\n",
" <td>952427.771297</td>\n",
" <td>-20071.346493</td>\n",
" <td>195897.188989</td>\n",
" <td>193345.840807</td>\n",
" <td>195780.732062</td>\n",
" <td>205733.231644</td>\n",
" <td>181742.124289</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>160.0</td>\n",
" <td>23291.0</td>\n",
" <td>160.0</td>\n",
" <td>972499.117790</td>\n",
" <td>-0.002974</td>\n",
" <td>0.952428</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-07</td>\n",
" <td>959050.963830</td>\n",
" <td>-20071.346493</td>\n",
" <td>198234.728206</td>\n",
" <td>195482.731179</td>\n",
" <td>195898.487825</td>\n",
" <td>208887.364312</td>\n",
" <td>180618.998802</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>130.0</td>\n",
" <td>23291.0</td>\n",
" <td>130.0</td>\n",
" <td>979122.310323</td>\n",
" <td>0.006954</td>\n",
" <td>0.959051</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-08</td>\n",
" <td>966480.074540</td>\n",
" <td>-20071.346493</td>\n",
" <td>201731.534839</td>\n",
" <td>198217.950854</td>\n",
" <td>195592.322840</td>\n",
" <td>209675.897479</td>\n",
" <td>181333.715021</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>330.0</td>\n",
" <td>23291.0</td>\n",
" <td>330.0</td>\n",
" <td>986551.421034</td>\n",
" <td>0.007746</td>\n",
" <td>0.966480</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-09</td>\n",
" <td>963818.481599</td>\n",
" <td>-20071.346493</td>\n",
" <td>200059.149058</td>\n",
" <td>197106.767861</td>\n",
" <td>195922.038978</td>\n",
" <td>209774.464125</td>\n",
" <td>181027.408070</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>330.0</td>\n",
" <td>23291.0</td>\n",
" <td>330.0</td>\n",
" <td>983889.828092</td>\n",
" <td>-0.002754</td>\n",
" <td>0.963818</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-12</td>\n",
" <td>959459.914778</td>\n",
" <td>-20071.346493</td>\n",
" <td>198633.820267</td>\n",
" <td>196294.749519</td>\n",
" <td>196181.101657</td>\n",
" <td>211376.172121</td>\n",
" <td>177045.417706</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>330.0</td>\n",
" <td>23291.0</td>\n",
" <td>330.0</td>\n",
" <td>979531.261271</td>\n",
" <td>-0.004522</td>\n",
" <td>0.959460</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-13</td>\n",
" <td>959225.606153</td>\n",
" <td>-20071.346493</td>\n",
" <td>198177.715054</td>\n",
" <td>197363.194705</td>\n",
" <td>196369.510878</td>\n",
" <td>211055.830522</td>\n",
" <td>176330.701487</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>150.0</td>\n",
" <td>23291.0</td>\n",
" <td>150.0</td>\n",
" <td>979296.952646</td>\n",
" <td>-0.000244</td>\n",
" <td>0.959226</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-14</td>\n",
" <td>961583.974613</td>\n",
" <td>-20071.346493</td>\n",
" <td>197094.465173</td>\n",
" <td>196593.914172</td>\n",
" <td>196816.982779</td>\n",
" <td>212879.313471</td>\n",
" <td>178270.645511</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>150.0</td>\n",
" <td>23291.0</td>\n",
" <td>150.0</td>\n",
" <td>981655.321106</td>\n",
" <td>0.002459</td>\n",
" <td>0.961584</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-15</td>\n",
" <td>959741.680990</td>\n",
" <td>-20071.346493</td>\n",
" <td>195099.004866</td>\n",
" <td>197833.310587</td>\n",
" <td>197688.375427</td>\n",
" <td>213372.146701</td>\n",
" <td>175820.189902</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>170.0</td>\n",
" <td>23291.0</td>\n",
" <td>170.0</td>\n",
" <td>979813.027483</td>\n",
" <td>-0.001916</td>\n",
" <td>0.959742</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-16</td>\n",
" <td>969134.437588</td>\n",
" <td>-20071.346493</td>\n",
" <td>197683.411030</td>\n",
" <td>200012.938766</td>\n",
" <td>197099.596611</td>\n",
" <td>215220.271311</td>\n",
" <td>179189.566364</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>270.0</td>\n",
" <td>23291.0</td>\n",
" <td>270.0</td>\n",
" <td>989205.784081</td>\n",
" <td>0.009787</td>\n",
" <td>0.969134</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-20</td>\n",
" <td>965270.691803</td>\n",
" <td>-20071.346493</td>\n",
" <td>197968.666832</td>\n",
" <td>200226.627803</td>\n",
" <td>196887.636237</td>\n",
" <td>213519.996669</td>\n",
" <td>176739.110755</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>130.0</td>\n",
" <td>23291.0</td>\n",
" <td>130.0</td>\n",
" <td>985342.038296</td>\n",
" <td>-0.003987</td>\n",
" <td>0.965271</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-21</td>\n",
" <td>968728.294063</td>\n",
" <td>-20071.346493</td>\n",
" <td>198861.872874</td>\n",
" <td>202192.566945</td>\n",
" <td>196510.817794</td>\n",
" <td>213372.146701</td>\n",
" <td>177862.236243</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>300.0</td>\n",
" <td>23291.0</td>\n",
" <td>300.0</td>\n",
" <td>988799.640556</td>\n",
" <td>0.003582</td>\n",
" <td>0.968728</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-22</td>\n",
" <td>976840.790089</td>\n",
" <td>-20071.346493</td>\n",
" <td>201883.569910</td>\n",
" <td>203645.652397</td>\n",
" <td>196557.920099</td>\n",
" <td>217166.962568</td>\n",
" <td>177658.031608</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>300.0</td>\n",
" <td>23291.0</td>\n",
" <td>300.0</td>\n",
" <td>996912.136582</td>\n",
" <td>0.008374</td>\n",
" <td>0.976841</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-23</td>\n",
" <td>973628.635153</td>\n",
" <td>-20071.346493</td>\n",
" <td>200971.359484</td>\n",
" <td>202448.993789</td>\n",
" <td>197193.801221</td>\n",
" <td>216550.921031</td>\n",
" <td>176534.906121</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>300.0</td>\n",
" <td>23291.0</td>\n",
" <td>300.0</td>\n",
" <td>993699.981647</td>\n",
" <td>-0.003288</td>\n",
" <td>0.973629</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-26</td>\n",
" <td>977406.124705</td>\n",
" <td>-20071.346493</td>\n",
" <td>201807.552374</td>\n",
" <td>204414.932931</td>\n",
" <td>196958.289695</td>\n",
" <td>218374.403980</td>\n",
" <td>175922.292219</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>60.0</td>\n",
" <td>23291.0</td>\n",
" <td>60.0</td>\n",
" <td>997477.471199</td>\n",
" <td>0.003880</td>\n",
" <td>0.977406</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-27</td>\n",
" <td>976074.707092</td>\n",
" <td>-20071.346493</td>\n",
" <td>199451.008774</td>\n",
" <td>204329.457316</td>\n",
" <td>197076.045458</td>\n",
" <td>218448.328964</td>\n",
" <td>176841.213073</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>280.0</td>\n",
" <td>23291.0</td>\n",
" <td>280.0</td>\n",
" <td>996146.053585</td>\n",
" <td>-0.001362</td>\n",
" <td>0.976075</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-28</td>\n",
" <td>967255.507918</td>\n",
" <td>-20071.346493</td>\n",
" <td>196752.386263</td>\n",
" <td>201508.762026</td>\n",
" <td>197782.580038</td>\n",
" <td>216994.470937</td>\n",
" <td>174288.655147</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>280.0</td>\n",
" <td>23291.0</td>\n",
" <td>280.0</td>\n",
" <td>987326.854411</td>\n",
" <td>-0.009035</td>\n",
" <td>0.967256</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-29</td>\n",
" <td>970837.993659</td>\n",
" <td>-20071.346493</td>\n",
" <td>198633.820267</td>\n",
" <td>203474.701168</td>\n",
" <td>197570.619664</td>\n",
" <td>217758.362443</td>\n",
" <td>173471.836611</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>280.0</td>\n",
" <td>23291.0</td>\n",
" <td>280.0</td>\n",
" <td>990909.340152</td>\n",
" <td>0.003704</td>\n",
" <td>0.970838</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-01-30</td>\n",
" <td>965676.063416</td>\n",
" <td>-20071.346493</td>\n",
" <td>195935.197757</td>\n",
" <td>200226.627803</td>\n",
" <td>198653.972686</td>\n",
" <td>213273.580055</td>\n",
" <td>177658.031608</td>\n",
" <td>2.0</td>\n",
" <td>0.0</td>\n",
" <td>280.0</td>\n",
" <td>23291.0</td>\n",
" <td>280.0</td>\n",
" <td>985747.409909</td>\n",
" <td>-0.005317</td>\n",
" <td>0.965676</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-02</td>\n",
" <td>943421.397474</td>\n",
" <td>301.521937</td>\n",
" <td>188578.258444</td>\n",
" <td>188632.490894</td>\n",
" <td>188611.975949</td>\n",
" <td>188637.365685</td>\n",
" <td>188659.784565</td>\n",
" <td>66.0</td>\n",
" <td>200.0</td>\n",
" <td>13220.0</td>\n",
" <td>22863.0</td>\n",
" <td>13420.0</td>\n",
" <td>943119.875537</td>\n",
" <td>-0.023046</td>\n",
" <td>0.943421</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-03</td>\n",
" <td>955551.600831</td>\n",
" <td>301.521937</td>\n",
" <td>191472.227497</td>\n",
" <td>191572.424409</td>\n",
" <td>188028.732446</td>\n",
" <td>190276.360406</td>\n",
" <td>193900.334136</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>7320.0</td>\n",
" <td>22863.0</td>\n",
" <td>7320.0</td>\n",
" <td>955250.078893</td>\n",
" <td>0.012858</td>\n",
" <td>0.955552</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-04</td>\n",
" <td>948335.526279</td>\n",
" <td>301.521937</td>\n",
" <td>190802.997153</td>\n",
" <td>190022.999989</td>\n",
" <td>188096.029774</td>\n",
" <td>189489.642940</td>\n",
" <td>189622.334486</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>8600.0</td>\n",
" <td>22863.0</td>\n",
" <td>8600.0</td>\n",
" <td>948034.004342</td>\n",
" <td>-0.007552</td>\n",
" <td>0.948336</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-05</td>\n",
" <td>957213.410059</td>\n",
" <td>301.521937</td>\n",
" <td>192901.124717</td>\n",
" <td>192367.001035</td>\n",
" <td>187692.245810</td>\n",
" <td>191762.382285</td>\n",
" <td>192189.134275</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>7000.0</td>\n",
" <td>22863.0</td>\n",
" <td>7000.0</td>\n",
" <td>956911.888122</td>\n",
" <td>0.009362</td>\n",
" <td>0.957213</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-06</td>\n",
" <td>947842.787062</td>\n",
" <td>301.521937</td>\n",
" <td>192322.330906</td>\n",
" <td>189824.355833</td>\n",
" <td>186480.893919</td>\n",
" <td>186189.800236</td>\n",
" <td>192723.884231</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>8290.0</td>\n",
" <td>22863.0</td>\n",
" <td>8290.0</td>\n",
" <td>947541.265125</td>\n",
" <td>-0.009789</td>\n",
" <td>0.947843</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-09</td>\n",
" <td>946914.291746</td>\n",
" <td>301.521937</td>\n",
" <td>191363.703658</td>\n",
" <td>189307.881026</td>\n",
" <td>186413.596591</td>\n",
" <td>184878.604460</td>\n",
" <td>194648.984074</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>13090.0</td>\n",
" <td>22863.0</td>\n",
" <td>13090.0</td>\n",
" <td>946612.769809</td>\n",
" <td>-0.000980</td>\n",
" <td>0.946914</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-10</td>\n",
" <td>947853.287460</td>\n",
" <td>301.521937</td>\n",
" <td>193317.132769</td>\n",
" <td>190499.745964</td>\n",
" <td>186077.109955</td>\n",
" <td>185468.642559</td>\n",
" <td>192189.134275</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>8290.0</td>\n",
" <td>22863.0</td>\n",
" <td>8290.0</td>\n",
" <td>947551.765522</td>\n",
" <td>0.000992</td>\n",
" <td>0.947853</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-11</td>\n",
" <td>944827.414097</td>\n",
" <td>301.521937</td>\n",
" <td>193407.569301</td>\n",
" <td>189427.067520</td>\n",
" <td>186077.109955</td>\n",
" <td>184922.310985</td>\n",
" <td>190691.834398</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>7970.0</td>\n",
" <td>22863.0</td>\n",
" <td>7970.0</td>\n",
" <td>944525.892160</td>\n",
" <td>-0.003192</td>\n",
" <td>0.944827</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-12</td>\n",
" <td>955013.543436</td>\n",
" <td>301.521937</td>\n",
" <td>195270.561880</td>\n",
" <td>192565.645191</td>\n",
" <td>186166.839725</td>\n",
" <td>187129.490542</td>\n",
" <td>193579.484162</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>6370.0</td>\n",
" <td>22863.0</td>\n",
" <td>6370.0</td>\n",
" <td>954712.021499</td>\n",
" <td>0.010781</td>\n",
" <td>0.955014</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-13</td>\n",
" <td>957753.923767</td>\n",
" <td>301.521937</td>\n",
" <td>196193.014516</td>\n",
" <td>193916.425454</td>\n",
" <td>185740.623318</td>\n",
" <td>185883.854555</td>\n",
" <td>195718.483987</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>5730.0</td>\n",
" <td>22863.0</td>\n",
" <td>5730.0</td>\n",
" <td>957452.401830</td>\n",
" <td>0.002869</td>\n",
" <td>0.957754</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-17</td>\n",
" <td>957485.643655</td>\n",
" <td>301.521937</td>\n",
" <td>196500.498727</td>\n",
" <td>194432.900261</td>\n",
" <td>185000.352718</td>\n",
" <td>185424.936033</td>\n",
" <td>195825.433978</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>5730.0</td>\n",
" <td>22863.0</td>\n",
" <td>5730.0</td>\n",
" <td>957184.121717</td>\n",
" <td>-0.000280</td>\n",
" <td>0.957486</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-18</td>\n",
" <td>958278.198260</td>\n",
" <td>301.521937</td>\n",
" <td>196609.022567</td>\n",
" <td>195227.476886</td>\n",
" <td>185516.298894</td>\n",
" <td>187151.343805</td>\n",
" <td>193472.534171</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>5730.0</td>\n",
" <td>22863.0</td>\n",
" <td>5730.0</td>\n",
" <td>957976.676323</td>\n",
" <td>0.000828</td>\n",
" <td>0.958278</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-19</td>\n",
" <td>953245.293590</td>\n",
" <td>301.521937</td>\n",
" <td>196554.760647</td>\n",
" <td>195068.561561</td>\n",
" <td>185359.271797</td>\n",
" <td>183130.343425</td>\n",
" <td>192830.834222</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>6050.0</td>\n",
" <td>22863.0</td>\n",
" <td>6050.0</td>\n",
" <td>952943.771652</td>\n",
" <td>-0.005252</td>\n",
" <td>0.953245</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-20</td>\n",
" <td>957163.017112</td>\n",
" <td>301.521937</td>\n",
" <td>197658.086349</td>\n",
" <td>196816.630137</td>\n",
" <td>185404.136682</td>\n",
" <td>184900.457723</td>\n",
" <td>192082.184284</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>5090.0</td>\n",
" <td>22863.0</td>\n",
" <td>5090.0</td>\n",
" <td>956861.495175</td>\n",
" <td>0.004110</td>\n",
" <td>0.957163</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-23</td>\n",
" <td>956735.682530</td>\n",
" <td>301.521937</td>\n",
" <td>197639.999042</td>\n",
" <td>195823.409355</td>\n",
" <td>185785.488203</td>\n",
" <td>186386.479602</td>\n",
" <td>190798.784389</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>5180.0</td>\n",
" <td>22863.0</td>\n",
" <td>5180.0</td>\n",
" <td>956434.160592</td>\n",
" <td>-0.000446</td>\n",
" <td>0.956736</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-24</td>\n",
" <td>955816.407980</td>\n",
" <td>301.521937</td>\n",
" <td>198092.181707</td>\n",
" <td>197253.647281</td>\n",
" <td>186548.191246</td>\n",
" <td>182715.131429</td>\n",
" <td>190905.734380</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>3460.0</td>\n",
" <td>22863.0</td>\n",
" <td>3460.0</td>\n",
" <td>955514.886043</td>\n",
" <td>-0.000961</td>\n",
" <td>0.955816</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-25</td>\n",
" <td>958974.061077</td>\n",
" <td>301.521937</td>\n",
" <td>198019.832480</td>\n",
" <td>197372.833775</td>\n",
" <td>186727.650785</td>\n",
" <td>182758.837955</td>\n",
" <td>193793.384145</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>3250.0</td>\n",
" <td>22863.0</td>\n",
" <td>3250.0</td>\n",
" <td>958672.539140</td>\n",
" <td>0.003304</td>\n",
" <td>0.958974</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-26</td>\n",
" <td>954301.589814</td>\n",
" <td>301.521937</td>\n",
" <td>197893.221334</td>\n",
" <td>196935.816631</td>\n",
" <td>186211.704609</td>\n",
" <td>180770.191027</td>\n",
" <td>192189.134275</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>3260.0</td>\n",
" <td>22863.0</td>\n",
" <td>3260.0</td>\n",
" <td>954000.067877</td>\n",
" <td>-0.004872</td>\n",
" <td>0.954302</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-02-27</td>\n",
" <td>957392.131534</td>\n",
" <td>301.521937</td>\n",
" <td>197187.816378</td>\n",
" <td>197015.274294</td>\n",
" <td>186368.731706</td>\n",
" <td>182190.653118</td>\n",
" <td>194328.134101</td>\n",
" <td>66.0</td>\n",
" <td>0.0</td>\n",
" <td>3240.0</td>\n",
" <td>22863.0</td>\n",
" <td>3240.0</td>\n",
" <td>957090.609597</td>\n",
" <td>0.003239</td>\n",
" <td>0.957392</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-02</td>\n",
" <td>999472.405291</td>\n",
" <td>31660.297797</td>\n",
" <td>193519.352851</td>\n",
" <td>193583.644762</td>\n",
" <td>193537.947483</td>\n",
" <td>193570.626312</td>\n",
" <td>193600.536086</td>\n",
" <td>65.0</td>\n",
" <td>10000.0</td>\n",
" <td>11600.0</td>\n",
" <td>23108.0</td>\n",
" <td>21600.0</td>\n",
" <td>967812.107494</td>\n",
" <td>0.043953</td>\n",
" <td>0.999472</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-03</td>\n",
" <td>998093.629404</td>\n",
" <td>31660.297797</td>\n",
" <td>192725.445396</td>\n",
" <td>192413.247877</td>\n",
" <td>193303.781787</td>\n",
" <td>193201.260776</td>\n",
" <td>194789.595771</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>2240.0</td>\n",
" <td>23108.0</td>\n",
" <td>2240.0</td>\n",
" <td>966433.331607</td>\n",
" <td>-0.001380</td>\n",
" <td>0.998094</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-04</td>\n",
" <td>992921.717475</td>\n",
" <td>31660.297797</td>\n",
" <td>191949.180329</td>\n",
" <td>191593.970058</td>\n",
" <td>193303.781787</td>\n",
" <td>191354.433095</td>\n",
" <td>193060.054411</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>2245.0</td>\n",
" <td>23108.0</td>\n",
" <td>2245.0</td>\n",
" <td>961261.419679</td>\n",
" <td>-0.005182</td>\n",
" <td>0.992922</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-05</td>\n",
" <td>993214.121335</td>\n",
" <td>31660.297797</td>\n",
" <td>192249.100923</td>\n",
" <td>191671.996517</td>\n",
" <td>193420.864635</td>\n",
" <td>191908.481399</td>\n",
" <td>192303.380065</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>2045.0</td>\n",
" <td>23108.0</td>\n",
" <td>2045.0</td>\n",
" <td>961553.823539</td>\n",
" <td>0.000294</td>\n",
" <td>0.993214</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-06</td>\n",
" <td>978101.577405</td>\n",
" <td>31660.297797</td>\n",
" <td>189585.100350</td>\n",
" <td>189097.123370</td>\n",
" <td>192296.869296</td>\n",
" <td>185536.925900</td>\n",
" <td>189925.260694</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>2045.0</td>\n",
" <td>23108.0</td>\n",
" <td>2045.0</td>\n",
" <td>946441.279609</td>\n",
" <td>-0.015216</td>\n",
" <td>0.978102</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-09</td>\n",
" <td>980056.445546</td>\n",
" <td>31660.297797</td>\n",
" <td>190290.795866</td>\n",
" <td>189175.149829</td>\n",
" <td>192531.034991</td>\n",
" <td>187014.388045</td>\n",
" <td>189384.779019</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>4805.0</td>\n",
" <td>23108.0</td>\n",
" <td>4805.0</td>\n",
" <td>948396.147749</td>\n",
" <td>0.001999</td>\n",
" <td>0.980056</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-10</td>\n",
" <td>971230.320507</td>\n",
" <td>31660.297797</td>\n",
" <td>187397.444251</td>\n",
" <td>185117.773961</td>\n",
" <td>193280.365217</td>\n",
" <td>186875.875968</td>\n",
" <td>186898.563312</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>2565.0</td>\n",
" <td>23108.0</td>\n",
" <td>2565.0</td>\n",
" <td>939570.022710</td>\n",
" <td>-0.009006</td>\n",
" <td>0.971230</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-11</td>\n",
" <td>972980.580181</td>\n",
" <td>31660.297797</td>\n",
" <td>187256.305148</td>\n",
" <td>185663.959174</td>\n",
" <td>193491.114344</td>\n",
" <td>187037.473391</td>\n",
" <td>187871.430328</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>1925.0</td>\n",
" <td>23108.0</td>\n",
" <td>1925.0</td>\n",
" <td>941320.282384</td>\n",
" <td>0.001802</td>\n",
" <td>0.972981</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2015-03-12</td>\n",
" <td>979925.481459</td>\n",
" <td>31660.297797</td>\n",
" <td>189602.742738</td>\n",
" <td>187731.660338</td>\n",
" <td>193631.613761</td>\n",
" <td>190292.507178</td>\n",
" <td>187006.659647</td>\n",
" <td>65.0</td>\n",
" <td>0.0</td>\n",
" <td>645.0</td>\n",
" <td>23108.0</td>\n",
" <td>645.0</td>\n",
" <td>948265.183662</td>\n",
" <td>0.007138</td>\n",
" <td>0.979925</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total capital cash VTI VEU \\\n",
"2014-12-14 1000000.000000 1000000.000000 NaN NaN \n",
"2015-01-02 964109.713884 -20071.346493 201294.434010 199500.085077 \n",
"2015-01-05 955268.364042 -20071.346493 197835.636144 195098.090912 \n",
"2015-01-06 952427.771297 -20071.346493 195897.188989 193345.840807 \n",
"2015-01-07 959050.963830 -20071.346493 198234.728206 195482.731179 \n",
"2015-01-08 966480.074540 -20071.346493 201731.534839 198217.950854 \n",
"2015-01-09 963818.481599 -20071.346493 200059.149058 197106.767861 \n",
"2015-01-12 959459.914778 -20071.346493 198633.820267 196294.749519 \n",
"2015-01-13 959225.606153 -20071.346493 198177.715054 197363.194705 \n",
"2015-01-14 961583.974613 -20071.346493 197094.465173 196593.914172 \n",
"2015-01-15 959741.680990 -20071.346493 195099.004866 197833.310587 \n",
"2015-01-16 969134.437588 -20071.346493 197683.411030 200012.938766 \n",
"2015-01-20 965270.691803 -20071.346493 197968.666832 200226.627803 \n",
"2015-01-21 968728.294063 -20071.346493 198861.872874 202192.566945 \n",
"2015-01-22 976840.790089 -20071.346493 201883.569910 203645.652397 \n",
"2015-01-23 973628.635153 -20071.346493 200971.359484 202448.993789 \n",
"2015-01-26 977406.124705 -20071.346493 201807.552374 204414.932931 \n",
"2015-01-27 976074.707092 -20071.346493 199451.008774 204329.457316 \n",
"2015-01-28 967255.507918 -20071.346493 196752.386263 201508.762026 \n",
"2015-01-29 970837.993659 -20071.346493 198633.820267 203474.701168 \n",
"2015-01-30 965676.063416 -20071.346493 195935.197757 200226.627803 \n",
"2015-02-02 943421.397474 301.521937 188578.258444 188632.490894 \n",
"2015-02-03 955551.600831 301.521937 191472.227497 191572.424409 \n",
"2015-02-04 948335.526279 301.521937 190802.997153 190022.999989 \n",
"2015-02-05 957213.410059 301.521937 192901.124717 192367.001035 \n",
"2015-02-06 947842.787062 301.521937 192322.330906 189824.355833 \n",
"2015-02-09 946914.291746 301.521937 191363.703658 189307.881026 \n",
"2015-02-10 947853.287460 301.521937 193317.132769 190499.745964 \n",
"2015-02-11 944827.414097 301.521937 193407.569301 189427.067520 \n",
"2015-02-12 955013.543436 301.521937 195270.561880 192565.645191 \n",
"2015-02-13 957753.923767 301.521937 196193.014516 193916.425454 \n",
"2015-02-17 957485.643655 301.521937 196500.498727 194432.900261 \n",
"2015-02-18 958278.198260 301.521937 196609.022567 195227.476886 \n",
"2015-02-19 953245.293590 301.521937 196554.760647 195068.561561 \n",
"2015-02-20 957163.017112 301.521937 197658.086349 196816.630137 \n",
"2015-02-23 956735.682530 301.521937 197639.999042 195823.409355 \n",
"2015-02-24 955816.407980 301.521937 198092.181707 197253.647281 \n",
"2015-02-25 958974.061077 301.521937 198019.832480 197372.833775 \n",
"2015-02-26 954301.589814 301.521937 197893.221334 196935.816631 \n",
"2015-02-27 957392.131534 301.521937 197187.816378 197015.274294 \n",
"2015-03-02 999472.405291 31660.297797 193519.352851 193583.644762 \n",
"2015-03-03 998093.629404 31660.297797 192725.445396 192413.247877 \n",
"2015-03-04 992921.717475 31660.297797 191949.180329 191593.970058 \n",
"2015-03-05 993214.121335 31660.297797 192249.100923 191671.996517 \n",
"2015-03-06 978101.577405 31660.297797 189585.100350 189097.123370 \n",
"2015-03-09 980056.445546 31660.297797 190290.795866 189175.149829 \n",
"2015-03-10 971230.320507 31660.297797 187397.444251 185117.773961 \n",
"2015-03-11 972980.580181 31660.297797 187256.305148 185663.959174 \n",
"2015-03-12 979925.481459 31660.297797 189602.742738 187731.660338 \n",
"\n",
" BND VNQ DBC options qty \\\n",
"2014-12-14 NaN NaN NaN NaN \n",
"2015-01-02 194650.276734 202603.740636 186132.523921 2.0 \n",
"2015-01-05 195215.504398 203712.615403 183477.863678 2.0 \n",
"2015-01-06 195780.732062 205733.231644 181742.124289 2.0 \n",
"2015-01-07 195898.487825 208887.364312 180618.998802 2.0 \n",
"2015-01-08 195592.322840 209675.897479 181333.715021 2.0 \n",
"2015-01-09 195922.038978 209774.464125 181027.408070 2.0 \n",
"2015-01-12 196181.101657 211376.172121 177045.417706 2.0 \n",
"2015-01-13 196369.510878 211055.830522 176330.701487 2.0 \n",
"2015-01-14 196816.982779 212879.313471 178270.645511 2.0 \n",
"2015-01-15 197688.375427 213372.146701 175820.189902 2.0 \n",
"2015-01-16 197099.596611 215220.271311 179189.566364 2.0 \n",
"2015-01-20 196887.636237 213519.996669 176739.110755 2.0 \n",
"2015-01-21 196510.817794 213372.146701 177862.236243 2.0 \n",
"2015-01-22 196557.920099 217166.962568 177658.031608 2.0 \n",
"2015-01-23 197193.801221 216550.921031 176534.906121 2.0 \n",
"2015-01-26 196958.289695 218374.403980 175922.292219 2.0 \n",
"2015-01-27 197076.045458 218448.328964 176841.213073 2.0 \n",
"2015-01-28 197782.580038 216994.470937 174288.655147 2.0 \n",
"2015-01-29 197570.619664 217758.362443 173471.836611 2.0 \n",
"2015-01-30 198653.972686 213273.580055 177658.031608 2.0 \n",
"2015-02-02 188611.975949 188637.365685 188659.784565 66.0 \n",
"2015-02-03 188028.732446 190276.360406 193900.334136 66.0 \n",
"2015-02-04 188096.029774 189489.642940 189622.334486 66.0 \n",
"2015-02-05 187692.245810 191762.382285 192189.134275 66.0 \n",
"2015-02-06 186480.893919 186189.800236 192723.884231 66.0 \n",
"2015-02-09 186413.596591 184878.604460 194648.984074 66.0 \n",
"2015-02-10 186077.109955 185468.642559 192189.134275 66.0 \n",
"2015-02-11 186077.109955 184922.310985 190691.834398 66.0 \n",
"2015-02-12 186166.839725 187129.490542 193579.484162 66.0 \n",
"2015-02-13 185740.623318 185883.854555 195718.483987 66.0 \n",
"2015-02-17 185000.352718 185424.936033 195825.433978 66.0 \n",
"2015-02-18 185516.298894 187151.343805 193472.534171 66.0 \n",
"2015-02-19 185359.271797 183130.343425 192830.834222 66.0 \n",
"2015-02-20 185404.136682 184900.457723 192082.184284 66.0 \n",
"2015-02-23 185785.488203 186386.479602 190798.784389 66.0 \n",
"2015-02-24 186548.191246 182715.131429 190905.734380 66.0 \n",
"2015-02-25 186727.650785 182758.837955 193793.384145 66.0 \n",
"2015-02-26 186211.704609 180770.191027 192189.134275 66.0 \n",
"2015-02-27 186368.731706 182190.653118 194328.134101 66.0 \n",
"2015-03-02 193537.947483 193570.626312 193600.536086 65.0 \n",
"2015-03-03 193303.781787 193201.260776 194789.595771 65.0 \n",
"2015-03-04 193303.781787 191354.433095 193060.054411 65.0 \n",
"2015-03-05 193420.864635 191908.481399 192303.380065 65.0 \n",
"2015-03-06 192296.869296 185536.925900 189925.260694 65.0 \n",
"2015-03-09 192531.034991 187014.388045 189384.779019 65.0 \n",
"2015-03-10 193280.365217 186875.875968 186898.563312 65.0 \n",
"2015-03-11 193491.114344 187037.473391 187871.430328 65.0 \n",
"2015-03-12 193631.613761 190292.507178 187006.659647 65.0 \n",
"\n",
" calls capital puts capital stocks qty options capital \\\n",
"2014-12-14 NaN NaN NaN NaN \n",
"2015-01-02 0.0 80.0 23291.0 80.0 \n",
"2015-01-05 0.0 150.0 23291.0 150.0 \n",
"2015-01-06 0.0 160.0 23291.0 160.0 \n",
"2015-01-07 0.0 130.0 23291.0 130.0 \n",
"2015-01-08 0.0 330.0 23291.0 330.0 \n",
"2015-01-09 0.0 330.0 23291.0 330.0 \n",
"2015-01-12 0.0 330.0 23291.0 330.0 \n",
"2015-01-13 0.0 150.0 23291.0 150.0 \n",
"2015-01-14 0.0 150.0 23291.0 150.0 \n",
"2015-01-15 0.0 170.0 23291.0 170.0 \n",
"2015-01-16 0.0 270.0 23291.0 270.0 \n",
"2015-01-20 0.0 130.0 23291.0 130.0 \n",
"2015-01-21 0.0 300.0 23291.0 300.0 \n",
"2015-01-22 0.0 300.0 23291.0 300.0 \n",
"2015-01-23 0.0 300.0 23291.0 300.0 \n",
"2015-01-26 0.0 60.0 23291.0 60.0 \n",
"2015-01-27 0.0 280.0 23291.0 280.0 \n",
"2015-01-28 0.0 280.0 23291.0 280.0 \n",
"2015-01-29 0.0 280.0 23291.0 280.0 \n",
"2015-01-30 0.0 280.0 23291.0 280.0 \n",
"2015-02-02 200.0 13220.0 22863.0 13420.0 \n",
"2015-02-03 0.0 7320.0 22863.0 7320.0 \n",
"2015-02-04 0.0 8600.0 22863.0 8600.0 \n",
"2015-02-05 0.0 7000.0 22863.0 7000.0 \n",
"2015-02-06 0.0 8290.0 22863.0 8290.0 \n",
"2015-02-09 0.0 13090.0 22863.0 13090.0 \n",
"2015-02-10 0.0 8290.0 22863.0 8290.0 \n",
"2015-02-11 0.0 7970.0 22863.0 7970.0 \n",
"2015-02-12 0.0 6370.0 22863.0 6370.0 \n",
"2015-02-13 0.0 5730.0 22863.0 5730.0 \n",
"2015-02-17 0.0 5730.0 22863.0 5730.0 \n",
"2015-02-18 0.0 5730.0 22863.0 5730.0 \n",
"2015-02-19 0.0 6050.0 22863.0 6050.0 \n",
"2015-02-20 0.0 5090.0 22863.0 5090.0 \n",
"2015-02-23 0.0 5180.0 22863.0 5180.0 \n",
"2015-02-24 0.0 3460.0 22863.0 3460.0 \n",
"2015-02-25 0.0 3250.0 22863.0 3250.0 \n",
"2015-02-26 0.0 3260.0 22863.0 3260.0 \n",
"2015-02-27 0.0 3240.0 22863.0 3240.0 \n",
"2015-03-02 10000.0 11600.0 23108.0 21600.0 \n",
"2015-03-03 0.0 2240.0 23108.0 2240.0 \n",
"2015-03-04 0.0 2245.0 23108.0 2245.0 \n",
"2015-03-05 0.0 2045.0 23108.0 2045.0 \n",
"2015-03-06 0.0 2045.0 23108.0 2045.0 \n",
"2015-03-09 0.0 4805.0 23108.0 4805.0 \n",
"2015-03-10 0.0 2565.0 23108.0 2565.0 \n",
"2015-03-11 0.0 1925.0 23108.0 1925.0 \n",
"2015-03-12 0.0 645.0 23108.0 645.0 \n",
"\n",
" stocks capital % change accumulated return \n",
"2014-12-14 NaN NaN NaN \n",
"2015-01-02 984181.060377 -0.035890 0.964110 \n",
"2015-01-05 975339.710535 -0.009170 0.955268 \n",
"2015-01-06 972499.117790 -0.002974 0.952428 \n",
"2015-01-07 979122.310323 0.006954 0.959051 \n",
"2015-01-08 986551.421034 0.007746 0.966480 \n",
"2015-01-09 983889.828092 -0.002754 0.963818 \n",
"2015-01-12 979531.261271 -0.004522 0.959460 \n",
"2015-01-13 979296.952646 -0.000244 0.959226 \n",
"2015-01-14 981655.321106 0.002459 0.961584 \n",
"2015-01-15 979813.027483 -0.001916 0.959742 \n",
"2015-01-16 989205.784081 0.009787 0.969134 \n",
"2015-01-20 985342.038296 -0.003987 0.965271 \n",
"2015-01-21 988799.640556 0.003582 0.968728 \n",
"2015-01-22 996912.136582 0.008374 0.976841 \n",
"2015-01-23 993699.981647 -0.003288 0.973629 \n",
"2015-01-26 997477.471199 0.003880 0.977406 \n",
"2015-01-27 996146.053585 -0.001362 0.976075 \n",
"2015-01-28 987326.854411 -0.009035 0.967256 \n",
"2015-01-29 990909.340152 0.003704 0.970838 \n",
"2015-01-30 985747.409909 -0.005317 0.965676 \n",
"2015-02-02 943119.875537 -0.023046 0.943421 \n",
"2015-02-03 955250.078893 0.012858 0.955552 \n",
"2015-02-04 948034.004342 -0.007552 0.948336 \n",
"2015-02-05 956911.888122 0.009362 0.957213 \n",
"2015-02-06 947541.265125 -0.009789 0.947843 \n",
"2015-02-09 946612.769809 -0.000980 0.946914 \n",
"2015-02-10 947551.765522 0.000992 0.947853 \n",
"2015-02-11 944525.892160 -0.003192 0.944827 \n",
"2015-02-12 954712.021499 0.010781 0.955014 \n",
"2015-02-13 957452.401830 0.002869 0.957754 \n",
"2015-02-17 957184.121717 -0.000280 0.957486 \n",
"2015-02-18 957976.676323 0.000828 0.958278 \n",
"2015-02-19 952943.771652 -0.005252 0.953245 \n",
"2015-02-20 956861.495175 0.004110 0.957163 \n",
"2015-02-23 956434.160592 -0.000446 0.956736 \n",
"2015-02-24 955514.886043 -0.000961 0.955816 \n",
"2015-02-25 958672.539140 0.003304 0.958974 \n",
"2015-02-26 954000.067877 -0.004872 0.954302 \n",
"2015-02-27 957090.609597 0.003239 0.957392 \n",
"2015-03-02 967812.107494 0.043953 0.999472 \n",
"2015-03-03 966433.331607 -0.001380 0.998094 \n",
"2015-03-04 961261.419679 -0.005182 0.992922 \n",
"2015-03-05 961553.823539 0.000294 0.993214 \n",
"2015-03-06 946441.279609 -0.015216 0.978102 \n",
"2015-03-09 948396.147749 0.001999 0.980056 \n",
"2015-03-10 939570.022710 -0.009006 0.971230 \n",
"2015-03-11 941320.282384 0.001802 0.972981 \n",
"2015-03-12 948265.183662 0.007138 0.979925 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from backtester import Backtest\n",
"from backtester.strategy import Strategy, StrategyLeg\n",
"from backtester.enums import Type, Direction, Stock\n",
"from backtester.datahandler import HistoricalOptionsData, TiingoData\n",
"# Cleaned up data\n",
"options_data = HistoricalOptionsData(\n",
" \"/Users/lambdaclass/options_backtester_copy/backtester/examples/options_data_clean_v2.h5\",\n",
" key=\"/SPX\",\n",
" where='quotedate >= \"2014-12-15\" & quotedate <= \"2015-03-15\"')\n",
"\n",
"options_data._data = options_data._data[(options_data._data['optionroot'] == \"SPX160617P00650000\")\n",
" | (options_data._data['optionroot'] == \"SPX160617C00650000\")\n",
" | (options_data._data['optionroot'] == \"SPX160617P00700000\")\n",
" | (options_data._data['optionroot'] == \"SPX160617C00700000\")]\n",
"\n",
"schema = options_data.schema\n",
"options_data._data.at[5857589, 'ask'] = 100 #SPX6500 call 2014-12-15\n",
"options_data._data.at[5857589, 'bid'] = 0.5 #SPX6500 call 2014-12-15\n",
"options_data._data.at[5857590, 'ask'] = 10 #SPX7000 call 2014-12-15\n",
"options_data._data.at[5857590, 'bid'] = 0.5 #SPX7000 call 2014-12-15\n",
"options_data._data.at[6045133, 'ask'] = 1 #SPX6500 put 2015-02-02\n",
"options_data._data.at[6045133, 'bid'] = 0.5\n",
"\n",
"options_data._data.at[6045059, 'bid'] = 1 #SPX6500 call 2015-02-02\n",
"options_data._data.at[6045060, 'ask'] = 1\n",
"\n",
"options_data._data.at[6151669, 'bid'] = 100 #SPX6500 call 2015-03-02\n",
"options_data._data.at[6151743, 'bid'] = 100\n",
"options_schema = options_data.schema\n",
"put_otm = Strategy(options_schema)\n",
"\n",
"leg_1 = StrategyLeg(\"leg_1\", options_schema, option_type=Type.PUT, direction=Direction.BUY)\n",
"leg_1.entry_filter = (options_schema.underlying == \"SPX\") & (options_schema.dte >= 60)\n",
"leg_1.exit_filter = (options_schema.dte <= 30)\n",
"\n",
"leg_2 = StrategyLeg(\"leg_2\", options_schema, option_type=Type.CALL, direction=Direction.BUY)\n",
"leg_2.entry_filter = (options_schema.underlying == \"SPX\") & (options_schema.dte >= 60)\n",
"leg_2.exit_filter = (options_schema.dte <= 30)\n",
"\n",
"put_otm.add_legs([leg_1, leg_2])\n",
"options_data.columns = [\n",
" 'underlying', 'underlying_last', 'optionroot', 'type', 'expiration', 'quotedate', 'strike', 'last', 'bid', 'ask',\n",
" 'volume', 'openinterest', 'impliedvol', 'delta', 'gamma', 'theta', 'vega', 'optionalias', 'dte'\n",
"]\n",
"options_data.quotedate = options_data.quotedate.dt.tz_localize(None)\n",
"options_data._data.quotedate = options_data._data.quotedate.dt.tz_localize(None)\n",
"\n",
"allocation = {'cash': 0, 'stocks': 97, 'options': 3}\n",
"\n",
"bt = Backtest(allocation=allocation)\n",
"\n",
"#asset_data = HistoricalAssetData('/Users/lambdaclass/options_backtester_copy/data/ivy_5assets.csv')\n",
"asset_data = TiingoData('/Users/lambdaclass/options_backtester_copy/data/ivy_5assets.csv')\n",
"asset_data._data.date = asset_data._data.date.dt.tz_localize(None)\n",
"asset_data.start_date = min(asset_data._data.date)\n",
"asset_data.end_date = max(asset_data._data.date)\n",
"VTI = Stock(\"VTI\", 0.2)\n",
"VEU = Stock(\"VEU\", 0.2)\n",
"BND = Stock(\"BND\", 0.2)\n",
"VNQ = Stock(\"VNQ\", 0.2)\n",
"DBC = Stock(\"DBC\", 0.2)\n",
"bt.stocks = [VTI, VEU, BND, VNQ, DBC]\n",
"asset_data._data = asset_data._data.query('date >= \"2014-12-15\" & date <= \"2015-03-15\"')\n",
"bt.options_data = options_data\n",
"bt._options_strategy = put_otm\n",
"bt.stocks_data = asset_data\n",
"bt.stocks_data.start_date = min(bt.stocks_data['date'])\n",
"bt.stocks_data.end_date = max(bt.stocks_data['date'])\n",
"\n",
"bt.current_cash = 1_000_000\n",
"bt.run(rebalance_freq=1)\n",
"bt.balance\n",
"\n",
"# Exit thresholds: we exit if the loss or profit on the investment on an entry is greater than 25%.\n",
"#put_otm.exit_thresholds = (0.25, 0.25)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"7\" halign=\"left\">leg_1</th>\n",
" <th colspan=\"7\" halign=\"left\">leg_2</th>\n",
" <th colspan=\"3\" halign=\"left\">totals</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>contract</th>\n",
" <th>underlying</th>\n",
" <th>expiration</th>\n",
" <th>type</th>\n",
" <th>strike</th>\n",
" <th>cost</th>\n",
" <th>order</th>\n",
" <th>contract</th>\n",
" <th>underlying</th>\n",
" <th>expiration</th>\n",
" <th>type</th>\n",
" <th>strike</th>\n",
" <th>cost</th>\n",
" <th>order</th>\n",
" <th>cost</th>\n",
" <th>qty</th>\n",
" <th>date</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>SPX160617P00650000</td>\n",
" <td>SPX</td>\n",
" <td>2016-06-17</td>\n",
" <td>put</td>\n",
" <td>650.0</td>\n",
" <td>390.0</td>\n",
" <td>Order.BTO</td>\n",
" <td>SPX160617C00650000</td>\n",
" <td>SPX</td>\n",
" <td>2016-06-17</td>\n",
" <td>call</td>\n",
" <td>650.0</td>\n",
" <td>10000.0</td>\n",
" <td>Order.BTO</td>\n",
" <td>10390.0</td>\n",
" <td>2.0</td>\n",
" <td>2014-12-15</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>SPX160617P00700000</td>\n",
" <td>SPX</td>\n",
" <td>2016-06-17</td>\n",
" <td>put</td>\n",
" <td>700.0</td>\n",
" <td>350.0</td>\n",
" <td>Order.BTO</td>\n",
" <td>SPX160617C00700000</td>\n",
" <td>SPX</td>\n",
" <td>2016-06-17</td>\n",
" <td>call</td>\n",
" <td>700.0</td>\n",
" <td>100.0</td>\n",
" <td>Order.BTO</td>\n",
" <td>450.0</td>\n",
" <td>64.0</td>\n",
" <td>2015-02-02</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" leg_1 \\\n",
" contract underlying expiration type strike cost order \n",
"0 SPX160617P00650000 SPX 2016-06-17 put 650.0 390.0 Order.BTO \n",
"1 SPX160617P00700000 SPX 2016-06-17 put 700.0 350.0 Order.BTO \n",
"\n",
" leg_2 \\\n",
" contract underlying expiration type strike cost order \n",
"0 SPX160617C00650000 SPX 2016-06-17 call 650.0 10000.0 Order.BTO \n",
"1 SPX160617C00700000 SPX 2016-06-17 call 700.0 100.0 Order.BTO \n",
"\n",
" totals \n",
" cost qty date \n",
"0 10390.0 2.0 2014-12-15 \n",
"1 450.0 64.0 2015-02-02 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bt.trade_log"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}