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
- Authorization
Standard HTTP header. The value needs to use the ‘Basic’ format. - 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 <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:
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 |