{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Streams as instruments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from simple_back_test import *\n",
    "from plotnine import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "pe = general_stats_base()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "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 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>spyid</th>\n",
       "      <th>streams</th>\n",
       "      <th>pop_5</th>\n",
       "      <th>streams_100_date</th>\n",
       "      <th>pop_5_date</th>\n",
       "      <th>predicted_streams</th>\n",
       "      <th>open_price</th>\n",
       "      <th>close_price</th>\n",
       "      <th>open_date</th>\n",
       "      <th>close_date</th>\n",
       "      <th>duration</th>\n",
       "      <th>ret</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>6BuARH7nrDZXH9MytcSQiq</td>\n",
       "      <td>918335</td>\n",
       "      <td>51</td>\n",
       "      <td>2018-06-06</td>\n",
       "      <td>2018-03-04</td>\n",
       "      <td>514120.57638</td>\n",
       "      <td>2056.482306</td>\n",
       "      <td>4591.675</td>\n",
       "      <td>2018-03-04</td>\n",
       "      <td>2018-06-06</td>\n",
       "      <td>94.0</td>\n",
       "      <td>1.232781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167</th>\n",
       "      <td>51GEVPGtTFN5rpihE5OwoC</td>\n",
       "      <td>2514000</td>\n",
       "      <td>51</td>\n",
       "      <td>2018-05-21</td>\n",
       "      <td>2018-02-14</td>\n",
       "      <td>514120.57638</td>\n",
       "      <td>2056.482306</td>\n",
       "      <td>12570.000</td>\n",
       "      <td>2018-02-14</td>\n",
       "      <td>2018-05-21</td>\n",
       "      <td>96.0</td>\n",
       "      <td>5.112379</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>199</th>\n",
       "      <td>6LxeQpoUx2WnI4euArRgk0</td>\n",
       "      <td>1881000</td>\n",
       "      <td>51</td>\n",
       "      <td>2018-05-21</td>\n",
       "      <td>2018-02-14</td>\n",
       "      <td>514120.57638</td>\n",
       "      <td>2056.482306</td>\n",
       "      <td>9405.000</td>\n",
       "      <td>2018-02-14</td>\n",
       "      <td>2018-05-21</td>\n",
       "      <td>96.0</td>\n",
       "      <td>3.573344</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1385</th>\n",
       "      <td>2axmxXWKBu2zEa1d8hrQVD</td>\n",
       "      <td>153023</td>\n",
       "      <td>51</td>\n",
       "      <td>2018-05-23</td>\n",
       "      <td>2018-05-23</td>\n",
       "      <td>514120.57638</td>\n",
       "      <td>2056.482306</td>\n",
       "      <td>765.115</td>\n",
       "      <td>2018-05-23</td>\n",
       "      <td>2018-05-23</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.627950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>248</th>\n",
       "      <td>6pu3UrqCDnRPzWXNLGqVDk</td>\n",
       "      <td>384809</td>\n",
       "      <td>51</td>\n",
       "      <td>2018-05-21</td>\n",
       "      <td>2018-02-14</td>\n",
       "      <td>514120.57638</td>\n",
       "      <td>2056.482306</td>\n",
       "      <td>1924.045</td>\n",
       "      <td>2018-02-14</td>\n",
       "      <td>2018-05-21</td>\n",
       "      <td>96.0</td>\n",
       "      <td>-0.064400</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                       spyid  streams  pop_5 streams_100_date pop_5_date  \\\n",
       "11    6BuARH7nrDZXH9MytcSQiq   918335     51       2018-06-06 2018-03-04   \n",
       "167   51GEVPGtTFN5rpihE5OwoC  2514000     51       2018-05-21 2018-02-14   \n",
       "199   6LxeQpoUx2WnI4euArRgk0  1881000     51       2018-05-21 2018-02-14   \n",
       "1385  2axmxXWKBu2zEa1d8hrQVD   153023     51       2018-05-23 2018-05-23   \n",
       "248   6pu3UrqCDnRPzWXNLGqVDk   384809     51       2018-05-21 2018-02-14   \n",
       "\n",
       "      predicted_streams   open_price  close_price  open_date close_date  \\\n",
       "11         514120.57638  2056.482306     4591.675 2018-03-04 2018-06-06   \n",
       "167        514120.57638  2056.482306    12570.000 2018-02-14 2018-05-21   \n",
       "199        514120.57638  2056.482306     9405.000 2018-02-14 2018-05-21   \n",
       "1385       514120.57638  2056.482306      765.115 2018-05-23 2018-05-23   \n",
       "248        514120.57638  2056.482306     1924.045 2018-02-14 2018-05-21   \n",
       "\n",
       "      duration       ret  \n",
       "11        94.0  1.232781  \n",
       "167       96.0  5.112379  \n",
       "199       96.0  3.573344  \n",
       "1385       0.0 -0.627950  \n",
       "248       96.0 -0.064400  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pe.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "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 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>streams</th>\n",
       "      <th>pop_5</th>\n",
       "      <th>predicted_streams</th>\n",
       "      <th>open_price</th>\n",
       "      <th>close_price</th>\n",
       "      <th>duration</th>\n",
       "      <th>ret</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>3.420000e+02</td>\n",
       "      <td>342.000000</td>\n",
       "      <td>3.420000e+02</td>\n",
       "      <td>342.000000</td>\n",
       "      <td>3.420000e+02</td>\n",
       "      <td>342.000000</td>\n",
       "      <td>342.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.425047e+07</td>\n",
       "      <td>60.263158</td>\n",
       "      <td>2.570947e+06</td>\n",
       "      <td>10283.789419</td>\n",
       "      <td>7.125237e+04</td>\n",
       "      <td>46.511696</td>\n",
       "      <td>7.366937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>5.471450e+07</td>\n",
       "      <td>7.770973</td>\n",
       "      <td>3.659211e+06</td>\n",
       "      <td>14636.843183</td>\n",
       "      <td>2.735725e+05</td>\n",
       "      <td>51.629218</td>\n",
       "      <td>39.889201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>3.469000e+03</td>\n",
       "      <td>51.000000</td>\n",
       "      <td>5.141206e+05</td>\n",
       "      <td>2056.482306</td>\n",
       "      <td>1.734500e+01</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>-0.996693</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>5.080018e+05</td>\n",
       "      <td>54.000000</td>\n",
       "      <td>7.304034e+05</td>\n",
       "      <td>2921.613655</td>\n",
       "      <td>2.540009e+03</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-0.574105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.917000e+06</td>\n",
       "      <td>58.500000</td>\n",
       "      <td>1.238947e+06</td>\n",
       "      <td>4955.788871</td>\n",
       "      <td>9.585000e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.602282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.441000e+06</td>\n",
       "      <td>63.000000</td>\n",
       "      <td>2.094384e+06</td>\n",
       "      <td>8377.534239</td>\n",
       "      <td>3.220500e+04</td>\n",
       "      <td>96.000000</td>\n",
       "      <td>4.047267</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>7.407640e+08</td>\n",
       "      <td>85.000000</td>\n",
       "      <td>2.750258e+07</td>\n",
       "      <td>110010.331810</td>\n",
       "      <td>3.703820e+06</td>\n",
       "      <td>197.000000</td>\n",
       "      <td>627.103870</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            streams       pop_5  predicted_streams     open_price  \\\n",
       "count  3.420000e+02  342.000000       3.420000e+02     342.000000   \n",
       "mean   1.425047e+07   60.263158       2.570947e+06   10283.789419   \n",
       "std    5.471450e+07    7.770973       3.659211e+06   14636.843183   \n",
       "min    3.469000e+03   51.000000       5.141206e+05    2056.482306   \n",
       "25%    5.080018e+05   54.000000       7.304034e+05    2921.613655   \n",
       "50%    1.917000e+06   58.500000       1.238947e+06    4955.788871   \n",
       "75%    6.441000e+06   63.000000       2.094384e+06    8377.534239   \n",
       "max    7.407640e+08   85.000000       2.750258e+07  110010.331810   \n",
       "\n",
       "        close_price    duration         ret  \n",
       "count  3.420000e+02  342.000000  342.000000  \n",
       "mean   7.125237e+04   46.511696    7.366937  \n",
       "std    2.735725e+05   51.629218   39.889201  \n",
       "min    1.734500e+01   -3.000000   -0.996693  \n",
       "25%    2.540009e+03   -1.000000   -0.574105  \n",
       "50%    9.585000e+03    0.000000    0.602282  \n",
       "75%    3.220500e+04   96.000000    4.047267  \n",
       "max    3.703820e+06  197.000000  627.103870  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pe.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3517055.9814293105"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pe.open_price.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "24368309.060000002"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pe.close_price.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "pe['open_price_bin'] = pd.qcut(pe['open_price'],3, labels=['<3700', '<6600', '<110k'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "return_stats = pe.groupby('open_price_bin')['ret'].agg([min, max, np.mean, np.median, np.std, \"count\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "capital = pe.groupby('open_price_bin')['open_price'].agg([sum])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "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 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>min</th>\n",
       "      <th>max</th>\n",
       "      <th>mean</th>\n",
       "      <th>median</th>\n",
       "      <th>std</th>\n",
       "      <th>count</th>\n",
       "      <th>sum</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>open_price_bin</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>&lt;3700</th>\n",
       "      <td>-0.866732</td>\n",
       "      <td>210.786338</td>\n",
       "      <td>5.954202</td>\n",
       "      <td>0.864885</td>\n",
       "      <td>24.092440</td>\n",
       "      <td>132</td>\n",
       "      <td>3.669222e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>&lt;6600</th>\n",
       "      <td>-0.996693</td>\n",
       "      <td>627.103870</td>\n",
       "      <td>12.507707</td>\n",
       "      <td>0.831038</td>\n",
       "      <td>66.933627</td>\n",
       "      <td>102</td>\n",
       "      <td>5.466312e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>&lt;110k</th>\n",
       "      <td>-0.698859</td>\n",
       "      <td>59.064542</td>\n",
       "      <td>4.238443</td>\n",
       "      <td>-0.181741</td>\n",
       "      <td>9.684720</td>\n",
       "      <td>108</td>\n",
       "      <td>2.603503e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     min         max       mean    median        std  count  \\\n",
       "open_price_bin                                                                \n",
       "<3700          -0.866732  210.786338   5.954202  0.864885  24.092440    132   \n",
       "<6600          -0.996693  627.103870  12.507707  0.831038  66.933627    102   \n",
       "<110k          -0.698859   59.064542   4.238443 -0.181741   9.684720    108   \n",
       "\n",
       "                         sum  \n",
       "open_price_bin                \n",
       "<3700           3.669222e+05  \n",
       "<6600           5.466312e+05  \n",
       "<110k           2.603503e+06  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "return_stats.join(capital)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/plotnine/utils.py:281: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  ndistinct = ids.apply(len_unique, axis=0).as_matrix()\n",
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/pandas/core/generic.py:4388: FutureWarning: Attribute 'is_copy' is deprecated and will be removed in a future version.\n",
      "  object.__getattribute__(self, name)\n",
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/pandas/core/generic.py:4389: FutureWarning: Attribute 'is_copy' is deprecated and will be removed in a future version.\n",
      "  return object.__setattr__(self, name, value)\n",
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/plotnine/positions/position.py:188: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  intervals = data[xminmax].drop_duplicates().as_matrix().flatten()\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<ggplot: (8734780861935)>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pe['log_ret_p1'] = np.log(pe['ret'] + 1)\n",
    "ggplot(pe, aes('open_price_bin', 'log_ret_p1')) + geom_violin()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/plotnine/utils.py:281: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  ndistinct = ids.apply(len_unique, axis=0).as_matrix()\n",
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/pandas/core/generic.py:4388: FutureWarning: Attribute 'is_copy' is deprecated and will be removed in a future version.\n",
      "  object.__getattribute__(self, name)\n",
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/pandas/core/generic.py:4389: FutureWarning: Attribute 'is_copy' is deprecated and will be removed in a future version.\n",
      "  return object.__setattr__(self, name, value)\n",
      "/home/paperspace/anaconda3/envs/whitelist/lib/python3.6/site-packages/plotnine/positions/position.py:188: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  intervals = data[xminmax].drop_duplicates().as_matrix().flatten()\n"
     ]
    },
    {
     "data": {
      "image/png": "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qqqqtGnTJvXq1UtTpkzRgAEDNG7cuEjlNEq3bt2UnZ1tdwyconi4VoVZM0M8zBoQC8L+6acXX3xRl156qTp06KD/+Z//kWVZwW2dO3cOOZIDAADQ0MIuNXPmzNGtt96ql19+Wddff33ItrPOOkvFxcWnHA4AAKCuwi41O3bs0KWXXnrcbR6PR/v37w87FAAAQH2FXWqys7O1devW427bsmWLOnToEHYoAACA+gq71IwdO1azZs3S2rVrg+scDoeKi4v18MMPa/z48REJCAAAUBdh//TTrFmz9Omnn+riiy8OPhLhkksu0Z49ezRixAjdcccdEQsJAABQm7BLTWJiol5//XW98847evvtt+X1epWRkaGhQ4dq6NChkcwIAABQq7BKTWVlpR5//HHl5uZq0KBBGjRoUKRzAQAA1EtY19S43W4VFBSovLw80nkAAADCEvaFwj179tRnn30WySx1cujQIT300EO6+uqrlZeXp7feeivqGQAAQOwJ+5qa+fPna/z48WrZsqUuueQSJSUlRTLXCS1cuFCBQECLFy9WaWmp7r77brVt21bnnHNOVN4fAADEprBLzeDBg+X3+zVmzBhJUnJyshwOR3C7w+GI+A34jhw5on/+85967LHHlJycrM6dO2vw4MFas2YNpQYAgEYu7FJz++23h5SYaPjuu+8kSe3btw+u69Spk1577bWo5gAAALHnlO5TUx9///vf1bt3b3k8nnDfUkeOHKlxmsvj8aiioiJkndfrldfrDS47nU5lZWWF/b6R4nK57I6ABuByuWLu7zbW8iAymDVESyzOWl2EXWrqIxAIaNCgQdq0aZN69eoV9us0bdq0RoHx+Xw1ik5RUZEKCwuDy3l5ebrpppvCft9IqaystDsCGkDz5s2Vnp5ud4wQzJqZmDVESyzOWl1EpdRIkmVZp/wap512miTpm2++Ubt27SRJJSUlNZ4zNXr0aA0YMCC47HQ6Y+LHz3nIp5n2798vt9ttd4wQzJqZmDVES6zMWn2LVdRKTSQ0bdpUF154oV544QXdcsst+v7777V27VrNmDEjZL/MzExlZmYGl71erwKBQLTj1hALGRB5gUAg5v5uYy0PIoNZQ7TE4qzVRVyVGkmaOnWqHn/8ceXl5Sk5OVnjxo1Tjx497I4FAABsFnelJiUlhYdlAkCM+eyzz1RWVmZ3DJyivXv3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9XpDrqNxOp3KyspqsOwIdeynUn760ylAQ2DWEC3MWnyImVJTUFCg4uLi425LS0vTc889J7fbrfPPP19nnnmmJOnqq69WUVGRdu3aFXK0pqioSIWFhcHlvLw83XTTTQ37CaCGZs2a2R0BjQSzhmhh1mJbzJSauXPn1rpPx44d6/Rao0eP1oABA4LLTqdT5eXl4UZDPblcLjVr1kwHDhzgpwTQoJg1RAuzZo/09PR67R8zpaYuLr74Yt13333avn27OnXqpFdffVUtW7bUaaedFrJfZmZmyI+Beb1ehtAGgUCAP3dEBbOGaGHWYltclZru3btr0qRJeuCBB3T48GGdfvrpuuuuuzjHCQAA4qvUSFJubq5yc3PtjgEAAGIMj0kAAABGoNQAAAAjUGoAAIARKDUAAMAIcfeUbsQ+r9eroqIijR49ut5PWAXqg1lDtDBr8YEjNYg4r9erwsLCkEdVAA2BWUO0MGvxgVIDAACMQKkBAABGcM2aNWuW3SFgnqSkJPXp00fJycl2R4HhmDVEC7MW+7hQGAAAGIHTTwAAwAiUGgAAGshjjz2mJUuW2B2j0Yi7B1rCXsuWLdPatWt16NAhJSUlqV+/fpowYYISEhK0Z88eTZs2LWT/yspKDR8+XFOmTJEkFRcX66mnnlJZWZk6duyoW265Re3btw/uv3TpUq1atUrV1dXq16+fpkyZooQExrSxKi4u1uLFi/XNN98oKSlJY8aM0YgRI4Lb33rrLb322msqLy9XRkaGbr31VnXt2jX4scwa6uLdd9/VG2+8oR07dqhjx4764x//GLJ96dKl+uCDD/TNN9/oyiuv1IQJE0K21zZriCILqIO9e/dalmVZ3333neXz+SzLsqz9+/dbd955p1VUVHTcjzl48KA1atQo69NPPw3u/+tf/9p65513LL/fb73yyivW5MmTraqqKsuyLGv16tXW5MmTrbKyMmvfvn3W7bffbr3wwgtR+OwQS47N2jfffGONHz/e2rhxo3X06FHr0KFD1tdffx3cb82aNda0adOsHTt2WNXV1dbu3bstr9drWRazhro5Nmv/+te/rH/84x/Wyy+/bN1+++019luzZo314YcfWvfff7/17LPPhmyrbdYeffTRGh+DhsPpJ5xQRUWF1q5dqzvvvFO///3vJUlt2rQJufLf4XBo165dx/34DRs2KCsrS926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9esXXLdixYqQfZYvX642bdoEfzR66NChKi4u1rnnnqs+ffqE/HfGGWdEPHtxcbG2b98eXN6+fbuKi4uPWzpqM3ToUP3nP/854SmgM888U23bttWOHTtqfG59+vSpV6nZv3+/1q1bV2M5nNwAIosjNUCcmzVrlq644gpdc801mjBhgnbs2KGZM2dqyJAhGjhwoNavXy9JWrdunaZPn66LL75Yb7/9tpYuXaonnnhCTueP39vMnj1bffv21bBhwzRlyhS1atVKZWVl2rBhg/r166drrrkmorlbtWqlyy+/XHPmzJFlWSooKNBpp52mCRMm1Pu1rr32Wi1YsEAjRozQPffco+7du+u7777T3//+dy1atEgOh0OPPPKIxo4dK5/Pp+HDh8vj8eirr77SypUrNXfuXP3iF7+o03tlZGQoPz9fs2fPVlpamh588EFJ0q233lrv3AAii1IDxLnLL79cRUVFuvfeezVy5EilpaVp/Pjxeuihh0L2W7hwoRYuXKgFCxYoNTVVc+bMCTnVdPrpp2vjxo36/e9/rxtvvFGHDh1S69at1b9/f51zzjkRz92rVy+NHj1a06dPV2lpqc4//3w99dRTatq0ab1fy+12a+3atbrrrrs0d+5c7d27V23btg0pYmPGjFFaWpruv//+4I+Gd+zYUb/61a/UqlWrOr9X69at9dBDD2n69On68ssvddZZZ2n16tX1eg0ADcNhWZZldwgADWf9+vUaNGiQNm3apD59+tgdR9KPN6dLSUnRm2++aXcUAAbhmhoAAGAETj8BiKhAIKCTHQBOSIjNLzvxmhvA/+H0E4CI6tixo7766qsTbo/VLzkDBw7Uhg0bTri9pKREHTt2jF4gAPVGqQEQUZ988slJb8QXK9f1/Nznn3+ugwcPnnD7OeecU+PmeQBiC6UGAAAYgQuFAQCAESg1AADACJQaAABgBEoNAAAwAqUGAAAYgVIDAACMQKkBAABG+H/ntoHC37jzEgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<ggplot: (8734780835336)>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ggplot(pe, aes('open_price_bin', 'log_ret_p1')) + geom_boxplot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:whitelist]",
   "language": "python",
   "name": "conda-env-whitelist-py"
  },
  "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.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
