VWAP

What is this endpoint for?

This endpoint delivers VWAP (volume-weighted average price) for an instrument on an exchange in real time.

Endpoints

gateway-v0-grpc.kaiko.ovh

Request parameters

Parameter
Description
Examples

aggregate

The period you would like the VWAP aggregation to be calculated over.

1m

instrumentCriteria

A nested object to configure following properties for your stream:

  • exchange (String) - The code(s) for the exchange(s)

  • instrument_class (String) - The class(es) of the instrument(s) .

  • code (String) - The Kaiko code for the instrument.

Explore instruments, codes and exchanges in the Instrument Explorer or Reference Data.

cbse

spot

btc-usd

Configuring a wildcard

A wildcard allows you to request all information we have on a specific instrument, class, or exchange in the same stream. Use a * in place of the relevant exchange, instrument, or class parameter.

For example, the configuration below would deliver trades for BTC/USD across all exchanges where it’s supported:

exchange: * class: spot instrument: btc-usd

Response fields

Field
Description

aggregate

The period of calculation.

class

The class of instrument.

code

The instrument code.

price

The price for the peirod (USD).

exchange

The exchange the VWAP is referencing.

tsEvent

The timestamp for the interval.

uid

The unique ID for this delivery.

volume

Volume traded in interval. 0 when no trades reported.

sequenceId

Not applicable. Null

Request examples

# This is a code example. Configure your parameters below #

from __future__ import print_function
from datetime import datetime, timedelta
import logging
import os
from google.protobuf.timestamp_pb2 import Timestamp
import grpc
from google.protobuf.json_format import MessageToJson
from kaikosdk import sdk_pb2_grpc
from kaikosdk.core import instrument_criteria_pb2
from kaikosdk.stream.aggregates_vwap_v1 import request_pb2 as pb_vwap

def vwap_request(channel: grpc.Channel):
    try:
        with channel:
            stub = sdk_pb2_grpc.StreamAggregatesVWAPServiceV1Stub(channel)
            responses = stub.Subscribe(pb_vwap.StreamAggregatesVWAPRequestV1(
                aggregate='1s',
                instrument_criteria = instrument_criteria_pb2.InstrumentCriteria(
                    exchange = "binc",
                    instrument_class = "spot",
                    code = "eth-usdt"
                )
            ))
            for response in responses:
                # for debug purpose only, don't use MessageToJson in the reading loop in production
                print("Received message %s" % (MessageToJson(response, including_default_value_fields = True)))
    except grpc.RpcError as e:
        print(e.details(), e.code())

def run():
    credentials = grpc.ssl_channel_credentials(root_certificates=None)
    call_credentials = grpc.access_token_call_credentials(os.environ['KAIKO_API_KEY'])
    composite_credentials = grpc.composite_channel_credentials(credentials, call_credentials)
    channel = grpc.secure_channel('gateway-v0-grpc.kaiko.ovh', composite_credentials)
    vwap_request(channel)

if __name__ == '__main__':
    logging.basicConfig()
    run()

Response Example

"aggregate": "1s",
  "class": "spot",
  "code": "eth-usdt",
  "exchange": "binc",
  "price": 2591.3221372276307,
  "tsEvent": "2024-08-09T13:47:20.689338450Z",
  "uid": "2024-08-09T13:47:19Z",
  "sequenceId": ""

Last updated

Was this helpful?