FACTSET Direct Streaming Of Transaction Messages API Software User Guide

June 16, 2024
FactSet

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.

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
’ 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:

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.

References

Read User Manual Online (PDF format)

Read User Manual Online (PDF format)  >>

Download This Manual (PDF format)

Download this manual  >>

Related Manuals