{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0da2ada6",
   "metadata": {},
   "source": [
    "# LMP Pricing Data\n",
    "\n",
    "## Support\n",
    "\n",
    "Below are the currently supported LMP markets\n",
    "\n",
    "<!-- LMP AVAILABILITY TABLE START -->\n",
    "|       | Method    | REAL_TIME_5_MIN   | REAL_TIME_15_MIN   | REAL_TIME_HOURLY   | DAY_AHEAD_HOURLY   |\n",
    "|:------|:----------|:------------------|:-------------------|:-------------------|:-------------------|\n",
    "| CAISO | `get_lmp` | &#10060;          | &#x2705;           | &#x2705;           | &#x2705;           |\n",
    "| Ercot | `get_spp` | &#10060;          | &#x2705;           | &#10060;           | &#x2705;           |\n",
    "| ISONE | `get_lmp` | &#x2705;          | &#10060;           | &#x2705;           | &#x2705;           |\n",
    "| MISO  | `get_lmp` | &#x2705;          | &#10060;           | &#10060;           | &#x2705;           |\n",
    "| NYISO | `get_lmp` | &#x2705;          | &#10060;           | &#10060;           | &#x2705;           |\n",
    "| PJM   | `get_lmp` | &#x2705;          | &#10060;           | &#x2705;           | &#x2705;           |\n",
    "| SPP   | `get_lmp` | &#x2705;          | &#10060;           | &#10060;           | &#x2705;           |\n",
    "\n",
    "<!-- LMP AVAILABILITY TABLE END -->\n",
    "\n",
    "\n",
    "## How to use\n",
    "\n",
    "We are currently adding Locational Marginal Price (LMP). Even though each BA offers different markets, but you can query them with a standardized API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "18a54534",
   "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>Time</th>\n",
       "      <th>Market</th>\n",
       "      <th>Location</th>\n",
       "      <th>Location Type</th>\n",
       "      <th>LMP</th>\n",
       "      <th>Energy</th>\n",
       "      <th>Congestion</th>\n",
       "      <th>Loss</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2022-12-30 00:02:36-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>CAPITL</td>\n",
       "      <td>Zone</td>\n",
       "      <td>77.03</td>\n",
       "      <td>-12.45</td>\n",
       "      <td>-90.19</td>\n",
       "      <td>-0.71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2022-12-30 00:02:36-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>CENTRL</td>\n",
       "      <td>Zone</td>\n",
       "      <td>-2.01</td>\n",
       "      <td>-12.45</td>\n",
       "      <td>-10.58</td>\n",
       "      <td>-0.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2022-12-30 00:02:36-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>DUNWOD</td>\n",
       "      <td>Zone</td>\n",
       "      <td>50.05</td>\n",
       "      <td>-12.45</td>\n",
       "      <td>-63.48</td>\n",
       "      <td>-0.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2022-12-30 00:02:36-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>GENESE</td>\n",
       "      <td>Zone</td>\n",
       "      <td>-3.51</td>\n",
       "      <td>-12.46</td>\n",
       "      <td>-8.76</td>\n",
       "      <td>0.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2022-12-30 00:02:36-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>H Q</td>\n",
       "      <td>Zone</td>\n",
       "      <td>-43.84</td>\n",
       "      <td>-12.44</td>\n",
       "      <td>31.66</td>\n",
       "      <td>0.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2845</th>\n",
       "      <td>2022-12-30 17:00:00-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>NORTH</td>\n",
       "      <td>Zone</td>\n",
       "      <td>15.82</td>\n",
       "      <td>16.44</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-0.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2846</th>\n",
       "      <td>2022-12-30 17:00:00-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>NPX</td>\n",
       "      <td>Zone</td>\n",
       "      <td>54.08</td>\n",
       "      <td>16.46</td>\n",
       "      <td>-36.44</td>\n",
       "      <td>1.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2847</th>\n",
       "      <td>2022-12-30 17:00:00-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>O H</td>\n",
       "      <td>Zone</td>\n",
       "      <td>17.61</td>\n",
       "      <td>16.45</td>\n",
       "      <td>-1.87</td>\n",
       "      <td>-0.71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2848</th>\n",
       "      <td>2022-12-30 17:00:00-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>PJM</td>\n",
       "      <td>Zone</td>\n",
       "      <td>25.10</td>\n",
       "      <td>16.44</td>\n",
       "      <td>-8.36</td>\n",
       "      <td>0.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2849</th>\n",
       "      <td>2022-12-30 17:00:00-05:00</td>\n",
       "      <td>REAL_TIME_5_MIN</td>\n",
       "      <td>WEST</td>\n",
       "      <td>Zone</td>\n",
       "      <td>17.82</td>\n",
       "      <td>16.45</td>\n",
       "      <td>-1.57</td>\n",
       "      <td>-0.20</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2850 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                          Time           Market Location Location Type    LMP  \\\n",
       "0    2022-12-30 00:02:36-05:00  REAL_TIME_5_MIN   CAPITL          Zone  77.03   \n",
       "1    2022-12-30 00:02:36-05:00  REAL_TIME_5_MIN   CENTRL          Zone  -2.01   \n",
       "2    2022-12-30 00:02:36-05:00  REAL_TIME_5_MIN   DUNWOD          Zone  50.05   \n",
       "3    2022-12-30 00:02:36-05:00  REAL_TIME_5_MIN   GENESE          Zone  -3.51   \n",
       "4    2022-12-30 00:02:36-05:00  REAL_TIME_5_MIN      H Q          Zone -43.84   \n",
       "...                        ...              ...      ...           ...    ...   \n",
       "2845 2022-12-30 17:00:00-05:00  REAL_TIME_5_MIN    NORTH          Zone  15.82   \n",
       "2846 2022-12-30 17:00:00-05:00  REAL_TIME_5_MIN      NPX          Zone  54.08   \n",
       "2847 2022-12-30 17:00:00-05:00  REAL_TIME_5_MIN      O H          Zone  17.61   \n",
       "2848 2022-12-30 17:00:00-05:00  REAL_TIME_5_MIN      PJM          Zone  25.10   \n",
       "2849 2022-12-30 17:00:00-05:00  REAL_TIME_5_MIN     WEST          Zone  17.82   \n",
       "\n",
       "      Energy  Congestion  Loss  \n",
       "0     -12.45      -90.19 -0.71  \n",
       "1     -12.45      -10.58 -0.14  \n",
       "2     -12.45      -63.48 -0.98  \n",
       "3     -12.46       -8.76  0.19  \n",
       "4     -12.44       31.66  0.26  \n",
       "...      ...         ...   ...  \n",
       "2845   16.44        0.00 -0.62  \n",
       "2846   16.46      -36.44  1.18  \n",
       "2847   16.45       -1.87 -0.71  \n",
       "2848   16.44       -8.36  0.30  \n",
       "2849   16.45       -1.57 -0.20  \n",
       "\n",
       "[2850 rows x 8 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import gridstatus\n",
    "nyiso = gridstatus.NYISO()\n",
    "nyiso.get_lmp(date=\"today\", market=\"REAL_TIME_5_MIN\", locations=\"ALL\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da8b6f0d",
   "metadata": {},
   "source": [
    "And here is querying CAISO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a65c82df",
   "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>Time</th>\n",
       "      <th>Market</th>\n",
       "      <th>Location</th>\n",
       "      <th>Location Type</th>\n",
       "      <th>LMP</th>\n",
       "      <th>Energy</th>\n",
       "      <th>Congestion</th>\n",
       "      <th>Loss</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2022-12-30 00:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_NP15_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>130.20757</td>\n",
       "      <td>132.59425</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-2.38670</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2022-12-30 00:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_SP15_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>128.44406</td>\n",
       "      <td>132.59425</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-4.15020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2022-12-30 00:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_ZP26_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>128.07278</td>\n",
       "      <td>132.59425</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-4.52146</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2022-12-30 01:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_NP15_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>124.12252</td>\n",
       "      <td>126.57814</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-2.45562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2022-12-30 01:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_SP15_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>123.18585</td>\n",
       "      <td>126.57814</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-3.39229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>2022-12-30 22:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_SP15_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>128.15944</td>\n",
       "      <td>131.84100</td>\n",
       "      <td>-0.00321</td>\n",
       "      <td>-3.67836</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>2022-12-30 22:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_ZP26_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>126.25389</td>\n",
       "      <td>131.84100</td>\n",
       "      <td>0.00294</td>\n",
       "      <td>-5.59006</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>2022-12-30 23:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_NP15_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>124.21894</td>\n",
       "      <td>126.70231</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-2.48337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>2022-12-30 23:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_SP15_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>123.16731</td>\n",
       "      <td>126.70231</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-3.53499</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>2022-12-30 23:00:00-08:00</td>\n",
       "      <td>DAY_AHEAD_HOURLY</td>\n",
       "      <td>TH_ZP26_GEN-APND</td>\n",
       "      <td>Trading Hub</td>\n",
       "      <td>121.72290</td>\n",
       "      <td>126.70231</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>-4.97940</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>72 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                        Time            Market          Location  \\\n",
       "0  2022-12-30 00:00:00-08:00  DAY_AHEAD_HOURLY  TH_NP15_GEN-APND   \n",
       "1  2022-12-30 00:00:00-08:00  DAY_AHEAD_HOURLY  TH_SP15_GEN-APND   \n",
       "2  2022-12-30 00:00:00-08:00  DAY_AHEAD_HOURLY  TH_ZP26_GEN-APND   \n",
       "3  2022-12-30 01:00:00-08:00  DAY_AHEAD_HOURLY  TH_NP15_GEN-APND   \n",
       "4  2022-12-30 01:00:00-08:00  DAY_AHEAD_HOURLY  TH_SP15_GEN-APND   \n",
       "..                       ...               ...               ...   \n",
       "67 2022-12-30 22:00:00-08:00  DAY_AHEAD_HOURLY  TH_SP15_GEN-APND   \n",
       "68 2022-12-30 22:00:00-08:00  DAY_AHEAD_HOURLY  TH_ZP26_GEN-APND   \n",
       "69 2022-12-30 23:00:00-08:00  DAY_AHEAD_HOURLY  TH_NP15_GEN-APND   \n",
       "70 2022-12-30 23:00:00-08:00  DAY_AHEAD_HOURLY  TH_SP15_GEN-APND   \n",
       "71 2022-12-30 23:00:00-08:00  DAY_AHEAD_HOURLY  TH_ZP26_GEN-APND   \n",
       "\n",
       "   Location Type        LMP     Energy  Congestion     Loss  \n",
       "0    Trading Hub  130.20757  132.59425     0.00000 -2.38670  \n",
       "1    Trading Hub  128.44406  132.59425     0.00000 -4.15020  \n",
       "2    Trading Hub  128.07278  132.59425     0.00000 -4.52146  \n",
       "3    Trading Hub  124.12252  126.57814     0.00000 -2.45562  \n",
       "4    Trading Hub  123.18585  126.57814     0.00000 -3.39229  \n",
       "..           ...        ...        ...         ...      ...  \n",
       "67   Trading Hub  128.15944  131.84100    -0.00321 -3.67836  \n",
       "68   Trading Hub  126.25389  131.84100     0.00294 -5.59006  \n",
       "69   Trading Hub  124.21894  126.70231     0.00000 -2.48337  \n",
       "70   Trading Hub  123.16731  126.70231     0.00000 -3.53499  \n",
       "71   Trading Hub  121.72290  126.70231     0.00000 -4.97940  \n",
       "\n",
       "[72 rows x 8 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import gridstatus\n",
    "caiso = gridstatus.CAISO()\n",
    "locations = [\"TH_NP15_GEN-APND\", \"TH_SP15_GEN-APND\", \"TH_ZP26_GEN-APND\"]\n",
    "caiso.get_lmp(date=\"today\", market='DAY_AHEAD_HOURLY', locations=locations)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e3f18f4",
   "metadata": {},
   "source": [
    "You can see what markets are available by accessing the `markets` property of an iso. For, example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9c75defc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<Markets.REAL_TIME_15_MIN: 'REAL_TIME_15_MIN'>,\n",
       " <Markets.REAL_TIME_HOURLY: 'REAL_TIME_HOURLY'>,\n",
       " <Markets.DAY_AHEAD_HOURLY: 'DAY_AHEAD_HOURLY'>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "caiso.markets"
   ]
  }
 ],
 "metadata": {
  "file_format": "mystnb",
  "kernelspec": {
   "display_name": "python3",
   "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.10.8"
  },
  "source_map": [
   5,
   31,
   35,
   39,
   44,
   48
  ]
 },
 "nbformat": 4,
 "nbformat_minor": 5
}