Equities sectors classification
Enables to retrieve sector classification information for a given watchlist in addition to reference data. Check out StaticSectorService.
Ganymede API is built using gRPC from the Cloud Native Computing Foundation.
gRPC was chosen over JSON because of its high speed streaming performance (usually one order of magnitude quicker than JSON, see
this
or
this
or
this
.
It is of utmost importance when it comes to handling tick-by-tick data where volumes are usually higher than a few GiB per trading day and per ticker. gRPC improves bandwidth and reduces required CPU cycles greatly.
gRPC comes with a lot of important features:
Ganymede is cloud native and the API can be accessed both from within our Web hosted Jupyter Lab or using Remote Access.
The Web hosted Jupyter Lab is 100% online and provides easy access to Ganymede API. The only requirement is a device equiped with a modern web browser, everything else is provided for the user (CPU, memory, disk and data). This allows quick prototyping of ideas with up-to-date data, all in the same place.
The subscribed plan determines both the provided computing resources and the particular API and available data. At minima, the following specs are guaranted:
As users in tier-3 plan gain access to tick-by-tick data, it implies beefier and dedicated infrastructure (highest vCPU counts per instance, much more memory, higher number of instances, GPU options, etc..)
Users can access their private Web hosted Jupyter Lab from the dashboard.
Users can access Ganymede API from anywhere thanks to public API endpoints. Communication to the public endpoints are encrypted using TLS for guaranteed security and privacy. The Ganymede engine propelling the remote services is running on a shared infrastructure (tier-1 and tier-2 plans) or a dedicated infrastructure (tier-3 plan).
Remote access allows to:
Walkthrough documents to leverage remote access capabilities are available:
Document | Platform | Notebooks | Remarks |
---|---|---|---|
sample-notebooks-remote-access-walkthrough-windows | Windows | Python | Python stock installer, easy |
sample-notebooks-remote-access-walkthrough-anaconda-windows | Windows | Python, C#, F# | Anaconda 3, recommended |
sample-notebooks-remote-access-walkthrough-unix | Linux, including WSL2. OSX | Python, C#, F# | Docker, recommended |
In order to facilitate Ganymede API access, we provide a set of pre-generated packages:
The packages contain:
Have a look at how those helpers are used in Template API call.
The following code snippet is a template pseudo-code. Its purpose is to illustrate the ubiquitous steps required to communicate with Ganymede services.
This template is used in each and every example available from our Github notebook-examples
repository and is the recommended way to operate.
In particular, you will notice that:
The helpers behavior is determined by environment variables, which brings a few advantages:
For an exhaustive explanation of the involved environment variables see Environment variables section.
# grpc modules and well known types
import grpc
import google.type.date_pb2 as date
import google.type.timeofday_pb2 as timeofday
import google.type.dayofweek_pb2 as dayofweek
import google.protobuf.duration_pb2 as duration
from datetime import datetime
from datetime import timedelta
# systemathics modules, request/response types, shared types and helpers
import systemathics.apis.services.api_service_group.v1.some_service_pb2_grpc as some_service_grpc # stub
import systemathics.apis.services.api_service_group.v1.some_service_pb2 as some_service # service types
import systemathics.apis.type.shared.v1.some_shared_type as some_shared_type # shared types
import systemathics.apis.helpers.token_helpers as token_helpers
import systemathics.apis.helpers.channel_helpers as channel_helpers
try:
# open a gRPC channel (notice the use of channel_helpers)
with channel_helpers.get_grpc_channel() as channel:
# create stub for some_service
stub = some_service_grpc.SomeServiceStub(channel)
# create the request
request = some_service.SomeServiceRequest(
# request parameters here
)
# call the service (notice the use of token_helpers)
response = stub.Request(request = request, metadata = token_helpers.get_token_as_metadata())
# exploit the response
print(response)
except grpc.RpcError as e:
# error handling
print(e.code().name)
print(e.details())
// grpc and well known types
using Grpc.Core;
using Grpc.Net.Client;
using Google.Protobuf.WellKnownTypes;
using Google.Type;
// systemathics request/response types, shared types and helpers
using Systemathics.Apis.Services.SomeService.V1;
using Systemathics.Apis.Type.Shared.V1;
using Systemathics.Apis.Helpers;
try
{
// open a gRPC channel (notice the use of ChannelHelpers)
using(var channel = ChannelHelpers.GetChannel())
{
// create client stub for SomeService
var client = new SomeService.SomeServiceClient(channel);
// create request
var request = new SomeServiceRequest
{
// request parameters here
};
// call the service (notice the use of TokenHelpers)
var response = client.SomeService(request, TokenHelpers.GetTokenAsMetaData());
// Exploit response
Console.WriteLine(response);
}
}
catch (GrpcException ge)
{
// Error handling
}
// grpc and well known types
open Grpc.Core
open Grpc.Net.Client
open Google.Protobuf.WellKnownTypes
open Google.Type
// systemathics request/response types, shared types and helpers
open Systemathics.Apis.Services.SomeService.V1
open Systemathics.Apis.Type.Shared.V1
open Systemathics.Apis.Helpers
try
// open a gRPC channel (notice the use of ChannelHelpers)
use channel = ChannelHelpers.GetChannel()
// create client stub for SomeService
let client = SomeService.SomeServiceClient(channel)
// create request
let request = SomeServiceRequest(
// request parameters here
)
// call the service (notice the use of TokenHelpers)
let response = client.SomeService(request, TokenHelpers.GetTokenAsMetaData())
// Exploit response
printf $"{response}"
with
| ex -> printf $"got exception {ex}" // Error handling
The following tables describe how environment variables are relevant in the context of Web hosted Jupyter Lab and in Remote Access.
When using Web hosted Jupyter Lab, everything is pre-populated for users behind the scenes.
Name | Function | Affects | Remarks |
---|---|---|---|
GRPC_APIS | Cloud internal URL of Ganymede API endpoint | channel helpers | Automatically set at logon |
AUTH0_TOKEN | JWT authorization token | token helpers | Automatically set at logon |
When using Remote Access, the authentication token must be requested to auth0 using a REST API call. For that to happen, the user has to set at minimum client id and client secret (generated from dashboard in the tokens section).
Name | Function | Affects | Remarks |
---|---|---|---|
GRPC_APIS | URL of public Ganymede API endpoint | channel helpers | if not set, helpers use default https://grpc.ganymede.cloud |
AUTH0_TOKEN | JWT authorization token | token helpers | Requested using REST API call to auth0, then set |
CLIENT_ID | JWT token retrieval (mandatory) | token helpers | Must be generated from user's dashboard |
CLIENT_SECRET | JWT token retrieval (mandatory) | token helpers | Must be generated from user's dashboard |
AUDIENCE | JWT token retrieval (optional) | token helpers | Must be generated from user's dashboard If not set, helpers use default value https://prod.ganymede-prod |
TENANT | JWT token retrieval (optional) | token helpers | Must be generated from user's dashboard If not set, helpers use default value ganymede-prod.eu.auth0.com |
Enables to retrieve sector classification information for a given watchlist in addition to reference data. Check out StaticSectorService.
This update allows to retrieve trades conditions for a given exchange. Enables trade conditions filtering in Tick APIs: data and analytics
Tick bars endpoint now streams vwap in addition to others bars data. Go through TickBarsService
New endpoint added to retrieve indices' components and weights. See ComponentsService.
Added main indices to available reference data : Use StaticDataService to retrieve index data.
Stream renamed into Level: to select only Trades or Trades and Book limits for a given data request.
Represents a whole or partial calendar date, e.g. a birthday. The time of day and time zone are either specified elsewhere or are not significant.
The date is relative to the Proleptic Gregorian Calendar. This can represent:
- A full date, with non-zero year, month and day values
- A month and day value, with a zero year, e.g. an anniversary
- A year on its own, with zero month and day values
- A year and month value, with a zero day, e.g. a credit card expiration date
Related types are google.type.TimeOfDay and google.type.DayOfWeek.
Contains the date.
Year of date. Must be from 1 to 9999, or 0 if specifying a date without a year
Month of year. Must be from 1 to 12, or 0 if specifying a year without a month and day
Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a year by itself or a year and month where the day is not significant.
Represents a day of week.
Contains the day of week values.
Number | Name | Description |
---|---|---|
0 | DAY_OF_WEEK_UNSPECIFIED | The unspecified day-of-week |
1 | MONDAY | The day-of-week of Monday |
2 | TUESDAY | The day-of-week of Tuesday |
3 | WEDNESDAY | The day-of-week of Wednesday |
4 | THURSDAY | The day-of-week of Thursday |
5 | FRIDAY | The day-of-week of Friday |
6 | SATURDAY | The day-of-week of Saturday |
7 | SUNDAY | The day-of-week of Sunday |
Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds.
Related types are google.type.Date and google.type.DayOfWeek.
Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value “24:00:00” for scenarios like business closing time.
Minutes of hour of day. Must be from 0 to 59.
Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Up-to-date symbol changes annoucements including effective date, old and new symbols.
Called to request symbol changes data.
Contains the symbol changes data: date, old and new symbols.
Effective date
New symbol
Old symbol
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the ChangesService
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
Represents a change response.
The changes: an array of symbol change objects
Up-to-date dividend annoucements including effective date, dividend type and amount.
Called to request dividends data.
Contains the dividends data: date, type and amount.
Effective payment date
Dividend type
Dividend amount
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the DividendsService
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
Represents a dividend response.
The dividends: an array of Dividend objects
Contains the dividend types.
Number | Name | Description |
---|---|---|
0 | DIVIDEND_TYPE_UNSPECIFIED | Unspecified |
1 | DIVIDEND_TYPE_CASH | Cash dividend |
2 | DIVIDEND_TYPE_STOCK | Stock dividend |
Up-to-date split annoucements including effective date, old and new shares.
Called to request splits data.
Contains the splits data: date, old and new shares.
Effective date
New shares
Old shares
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the SplitsService
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
Represents a split response.
The splits: an array of Split objects
Daily bars are widely used to illustrate price movements for an instrument over a look back period. Commonly used in financial analysis and trading strategies as a technical indicator.
Called to request daily bars data.
Contains the daily bar's data: date, open, high, low, close and volume.
Date of the bar
Open price of the day
Highest price of the day
Lowest price of the day
Close price of the day
Total traded volume of the day
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the DailyBarsService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
The daily bars response contains an array of daily bars.
The daily bars: an array of DailyBar objects
Daily prices illustrates daily price movements for an instrument over a look back period.
Called to request daily prices data.
Contains the daily prices data: date, price and volume.
Date of the price
Last price of the day
Total traded volume of the day
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the DailyPricesService
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily prices response.
The daily prices: an array of DailyPrice objects
The Volume Weighted Average Price is similar to a moving average, except volume is included to weight the average price over a one trading day period.
It serves as a reference point for one trading day prices. Comparing current prices with the VWAP values enables to:
- mesure trading efficiency by comparing individual trades to VWAP
- highlight liquidity points as vwap reflects prices levels weighted by volume
- determine the market trend, etc.
Called to request daily VWAP data.
Contains the daily vwaps data: date, vwap and volume.
Date of the vwap
Vwap of the day
Total traded volume of the day
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the DailyVwapsService
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily VWAPs response.
The daily vwaps: an array of DailyVwap objects
Bollinger bands were created by John Bollinger, they are envelopes and plotted around the moving average.
The width of the bands is based on the standard deviaton of the closing prices from a moving average as follows:
- Middle band = n-period moving average
- Upper band = Middle band + (k * n-period standard deviation)
- Lower band = Middle band - (k * n-period standard deviation)
Where n is the number of periods and k is factor to apply to the standard deviation value, k=2 as default value.
Called to request daily Bollinger bands data.
Contains the daily Bollinger bands data: date, lower, middle and upper.
Date of Bollinger bands
The data used to calculate the Bollinger bands of the day
Bollinger lower band value of the day
Lower band = Middle band - (k * n-period standard deviation)
Bollinger upper band value of the day
Upper band = Middle band + (k * n-period standard deviation)
Bollinger middle band value of the day
Middle band = n-period moving average
The required input to request the DailyBollingerService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The simple moving average window length (period: data points number)
[Mandatory] The standard deviation window length
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
The daily bars response contains an array of Bollinger bands.
The daily Bollinger bands: an array of DailyBollingerData objects
Moving averages smooth the price movements by filtering out the “noise” caused by short-term price fluctuations.
They also form the building blocks for a wide range of technical indicators. Computing moving averages over a defined number of time periods is useful to:
- identify the trend direction
- determine support and resistance levels
CMA is the average of all the data points.
Called to request daily cumulative moving average data.
Contains the daily cumulative moving average data: date and value.
Date of the cumulative moving average
The data used to calculate the average of the day
The cumulative moving average value of the day for all the data points
The required input to request the DailyCmaService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily cumulative moving average response.
The daily cumulative moving averages: an array of DailyCmaData objects
EMA reduces the lag by applying greater weight to recent data points.
The weighting applied to the most recent price depends on the number of points in the moving average; The smaller the point count is, the more weight is applied to the most recent price.
N-points EMA data point is computed using the previous’ EMA value and the weighting multiplier as follows: \(EMA = (Close-EMAp)*k+EMAp\) Where:
- Close is the close price
- EMAp is the previous point’ EMA value; SMA is used as the EMAp in the first calculation
- N is the count of points
- k = 2 / N+1 is the Weighting Multiplier
Called to request daily exponential moving average data.
Contains the daily exponential moving average data: date and value.
Date of the exponential moving average
The data used to calculate the average of the day
The exponential moving average value of the day
The required input to request the DailyEmaService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The exponential moving average window length (period : points number)
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily exponential moving average response.
The daily exponential moving averages: an array of DailyEmaData objects
Moving Average Convergence/Divergence Oscillator was developed by Gerald Appel and represents the difference between two moving averages of different lengths.
As its name implies, MACD is all about convergence and divergence of the two moving averages. MACD oscilaltes around the zero line as follows:
- positive values increase as the shorter moving average diverges further from the longer one
- negative values indicate that the shorter moving average is below the longer one
MACD is computed as follows: \(MACD = short EMA - long EMA\)
Called to request daily moving average convergence divergence data.
Contains the daily moving average convergence/divergence data: date and value.
Date of the moving average convergence/divergence
The data used to calculate the average convergence/divergence of the day
The moving average convergence/divergence value of the day
The short exponential moving average value of the day
The long exponential moving average value of the day
The required input to request the DailyMacdService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The long EMA window length (period : points number)
[Mandatory] The short EMA window length (period : points number)
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily moving average convergence divergence response.
The daily moving average convergence/divergence: an array of DailyMacdData objects
The Relative Strength Index, developed by J. Welles Wilder measures the speed and change of price movements.
RSI oscillates between zero and 100. Traditionally the RSI is considered overbought when above 70 and oversold when below 30.
RSI is computed as follows: \(RSI = 100 - \frac{100}{1 + RS}\) Where:
- RS = AvgU/AvgD is the relative strength
- AvgU average of last N close prices up moves
- AvgD average of last N close prices down moves
- N is the period of the RSI
Called to request daily relative strength index data.
Contains the daily relative strength index data: date and value.
Date of the relative strength index
The data used to calculate the relative strength index of the day
Relative strength index value of the day
The required input to request the DailyRsiService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The relative strength index window length (period: points number)
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily relative strength index response.
The daily relative strength index: an array of DailyRsiData objects
SMA is formed by computing the average price of a security over a specific number of points.
As its name implies, simple moving average is an average that moves. Old data is dropped and new data becomes available, causing the average to move along the time.
N-points SMA data point is computed by adding up the last N period’s trade prices and then dividing by N as follows: \(SMA = \frac{\Sigma Close_n}{N}\)
Where:
- Close n is the close price of the period n
- N is the count of time periods
Called to request daily simple moving average data.
Contains the daily simple moving average data: date and value.
Date of the simple moving average
The data used to calculate the average of the day
The simple moving average value of the day for the last n data points (length)
The required input to request the DailySmaService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The simple moving average window length (period : points number)
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily simple moving average response.
The daily simple moving averages: an array of DailySmaData objects
N-points volatility is computed as follows: \(Volatility_N = \sqrt \frac{\sum_{i=1}^N(P_a - P_i)^2}{N}\)
Where:
- \(P_a\) is the average price of the N prices
- \(P_i\) is price i
Called to request daily volatility data.
The required input to request the DailyVolatilityService
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends). By default the value is set to false : the split is applied in all cases
Represents a daily volatility response.
Volatility value
Up-to-date index components weights
Called to request index weights data.
Contains the weight data for one component: identifier and weight value.
The instrument identifier: a ticker and exchange
The weight value
The required input to request the ComponentsService
[Mandatory] The index name
Represents a components response.
The index components: an array of component objects
Intraday bars are widely used to illustrate price movements for an instrument over a look back period. Commonly used in financial analysis and trading strategies as a technical indicator.
Called to request intraday bars data.
Contains the intraday bar's data: date, open, high, low, close, volume, count, vwap and score.
Time stamp of the intraday bar : open time of the sampling interval
Open price of the sampling period
Highest price of the sampling period
Lowest price of the sampling period
Close price of the sampling period
Total traded volume of the sampling period
Tick count of the sampling period
Volume weighted average price of the sampling period
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the IntradayBarsService.
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
The intraday bars response contains an array of intraday bars.
The intraday bars: an array of IntradayBar objects
Intraday prices illustrates intraday price movements for an instrument over a look back period.
Called to request intraday prices data.
Contains the intraday prices data: date, price, volume and score.
Time stamp of the intraday price : open time of the sampling interval
Last price of the sampling period
Total traded volume of the sampling period
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the IntradayPricesService
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday prices response.
The intraday prices: an array of IntradayPrice objects
The Volume Weighted Average Price is similar to a moving average, except volume is included to weight the average price over a one trading day period.
It serves as a reference point for one trading day prices. Comparing current prices with the VWAP values enables to:
- mesure trading efficiency by comparing individual trades to VWAP
- highlight liquidity points as vwap reflects prices levels weighted by volume
- determine the market trend, etc.
Called to request intraday VWAP data.
Contains the intraday vwaps data: date, vwap and volume.
Time stamp of the intraday vwap : open time of the sampling interval
Vwap of the sampling period
Total traded volume of the sampling period
The data quality scoring : from 0 (bad) to 100 (good)
The required input to request the IntradayVwapsService
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday VWAPs response.
The intraday vwaps: an array of IntradayVwap objects
Bollinger bands were created by John Bollinger, they are envelopes and plotted around the moving average.
The width of the bands is based on the standard deviaton of the closing prices from a moving average as follows:
- Middle band = n-period moving average
- Upper band = Middle band + (k * n-period standard deviation)
- Lower band = Middle band - (k * n-period standard deviation)
Where n is the number of periods and k is factor to apply to the standard deviation value, k=2 as default value.
Called to request intraday Bollinger bands data.
Contains the intraday Bollinger bands data: date, lower, middle and upper.
Time stamp of Bollinger bands : open time of the sampling interval
The data used to calculate the Bollinger bands of the day
Bollinger lower band value of the day
Lower band = Middle band - (k * n-period standard deviation)
Bollinger upper band value of the day
Upper band = Middle band + (k * n-period standard deviation)
Bollinger middle band value of the day
Middle band = n-period moving average
The required input to request the IntradayBollingerService.
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The simple moving average window length (period: data points number)
[Mandatory] The standard deviation window length
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
The intraday bars response contains an array of Bollinger bands.
The intraday Bollinger bands: an array of IntradayBollingerData objects
Moving averages smooth the price movements by filtering out the “noise” caused by short-term price fluctuations.
They also form the building blocks for a wide range of technical indicators. Computing moving averages over a defined number of time periods is useful to:
- identify the trend direction
- determine support and resistance levels
CMA is the average of all the data points.
Called to request intraday cumulative moving average data.
Contains the intraday cumulative moving average data: date and value.
Time stamp of the cumulative moving average : open time of the sampling interval
The data used to calculate the average of the day
The cumulative moving average value of the day for all the data points
The required input to request the IntradayCmaService.
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday cumulative moving average response.
The intraday cumulative moving averages: an array of IntradayCmaData objects
EMA reduces the lag by applying greater weight to recent data points.
The weighting applied to the most recent price depends on the number of points in the moving average; The smaller the point count is, the more weight is applied to the most recent price.
N-points EMA data point is computed using the previous’ EMA value and the weighting multiplier as follows: \(EMA = (Close-EMAp)*k+EMAp\) Where:
- Close is the close price
- EMAp is the previous point’ EMA value; SMA is used as the EMAp in the first calculation
- N is the count of points
- k = 2 / N+1 is the Weighting Multiplier
Called to request intraday exponential moving average data.
Contains the intraday exponential moving average data: date and value.
Time stamp of the exponential moving average : open time of the sampling interval
The data used to calculate the average of the day
The exponential moving average value of the day
The required input to request the IntradayEmaService.
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The exponential moving average window length (period : points number)
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday exponential moving average response.
The intraday exponential moving averages: an array of IntradayEmaData objects
Moving Average Convergence/Divergence Oscillator was developed by Gerald Appel and represents the difference between two moving averages of different lengths.
As its name implies, MACD is all about convergence and divergence of the two moving averages. MACD oscilaltes around the zero line as follows:
- positive values increase as the shorter moving average diverges further from the longer one
- negative values indicate that the shorter moving average is below the longer one
MACD is computed as follows: \(MACD = short EMA - long EMA\)
Called to request intraday moving average convergence divergence data.
Contains the intraday moving average convergence/divergence data: date and value.
Time stamp of the moving average convergence/divergence : open time of the sampling interval
The data used to calculate the average convergence/divergence of the day
The moving average convergence/divergence value of the day
The short exponential moving average value of the day
The long exponential moving average value of the day
The required input to request the IntradayMacdService.
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The long EMA window length (period : points number)
[Mandatory] The short EMA window length (period : points number)
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday moving average convergence divergence response.
The intraday moving average convergence/divergence: an array of IntradayMacdData objects
The Relative Strength Index, developed by J. Welles Wilder measures the speed and change of price movements.
RSI oscillates between zero and 100. Traditionally the RSI is considered overbought when above 70 and oversold when below 30.
RSI is computed as follows: \(RSI = 100 - \frac{100}{1 + RS}\) Where:
- RS = AvgU/AvgD is the relative strength
- AvgU average of last N close prices up moves
- AvgD average of last N close prices down moves
- N is the period of the RSI
Called to request intraday relative strength index data.
Contains the intraday relative strength index data: date and value.
Time stamp of the relative strength index : open time of the sampling interval
The data used to calculate the relative strength index of the day
Relative strength index value of the day
The required input to request the IntradayRsiService.
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The relative strength index window length (period: points number)
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday relative strength index response.
The intraday relative strength index: an array of IntradayRsiData objects
SMA is formed by computing the average price of a security over a specific number of points.
As its name implies, simple moving average is an average that moves. Old data is dropped and new data becomes available, causing the average to move along the time.
N-points SMA data point is computed by adding up the last N period’s trade prices and then dividing by N as follows: \(SMA = \frac{\Sigma Close_n}{N}\)
Where:
- Close n is the close price of the period n
- N is the count of time periods
Called to request intraday simple moving average data.
Contains the intraday simple moving average data: date and value.
Time stamp of the simple moving average : open time of the sampling interval
The data used to calculate the average of the day
The simple moving average value of the day for the last n data points (length)
The required input to request the IntradaySmaService.
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Mandatory] The simple moving average window length (period : points number)
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday simple moving average response.
The intraday simple moving averages: an array of IntradaySmaData objects
N-points volatility is computed as follows: \(Volatility_N = \sqrt \frac{\sum_{i=1}^N(P_a - P_i)^2}{N}\)
Where:
- \(P_a\) is the average price of the N prices
- \(P_i\) is price i
Called to request intraday volatility data.
The required input to request the IntradayVolatilityService
[Mandatory] The instrument identifier: a ticker and exchange
[Mandatory] The sampling interval
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment (dividends and splits). By default the value is set to false
Represents a intraday volatility response.
Volatility value
Reference data encompasses a wide range of specification data about:
- financial instrument such as asset class, symbol, maturity, etc.
- counterparties such as issuer information.
- pricing such as open, high low and close prices.
- The challenge with reference data is that it tends to be sourced from multiple sources: internal, counterparties and providers.
- Reference data dedicated service is a result of various data sources and fields sourcing, validation, cross-checking and normalization.
Called to request reference data.
Contains the reference data for equities.
Identifiers: asset identifier
General information: asset class
General information: asset country code (ISO 3166)
General information: asset full name
General information: asset currency code (ISO 4217)
General information: asset primary exchange code (mic)
General information: asset tick size rule table
General information: asset mapping codes
General information: asset index if it belongs to an index
Trading hours: open time (continuous trading)
Trading hours: close time (continuous trading)
Trading hours: time zone
Specifications: lot size (minimum quantity to trade)
Specifications: point value
Specific values for the equity: isin code (International Securities Identifying Number)
Specific values for the equity: cusip code : Committee on Uniform Security Identification Procedures
Specific values for the equity: sedol code : Stock Exchange Daily Official List
Specific values for the equity: sectors definitions
Specific values for the equity: market capitalization
Contains the reference data for exchange traded fund (ETF).
Identifiers: asset identifier
General information: asset class
General information: asset country code (ISO 3166)
General information: asset full name
General information: asset currency code (ISO 4217)
General information: asset primary exchange code (mic)
General information: asset tick size rule table
General information: asset mapping codes
General information: asset index if it belongs to an index
Trading hours: open time (continuous trading)
Trading hours: close time (continuous trading)
Trading hours: time zone
Specifications: lot size (minimum quantity to trade)
Specifications: point value
Specific values for the equity: isin code (International Securities Identifying Number)
Specific values for the equity: cusip code : Committee on Uniform Security Identification Procedures
Specific values for the equity: sedol code : Stock Exchange Daily Official List
Specific values for the equity: sectors definitions
Specific values for the equity: market capitalization
Contains the reference data for futures.
Identifiers: asset identifier
General information: asset class
General information: asset country code (ISO 3166)
General information: asset full name
General information: asset currency code (ISO 4217)
General information: asset primary exchange code (mic)
General information: asset tick size rule table
General information: asset mapping codes
General information: asset index if it belongs to an index
Trading hours: open time (continuous trading)
Trading hours: close time (continuous trading)
Trading hours: time zone
Specifications: lot size (minimum quantity to trade)
Specifications: point value
Specific values for the future: underlying asset code
Specific values for the future: contract code
Specific values for the future: category
Specific values for the future: chain
Specific values for the future: maturity date
Specific values for the future: month code
Specific values for the future: year
Contains the reference data for indices.
Identifiers: asset identifier
General information: asset class
General information: asset country code (ISO 3166)
General information: asset full name
General information: asset currency code (ISO 4217)
General information: asset primary exchange code (mic)
General information: asset tick size rule table
General information: asset mapping codes
General information: asset index if it belongs to an index
Trading hours: open time (continuous trading)
Trading hours: close time (continuous trading)
Trading hours: time zone
Specifications: lot size (minimum quantity to trade)
Specifications: point value
Specific values for the index: the description of the index
The required input to request the StaticDataService.
[Optional] Asset type
[Optional] Asset name
[Optional] Asset exchange (mic code)
[Optional] Asset ticker (code as provided by the exchange)
[Optional] Future contract code
[Optional] Future category
[Optional] Equity sector
[Optional] Index if the asset belongs to an index components
[Optional] Mapping codes: isin, cusip, sedol, ric, figi, etc.
[Optional] Define the first element index to be retrieved
[Optional] Select the first elements retrieved, by default count is set to 100
Represents a reference data response grouped by asset type.
The reference data for futures: an array of FutureEntry objects
The reference data for equities: an array of EquityEntry objects
The reference data for etfs: an array of EtfEntry objects
The reference data for indices: an array of IndexEntry objects
Contains the asset type for the reference data request.
Number | Name | Description |
---|---|---|
0 | ASSET_TYPE_UNSPECIFIED | Not specified ? |
1 | ASSET_TYPE_ALL | Search on all asset types |
2 | ASSET_TYPE_EQUITY | Search only on equities |
3 | ASSET_TYPE_FUTURE | Search only on futures |
4 | ASSET_TYPE_ETF | Search only on Exchange Traded Fund |
5 | ASSET_TYPE_INDEX | Search only on Index |
The sector and industry classification decoder.
Available classifications :
- ICB : Industry Classification Benchmark is a comprehensive and rules based, transparent classification methodology based on research and market trends designed to support investment solutions. It was launched in 2005 and enhanced in 2019 with the integration of the Russell Global Sectors (RGS) classification scheme and additional structural enhancements.
- SIC : The Standard Industrial Classification is a system for classifying industries by a four-digit code. Established in the United States in 1937, it is used by government agencies to classify industry areas. The SIC system is also used by agencies in other countries, e.g., by the United Kingdom’s Companies House.
- TRBC : The Refinitiv Business Classification is an industry classification of global companies. It was developed by the Reuters Group under the name Reuters Business Sector Scheme (RBSS), was rebranded to Thomson Reuters Business Classification (TRBC) when the Thomson Corporation acquired the Reuters Group in 2008, forming Thomson Reuters, and was rebranded again, to The Refinitiv Business Classification (TRBC), in 2020. Since the creation of Refinitiv in October 2018, TRBC has been owned and operated by Refinitiv and is the basis for Refinitiv Indices.
- GICS : In 1999, MSCI and S&P Dow Jones Indices developed the Global Industry Classification Standard, seeking to offer an efficient investment tool to capture the breadth, depth and evolution of industry sectors.GICS is a four-tiered, hierarchical industry classification system. Companies are classified quantitatively and qualitatively.Each company is assigned a single GICS classification at the Sub-Industry level according to its principal business activity. MSCI and S&P Dow Jones Indices use revenues as a key factor in determining a firm�s principal business activity. Earnings and market perception, however, are also recognized as important and relevant information for classification purposes, and are taken into account during the annual review process.
Called to request static sector and industry classification data.
Contains the sector classification structure at a specified level.
The sector classification level’s name
The sector classification level’s index (order of the strcture)
The sector classification level’s code
The sector classification level’s definition
The sector classification level’s label
The required inputs to request the StaticSectorService.
[Mandatory] The classification provider or taxonomy
Available classifications : ICB, SIC, TRBC and GICS
[Mandatory] The classification code
[Mandatory] The classification level (strating from 0 : the top structure or group)
Represents a sector classifcation response.
The sector classification levels: an array of Level objects
The classification description
The classification levels count
The sustainability provides Environmental, Social, and Corporate Governance data.
Called to request sustainability data.
Contains the sustainabilitys's data.
The sustainability provider
The sustainability name or label
The sustainability identifier
The sustainability parent identifier
The sustainability value
The sustainability minimum value
The sustainability maximum value
The sustainability description
The required inputs to request the SustainabilityService.
[Mandatory] The instrument identifier: a ticker and exchange
Represents a sustainability response.
The sustainabilities: an array of sustainability objects
Normalized tick by tick Market Book by Price (MBP) also known as Market Book by Limit (MBL), is the price-based data of the book.
MBL restricts updates to a maximum of specified depth price levels and consolidates all the quantity (size) into a single update for each price level, which includes the total quantity (size).
Called to request tick by tick normalized book data.
The required inputs to request the TickBookService.
[Mandatory] The instrument identifiers: a list of tickers and exchanges
[Mandatory] The book update scheme (snapshots only, or, initial snapshot then incremental updates)
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment, by default the value is set to false
[Optional] The maximum number of depth, if not set use the default (10).
[Optional] The contributors: get the quotes foreach depth, by default the value is set to false
Contains the tick by tick normalized book : data or mapping.
The limit data
The mapping data
Normalized tick by tick Market By Order (MBO):
-The MBO describes an order-based (or quote-based) data feed that provides the ability to view individual queue position, the full order book (all the depths) and the details of each individual order or quote at each price level.
Called to request tick by tick normalized quotes data (MBO).
The required inputs to request the TickQuotesService.
[Mandatory] The instrument identifiers: a list of tickers and exchanges
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment, by default the value is set to false
Contains the tick by tick normalized quotes: key and data
The quotes data
The mapping data
Raw tick by tick data is the primary data delivred by a specific data provider (exchange, third party, partner, in-house …) and has not been processed or normalized yet.
Raw data can be useful to:
- Audit provider raw data reception and completion
- Compare provider’s data formats
- Compare raw provider’s format data to normalized (processsed) data
Called to request tick by tick raw data.
The required inputs to request the TickRawService.
[Mandatory] The instruments and streams identifiers: a list of tickers, exchanges and streams.
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
Represents the raw data response.
The raw data
The mapping data
Normalized tick by tick data extraction for a given watchlist and a specific look-back period. This can be useful to:
- Get specific historical dataset such as trades, top of book data…
- Compute analytics on the top of preselected tick by tick data dataset
- Feed best execution reports for a given watchlist over the time
Called to request tick by tick normalized trades and book historical data.
The required inputs to request the TickTradesAndBookService.
[Mandatory] The instrument and streams identifiers: a list of tickers and exchanges and streams
[Mandatory] The book update scheme (snapshots only, or, initial snapshot then incremental updates)
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment, by default the value is set to false
[Optional] The maximum number of depth, if not set use the default (10).
[Optional] The contributors: get the quotes foreach depth, by default the value is set to false
Contains the tick by tick normalized trades data: key, time stamp, price, size, condition.
The trade and book data
The mapping data
Normalized tick by tick trades extraction for a given watchlist and a specific look-back period. This can be useful to:
- Get specific historical dataset such as trades, top of book data…
- Compute analytics on the top of preselected tick by tick data dataset
- Feed best execution reports for a given watchlist over the time
Called to request tick by tick normalized trades historical data.
The required inputs to request the TickTradesService.
[Mandatory] The instrument identifiers: a list of tickers and exchanges
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment, by default the value is set to false
Contains the tick by tick normalized trades data: key, time stamp, price, size, condition.
The trade data
The mapping data
Normalized tick by tick data updates:
- Fields : open, close, trade, high …
- MBL : Market Book by Limit (contains the depth information)
- MBO : Market Book by Order (contains the quotes or order details)
Called to request tick by tick normalized historical data.
The required inputs to request the TickUpdatesService.
[Mandatory] The instrument and streams identifiers: a list of tickers and exchanges and streams
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The corporate action adjustment, by default the value is set to false
Contains the tick by tick normalized historical data.
The fields update
The MBL books update
The MBO books update
The mapping data
Tick bars are widely used to illustrate price movements for an instrument over a look back period. Commonly used in financial analysis and trading strategies as a technical indicator.
Called to request tick by tick bars data.
The required inputs to request the TickBarService.
[Mandatory] The instrument identifier: a ticker and exchange
[Optional] The time constraints used to define the look-back period. If empty, then all the available data is retrieved.
[Optional] The price used to calculate the bar
[Mandatory] The duration of the bar
[Optional] The period of the bars, by default the period is set to one day
[Optional] The offset time when the bars is reset, by default the offset is set to 00:00:00
[Optional] The corporate action adjustment, by default the value is set to false
[Optional] Accept trading / quote conditions, by default the accept is set to null : accept all
[Optional] Rejected trading / quote conditions, by default the reject is set to null : do not reject
Contains the tick bar's data: time, open, high, low, close, volume, count and vwap.
The time stamp
Open price of the current bar
Highest price of the current bar
Lowest price of the current bar
Close price of the current bar
Total traded volume of the current bar
Tick count of the current bar
Volume weighted average price of the current bar
The price types used to compute the bars
Number | Name | Description |
---|---|---|
0 | BAR_PRICE_UNSPECIFIED | The unspecfied field |
1 | BAR_PRICE_TRADE | The last trade price |
2 | BAR_PRICE_BID | The best bid price |
3 | BAR_PRICE_ASK | The best ask price |
Bollinger bands were created by John Bollinger, they are envelopes and plotted around the moving average.
The width of the bands is based on the standard deviaton of the closing prices from a moving average as follows:
- Middle band = n-period moving average
- Upper band = Middle band + (k * n-period standard deviation)
- Lower band = Middle band - (k * n-period standard deviation)
Where n is the number of periods and k is factor to apply to the standard deviation value, k=2 as default value.
Called to request tick by tick Bollinger bands data.