FACTSET-logo

FACTSET Direct Streaming Of Transaction Messages API Software

FACTSET-Direct-Streaming-Of-Transaction-Messages-API-Software

Product Information

Specifications

  • Product Name: Direct Streaming of Transaction Messages API
  • Version: 1.0
  • Developer’s Manual and Reference Date: August 2023

Motivation
The motivation behind the Direct Streaming of Transaction Messages API is to provide a way to connect records from any OMS provider and integrate trade data with FactSet’s real-time Portfolio Management Platform (PMP) for portfolio oversight, trade simulation, performance attribution, and returns analysis.

API Program

Overview
The API Program initially focuses on the portfolio analytics engine and has expanded to include other analytics engines, products, and APIs from different business units.

The program provides the following:

  • Direct Streaming of Transaction Messages API

All APIs are hosted under https://api.factset.com. Authentication is handled using API Keys, and authorization is handled using FactSet’s in-house subscriptions product. For more information on using API Keys, please visit https://developer.factset.com/authentication.

Please note that HTTP request and response header names should be considered case insensitive according to HTTP Standard. It is recommended not to rely on case-sensitive matching of headers in your code.

Product Usage Instructions

DSoTM API

Submitting Records

  • To submit transaction records, use the following endpoint:
  • POST /analytics/dsotm/v1/transactions

Request Headers

  1. Authorization
    Standard HTTP header. The value needs to use the ‘Basic’ format.
  2. Content-Type
    Standard HTTP header. The value needs to be specified as application/JSON to indicate that the body is in JSON format.

Troubleshooting
For troubleshooting information, please refer to section 4 of the Developer’s Manual and Reference.

Version Upgrade
Information about version upgrades can be found in section 5 of the Developer’s Manual and Reference.

FAQ

  • Q: What is the purpose of the Direct Streaming of Transaction Messages API?
    A: The purpose of the Direct Streaming of Transaction Messages API is to connect trade data from any OMS provider with FactSet’s Portfolio Management Platform for portfolio oversight, trade simulation, performance attribution, and returns analysis.
  • Q: Where can I find more information about using API Keys?
    A: More information about using API Keys can be found at https://developer.factset.com/authentication.

Motivation

In 1997, FactSet launched Portfolio Analysis 1.0, which set the foundation for Analytics. Soon after, Portfolio Analysis 2.0 integrated risk analytics from third-party vendors, and then expanded to include Fixed Income in 2004. FactSet now offers a robust suite of multi-asset portfolio analytics products that lead the market in flexibility, analytics, and breadth. Today, clients rely on FactSet for interactive analytics through various products, such as Portfolio Analysis (PA), SPAR, Alpha Testing, Optimizers, and Portfolio Dashboard, as well as the distribution of analytics through Portfolio Batcher, Publisher Flat Files, and Publisher documents.

API Program

Overview

Clients have been moving towards building a custom solution, driven by the need to increase productivity by consolidating information into a single user experience. By exposing analytics, performance, and risk through APIs, it provides you with a sophisticated channel to interact with FactSet’s leading multi-asset analytics. As the market continues to demand more transparency and data, FactSet will provide flexible options to meet those demands. APIs complement the current analytics suite offerings and facilitate partnerships by allowing you to build private experiences, integrate with third-party BI tools like Tableau, and third-party stat packages like RStudio, and increase control over internal consumption of analytics from FactSet.

FACTSET-Direct-Streaming-Of-Transaction-Messages-API-Software-fig- (1)

The first stage of exposing Analytics APIs will focus on the portfolio analytics engine. Since its inception, the program has expanded to include other analytics engines, products, and APIs from other business units.

The program provides the following:

  • Developer toolkit to build proof of concept
  • Uniform feel across all of FactSet’s enterprise-scale APIs
  • Adherence to industry standards
  • Versioned APIs
  • Extensive documentation and tutorials on the developer portal

