{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a3fa1e19-b305-4d42-8304-63cf9ee988e7",
   "metadata": {},
   "source": [
    "# Interval Metrics (e.g., VWAP)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2743cd26-e3d1-413c-abb3-d9b4d9306149",
   "metadata": {},
   "outputs": [],
   "source": [
    "import onetick.py as otp\n",
    "\n",
    "query = otp.DataSource('US_COMP_SAMPLE', tick_type='TRD')\n",
    "query = query.agg({'market_vwap': otp.agg.vwap('PRICE', 'SIZE')})\n",
    "\n",
    "otp.run(\n",
    "    query,\n",
    "    symbols=['AAPL'],\n",
    "    start=otp.dt(2024, 2, 1, 9, 30),\n",
    "    end=otp.dt(2024, 2, 1, 9, 30, 1),\n",
    "    timezone='EST5EDT',\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "81afc37b-f5f6-41f5-a384-e193035f6584",
   "metadata": {},
   "source": [
    "## Computing market VWAP for every order's arrival/exit interval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2a102a8d-bc34-4765-9f31-1580da22117a",
   "metadata": {},
   "outputs": [],
   "source": [
    "start = otp.dt(2024, 2, 1, 9, 30)\n",
    "end = otp.dt(2024, 2, 1, 9, 30, 1)\n",
    "\n",
    "orders = otp.Ticks(arrival=[start, start + otp.Milli(7934)],\n",
    "                   exit=[end, end + otp.Milli(9556)],\n",
    "                   sym=['AAPL', 'MSFT'])\n",
    "otp.run(orders, start=start, end=start + otp.Day(1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "64b1fc64-4632-434a-b678-05bdf3b6f409",
   "metadata": {},
   "outputs": [],
   "source": [
    "def vwap(symbol):\n",
    "    q = otp.DataSource('US_COMP_SAMPLE', tick_type='TRD')\n",
    "    q = q.agg({'market_vwap': otp.agg.vwap('PRICE','SIZE')})\n",
    "    return q\n",
    "\n",
    "orders = orders.join_with_query(vwap, start=orders['arrival'], end=orders['exit'], symbol=orders['sym'])\n",
    "otp.run(orders, start=start, end=end + otp.Day(1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9686d9f0-eb66-4152-80f8-5e2de29a49a2",
   "metadata": {},
   "source": [
    "A more efficient implementation is also available with [symbol parameters](vwap-symbol-params)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.9.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
