FACTSET Direct Streaming Of Transaction Messages API Software User Guide
- June 16, 2024
- FactSet
Table of Contents
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 |
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) >>