Direct Streaming of Transaction Messages API

  • Connect records from any OMS provider to integrate your trade data with FactSet’s real-time Portfolio Management Platform (PMP) for portfolio oversight and trade simulation, or to be used in the powerful Portfolio Analytics Engine for Performance Attribution and Returns analysis.
  • All APIs are hosted under https://api.factset.com. Authentication is handled using API Keys and authorization is handled using FactSet’s in-house subscriptions product. You can find more information about using API Keys at https://developer.factset.com/authentication.

HTTP request and response header names should be considered case insensitive as per HTTP Standard. Please do not rely on case-sensitive matching of headers in your code.

Submitting Records

Submit Transactions
POST /analytics/dsotm/v1/transactions

This endpoint accepts transaction records and simultaneously writes them to the specified portfolio’s OMS_OFDB and makes them available in the PMP application.

Request Headers

Header name Description
Authorization Standard HTTP header. Value needs to use the ‘Basic <base64 encoded value>’ format.
Content-Type Standard HTTP header. Value needs to specify application/JSON (i.e., the caller needs to specify that the body is in JSON format).

Request Body
The request body accepts a collection of calculation parameters. The parameters are outlined below:

Parameter name Data type Required Description Format
executions Array No List of execution records Detailed record fields are available here
placements Array No List of placement records Detailed record fields are available here
orders Array No List of order records Detailed record fields are available here

Response Headers 

Header name Description
X-DataDirect-Request-Key FactSet’s request key header.
X-FactSet-Api-Request-Key Key to uniquely identify an Analytics API request. Only available after successful authentication.
X-FactSet-Api-RateLimit-Limit Number of allowed requests for the time window.
X-FactSet-Api-RateLimit-Remaining Number of requests left for the time window.
X-FactSet-Api-RateLimit-Reset Number of seconds remaining till rate limit resets.

Returns

HTTP status code Description
202 Expected response.
400 Invalid POST body.
401 Missing or invalid authentication.
403 The user is forbidden with current credentials.
415 Missing/Invalid Content-Type header. The header needs to be set to application/json.
429 The rate limit was reached. Retry the requests after waiting the time specified in the retry-after header.
500 Server error. Log the X-DataDirect-Request-Key header to assist in troubleshooting.
503 Request timed out. Retry the request in some time.

Remarks
Maximum 50 POST requests allowed in a 5-second window for each API. The same can be verified using the various Rate-Limit headers available in the API response.

  • X-FactSet-Api-RateLimit-Limit – Number of allowed requests for the time window.
  • X-FactSet-Api-RateLimit-Remaining – Number of requests left for the time window.
  • X-FactSet-Api-RateLimit-Reset – Number of seconds remaining till rate limit resets.

Examples

Request:
POST https://api.factset.com/analytics/dsotm/v1/transactions.

Headers:

  • content-type: application/json
  • Authorization: Basic RkRTX0RFTU9fVVMt******************************
  • Accept-Encoding: gzip
  • content-length: 201

Body:

FACTSET-Direct-Streaming-Of-Transaction-Messages-API-Software-fig- (2)FACTSET-Direct-Streaming-Of-Transaction-Messages-API-Software-fig- (3)

Response:
HTTP 202 Accepted

Headers:

  • x-data direct-request-key: zpdo6aebv58fiaoi
  • x-factset-api-request-key: 6p2d41m4sw1yfh0h
Record Fields

Execution Creation

Element Type Description Mandatory
portfolio String The portfolio name. Ex: CLIENT:/DEMO.OFDB YES
transaction-id String Unique ID for the transaction YES
symbol String Symbol corresponding to the traded instrument. Ex: AAPL YES
description String Usually a name, Ex: FACTSET RESEARCH SYSTEMS, but could be more descriptive for derivatives. YES
trade type String BL (Buy Long), BC (Buy to cover), SL (Sell Long) and SS (Sell Short) YES
status String ACCT or CNCL, short for ACCOUNTED and CANCELED YES
trade date String Trade date which is in the format YYYYMMDD YES
transaction leaves Float Shares that have been ordered and not executed NO
amount Float Quantity of the instrument traded YES
net Float Cash value of the transaction, net of brokerage costs. YES
gross Float Cash value of the transaction, including brokerage costs. YES
settlement value Float The cash value of the transaction is a value that has been multiplied by an applicable FX rate to convert the transaction booked in local currency into the reporting currency. YES
settlement date String Settlement date in YYYYMMDD format YES
currency String The currency code of cash valued fields, Net Amount and Gross Amount. YES
foreign exchange rate Float FX rate that can be picked up by PA, multiplied with the cash valued fields, Net, Gross, to allow PA to show transactions in reporting currency. NO
settlement currency iso String Currency code for Settlement Value YES
ordered String The unique identifier of the Order is provided by PM Hub. Ex: O_FDS_010623_1686393260254 NO
parentId String Unique identifier of the Parent Order to be provided by OMS. NO

