Support

Calculate VWAP and RSI

Overview

In this example we will use the Historical client to calculate two technical indicators: the volume weighted average price (VWAP) and relative strength indicator (RSI). To do this we will request the open, high, low, and close prices in one minute intervals along with aggregated volume data to calculate these indicators at one minute intervals.

OHLCV-1m schema

We'll demonstrate this example using the OHLCV-1m schema. The OHLCV family of schemas contain the opening, high, low and closing prices as well as the aggregated volume of trades within a time interval. We'll use an interval of one minute, a typical charting frequency, which is specified by the suffix -1m.

Example

import databento as db # First, create a historical client client = db.Historical("$YOUR_API_KEY") # Next, we will request the OHLCV-1m data data = client.timeseries.get_range( dataset="GLBX.MDP3", start="2022-09-20", symbols="CLV2", stype_in="raw_symbol", schema="ohlcv-1m", ) # Then, convert the DBNStore to a DataFrame ohlcv_data = data.to_df() # Now, we will calculate the volume weighted average price (VWAP) ohlcv_data["pvt"] = ohlcv_data[["open", "high", "close"]].mean(axis=1) * ohlcv_data["volume"] ohlcv_data["vwap"] = ohlcv_data["pvt"].cumsum() / ohlcv_data["volume"].cumsum() # Finally, we will calculate the relative strength indicator (RSI) ohlcv_data["up"] = (ohlcv_data["close"] - ohlcv_data["open"]).clip(lower=0) ohlcv_data["down"] = (ohlcv_data["open"] - ohlcv_data["close"]).clip(lower=0) # We will use a simple moving average for this example ohlcv_data["rs"] = ohlcv_data["up"].rolling(5).mean() / ohlcv_data["down"].rolling(5).mean() ohlcv_data["rsi"] = 100 - (100 / (1 + ohlcv_data["rs"])) # We now have a DataFrame containing our technical indicators print(ohlcv_data[["symbol", "open", "close", "vwap", "rsi"]]) 

Result

 symbol open close vwap rsi ts_event 2022-09-20 00:00:00+00:00 CLV2 85.85 85.85 85.850000 NaN 2022-09-20 00:08:00+00:00 CLV2 86.05 86.01 85.938889 NaN 2022-09-20 00:10:00+00:00 CLV2 86.03 86.03 85.950278 NaN 2022-09-20 00:11:00+00:00 CLV2 86.03 85.98 85.964516 NaN 2022-09-20 00:12:00+00:00 CLV2 86.01 86.01 85.965938 0.000000 ... ... ... ... ... ... 2022-09-20 18:25:00+00:00 CLV2 84.27 84.40 84.532655 53.488372 2022-09-20 18:26:00+00:00 CLV2 84.41 84.32 84.529908 51.111111 2022-09-20 18:27:00+00:00 CLV2 84.32 84.33 84.526147 64.864865 2022-09-20 18:28:00+00:00 CLV2 84.33 84.40 84.523789 77.500000 2022-09-20 18:29:00+00:00 CLV2 84.30 84.19 84.523212 51.219512 [176 rows x 5 columns]