Order Creation

Element Type Description Mandatory
portfolio String The portfolio name. Ex: CLIENT:/DEMO.OFDB YES
transaction-id String Unique ID for the transaction YES
symbol String Symbol corresponding to the traded instrument. Ex: AAPL YES
description String Usually a name, Ex: FACTSET RESEARCH SYSTEMS, but could be more descriptive for derivatives. YES
trade type String BL (Buy Long), BC (Buy to cover), SL (Sell Long) and SS (Sell Short) YES
status String ACCT or CNCL, short for ACCOUNTED and CANCELED YES
trade date String Trade date which is in the format YYYYMMDD YES
transaction-leaves Float Shares that have been ordered but not executed NO
amount Float Quantity of the instrument traded YES
currency iso String The currency code of cash valued fields, Net Amount and Gross Amount. YES
foreign exchange rate Float FX rate that can be picked up by PA, multiplied with the cash valued fields, Net, Gross, to allow PA to show transactions in reporting currency. NO
order Id String The unique identifier of the Order is provided by PM Hub. Ex: O_FDS_010623_1686393260254 NO

Placement Creation

Element Type Description Mandatory
portfolio String The portfolio name. Ex: CLIENT:/DEMO.OFDB YES
transaction-id String Unique ID for the transaction YES
symbol String Symbol corresponding to the traded instrument. Ex: AAPL YES
description String Usually a name, Ex: FACTSET RESEARCH SYSTEMS, but could be more descriptive for derivatives. YES
trade type String BL (Buy Long), BC (Buy to cover), SL (Sell Long) and SS (Sell Short) YES
status String ACCT or CNCL, short for ACCOUNTED and CANCELED YES
trade date String Trade date which is in the format YYYYMMDD YES
transaction-leaves Float Shares that have been ordered but not executed NO
amount Float Quantity of the instrument traded YES
currency iso String The currency code of cash valued fields, Net Amount and Gross Amount. YES
foreign exchange rate Float FX rate that can be picked up by PA, multiplied with the cash valued fields, Net, Gross, to allow PA to show transactions in reporting currency. NO
settlement currency iso String Currency code for Settlement Value YES
order Id String The unique identifier of the Order is provided by PM Hub. Ex: O_FDS_010623_1686393260254 NO
parent Id String Unique identifier of the Parent Order to be provided by OMS. NO

Troubleshooting

The following steps are recommended to troubleshoot errors from any of the different APIs:

  • Record the X-DataDirect-Request-Key response header so that FactSet’s API engineering team can analyze your specific request/response.
  • Record the response body when the response is an error response. All HTTP status codes equal to and greater than 400 are considered error responses.
  • Reach out to your account team with the above information for assistance.

Version Upgrade

  • FactSet will support old API versions for a limited time. The actual support time will depend on the API and the release stage (i.e., beta or production). All breaking changes, functionality additions, and bug fixes across earlier versions will be documented in the changelog.
  • FactSet’s API engineering team will work with the clients to ensure a smooth transition to newer versions.

Copyright © 2023 FactSet Research Systems Inc. All rights reserved.

FactSet Research Systems Inc. | www.factset.com.

Documents / Resources

FACTSET Direct Streaming Of Transaction Messages API Software [pdf] User Guide
Version 1.0, Direct Streaming Of Transaction Messages API Software, Streaming Of Transaction Messages API Software, Transaction Messages API Software, Messages API Software, API Software, Software

References

Leave a comment

Your email address will not be published. Required fields are marked *