Geneos

Feed Adapters

Bloomberg adapter

The Bloomberg feed adapter uses the Bloomberg API (BLPAPI) to subscribe to market data via B-PIPE, delivered by a managed Bloomberg Appliance.

This adapter is subject to the following deployment considerations.

  1. The Netprobe must be able to create a TCP connection to the Bloomberg Appliance to obtain data.
  2. The Market Data Monitor plug-in must be authorised to subscribe to the monitored data (as determined by the specific user monitoring requirements).

Please contact your firm's Bloomberg EMRS administrator to create the required permission entries. The examples in this document assume that MDM plug-in is identified as the application "ITRS:market-data-monitor". This application name is configured by a feed parameter, and so can be changed (for example) to match a company naming policy as desired.

Entitlements for the application must also be specified by the EMRS administrator. The MDM application must be granted entitlements for the EIDs corresponding to the instruments which will be monitored. Different EIDs may have restrictions on how they can be used; if in doubt discuss with your administrator or account manager.

Feed parameters

The Bloomberg feed adapter is configured with connection details of the Bloomberg Applicance (the hostname/IP and port) and the application name used for permissioning. These are configured using the following parameters:

bloomberg.serverHost=<hostname/IP of the B-PIPE Appliance>          
[default=127.0.0.1] bloomberg.serverPort=<listen port of the server>
[default=8194] bloomberg.applicationName=<name matching an application permissioned in EMRS>
[example=ITRS:market-data-monitor]

Instrument codes

Bloomberg instrument codes within Geneos comprise a service and instrument name in the following format:

//service name/security

The service name for real-time market data is blp/mktdata.

A security must conform to the following syntax:

[/Topic Prefix]/SYMBOLOGY[@Pricing Source] [Exchange]

Where the topic prefix is one of the following (and may optionally be followed by an instrument identifier):

ticker cusip wpk isin buid sedol1 sedol2 sicovam common bsid svm cins cats bbgid

The default format for a security is the Bloomberg ticker format, for example: "IBM US Equity". This format consists of:

SYMBOLOGY [Exchange] <Yellow Key>
  • SYMBOLOGY is required and is the ticker name
  • [Exchange] is optional and is a two character mnemonic for the exchange where the security is traded. If you do not specify [Exchange] then the default value for the user or for the Server API process will be used.
  • <Yellow Key> is the text equivalent of one of the Bloomberg yellow function keys.
Govt Corp Mtge M-Mkt Muni Pfd Equity Comdy Index Curncy Client

The following table provides some example instrument codes.

Instrument Code Description
//blp/mktdata/GBPUSD Curncy British Pound / United States Dollar Cross
//blp/mktdata/GBPJPY Curncy British Pound / Japanese Yen Cross
//blp/mktdata/VOD LN Equity Vodafone Group PLC (London)
//blp/mktdata/BP/ LN Equity BP PLC (London)
//blp/mktdata/BP US Equity BP PLC (U.S.)
   

Field codes

Bloomberg field codes are identified by a descriptive string, some examples of which are given below.

Code Field Description
LAST_PRICE Latest trade price
VOLUME Volume of last trade
ASK Ask price
ASK_SIZE Ask volume
BID Bid price
BID_SIZE Bid volume
   

Further information on available fields can be found by entering FLDS<GO> on a Bloomberg terminal.

Example adapter

The example feed adapter is a compiled binary of the example code for the C++ feed adapter API. This feed simply logs any parameters passed to it and generates steadily increasing values for each field in any instrument subscriptions made. For more detail on the example, please see the Feed Adapter API documentation.

Feed parameters

The example feed has a single optional parameter, which controls how often tick data is published for subscribed instruments (in milliseconds). By default the feed will publish a new tick every 1000 milliseconds (i.e. each second). Any other configured parameters will be logged but otherwise ignored.

# Optional example.publishingPeriod=<publish period in millseconds>

Instrument codes

The example feed will accept any subscription made of it, so any instrument code is valid.

Field codes

The example feed has two special field names:

DateTime

Publishes the current date and time as a string. e.g. FriOct1814:55:462013.

Partial

Publishes an initial string Updating (_) Item then performs partial updates to change the parenthesised content. Each new tick will substitute an upper-case letter A-Z into the string in place of the underscore _ character.

Any configured fields which are not one of these special names will be populated with numeric data, generated in an increasing sequence.

Exegy adapter

The Exegy feed adapter uses the Exegy API (XCAPI) to subscribe to market data via an Exegy Appliance.

This adapter is subject to the following deployment considerations.

  1. The Netprobe must be able to create a TCP connection to the Exegy Appliance to obtain data.
  2. The Market Data Monitor plug-in must be authorized to subscribe to the monitored data (as determined by the specific user monitoring requirements).

Please contact your firm's Exegy administrator to create the required permission entries. Entitlements for the user account must be sufficient for the instruments which will be monitored. Different userids may have restrictions on how they can be used; if in doubt discuss with your administrator or account manager.

Compatibility

The current version of the adapter was compiled with XCAPI 4.1.12. Install that version of the XCAPI rpm on the host running the adapter.

On Linux, specify the XCAPI library libxcapi64.so in the LD_PRELOAD path.

export LD_PRELOAD=/usr/local/exegy/lib/libxcapi64.so

Feed parameters

The Exegy feed adapter is configured with connection details of the Exegy Applicance (the hostname or IP), an optional port number and the username and password. These are configured using the following parameters:

exegy.serverHost=<hostname/IP of the Appliance(:optional port number)> 
[hostname(:port) exegy.username=<name of the permissioned user>
[example=test exegy.password=<password for the user>

Instrument codes

Exegy instrument codes within Geneos comprise a service and instrument name in the following format:

instrumentclass:countrycode:exchangeid:symbol
  • instrumentclass — Code for the instrument that the Exegy adapter subscribes to. Possible values are:
    • CMTY for commodities.
    • EQTY for equities.
  • countrycode — ISO 3166 two-letter country code.
  • exchangeid — One- or two-character Exegy exchange identifier.
  • symbol — String of up to 250 characters, uniquely identifying a financial instrument on the exchange.

For example, an IBM common stock on the New York Stock Exchange would have the following instrument code:

EQTY:US:N:IBM

The instrument symbol (the last portion of the key) conforms to the Exegy symbology conventions. In general, Exegy instrument symbols include an exchange-provided base or root symbol to identify the underlying instrument (e.g., "IBM"). If the instrument is a common stock, then the base symbol generally comprises the entire symbol.* "IBM" is the symbol for IBM common stock, and a user can request data for that instrument on NYSE using the key "US:N:IBM".

For securities other than common stocks, Exegy follows a variety of conventions to express identifying characteristics such as subordinate class (for equities); expiration month, strike price, and whether a put or call (for equity options); contract delivery year and month (for CME futures contracts); expiration year and month, put-or-call, and strike price (for EUREX commodity options).

Please see the Exegy Symbology Guide (part of the XCAPI documentation) for more information.

Here are some example instrument codes:

Instrument Code Description
EQTY:US:N:IBM Subscribes to IBM quotes from the US NYSE.
EQTY:US:Q:IBM Subscribes to IBM quotes from US NASDAQ UTDF / UQDF feed.
EQTY:US:TX:IBM Subscribes to top of book of US NASDAQ Totalview ITCH feed.
EQTY:US::IBM Subscribes to IBM quotes from the US Securities Information Processor (SIP) feeds.
CMTY:US:CY:NQU7 Subscribes to NQU7 quotes from the US CY CME Level 2.

Note: There are cases when Exegy omits the exchangeid if its value is "\\". In these cases, do not specify "\\" in the instrument code. For example, instead of specifying "US:\\:IBM" as instrument code, use "US::IBM" instead.

Field codes

In addition to instrument codes, you can specify the field codes to indicate the particular information you want out of the instrument you are subscribing to.

For equities

The following table lists codes supported for the equity instrument class:

Code Field Description
AlternateId1

First alternate ID (alias) for the instrument being subscribed to.

If no first alternate ID is set for the instrument, then this field is empty.

AlternateId2

Second alternate ID (alias) for the instrument being subscribed to.

If no second alternate ID is set for the instrument, then this field is empty.

Note: For European instruments, this field is automatically populated with the street symbol associated with the native International Securities Identification Number (ISIN).

Ask Ask price.
AskCustomerSize The number of shares that represent customer selling interest.
AskExch Exchange code for the current ask value.
AskExtime

Ask time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

AskMarketMakerSize Number of shares that represent market maker selling interest.
AskProfessionalSize Number of shares that represent professional selling interest.
AskSize Ask size, in number of shares.
BidCustomerSize Number of shares that represent customer buying interest.
Bid Bid price.
BidExch Exchange code for the current bid value.
BidExtime

Bid time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

BidMarketMakerSize Number of shares that represent market maker buying interest.
BidProfessionalSize Number of shares that represent professional buying interest.
BidSize

Bid size, in number of shares.

CloseExch Exchange code for the current close value.
CloseExtime

Closing time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

ClosePrice Price at closing time.
CloseSize Closing size. This is the number of shares at the official closing price.
Currency Currency used for all the price-related fields in the instrument class.
CountryId Country that the instrument falls under, following the ISO 3166 two-letter country code.
ExchCode

Exchange that the instrument falls under, following the Exegy exchange identifier.

Note: Refer to Exegy documentation for a comprehensive list of exchange codes.

ExchHiTime

Exchange timestamp indicating when the event left the exchange. The timestamp is recorded in Greenwich Mean Time (GMT).

Format: dd-MMM-yyyy HH:mm:ss.SSS

ExchTimeOffset

Offset of local exchange time from the Greenwich Mean Time (GMT).

This is the time elapsed since midnight, in the local time of the exchange.

Unit: minutes (min.)

HighExch Exchange code for the current high value.
HighExtime

High time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

HighPrice Price of the current high value.
InstStatus

Normalised trading status or sub-status for the instrument.

See Status values for more information.

LastExch Exchange code for the current last value.
LastExtime

The last time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

LastPrice Last price.
LastSize

Last size, in number of shares.

LimitPriceExtime

Time for the most recent limit-price update.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

LineId

Data source line identifier. The value typically consists of a string identifying the exchange and its specific source line.

Example value: XLINE_CQS_6E

Note: Refer to Exegy documentation for a comprehensive list of line IDs.

LotSize Number of shares in a standard lot for the instrument.
LowerLimitPrice Current lower limit price for the instrument.
LowExch Exchange code for the current low value.
LowExtime

The low time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

LowPrice Price of the current low value.
MarketStatus

Normalised trading status or sub-status for the market or instrument group.

See Status values for more information.

OpenExch Exchange code for the current opening price.
OpenExtime

The open time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

OpenInterest

Open interest. This is the total volume of unsettled contracts on an underlying instrument, as reported by the exchange.

OpenPrice Price at opening.
PrevClose Previous day's closing price.
PriceType

Price type used for price-related fields for the instrument class.

PrimeExch The prime exchange (that is, the listing exchange) for the instrument. (U.S. equities only).
Quals

Current qualifiers in effect, if any.

Note: Refer to Exegy documentation for a comprehensive list of qualifier values.

RecHiTime

Timestamp of the receive time. The timestamp is recorded in Greenwich Mean Time (GMT).

Format: dd-MMM-yyyy HH:mm:ss.SSS

RefClosePrice Reference closing price.
Sequence

Sequence number of the most recent trade event.

Example value: 9221257

ShortRest If true, then the short sale restricted status is in effect for the instrument.
SymbolType

Type of instrument this subscription pertains to.

See Symbol type values for more information.

TotalChange Total change.
TradedValue Traded value (accumulated value of last price times last size for the trading day).
TradeQuals

Current trade qualifiers in effect, if any.

Note: Refer to Exegy documentation for a comprehensive list of qualifier values.

TradeSequence

Sequence number of the most recent trade event.

Example value: 9221258

TradeTickFlags

Set of flags indicating whether the most recent tick is up, down, or unchanged from the previous tick; and whether the price trend is up or down.

The price trend here refers to the last time the price changed, and whether it changed up or down.

See Tick flag values for more information.

UpperLimitPrice Current upper limit price for the instrument
Volume Volume, in number of shares.
VwapVolume Volume used for Volume Weighted Average Price (VWAP) calculations.

For commodities

The following table lists codes supported for the commodity instrument class:

Code Field Description
AlternateId1

First alternate ID (alias) for the instrument being subscribed to.

If no first alternate ID is set for the instrument, then this field is empty.

AlternateId2

Second alternate ID (alias) for the instrument being subscribed to.

If no second alternate ID is set for the instrument, then this field is empty.

Note: For European instruments, this field is automatically populated with the street symbol associated with the native International Securities Identification Number (ISIN).

Ask Ask price.
AskExtime

Ask time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: Nanoseconds

Format: HH:mm:ss.SSS

AskSize Ask size or the number of shares.
Bid Bid price.
BidExtime

Bid time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

BidSize

Bid size, in number of shares.

CloseExtime

Closing time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: hh:mm:ss.sss

ClosePriceHigh Closing range high price.
ClosePriceLow Closing range low price.
CountryId Country that the instrument falls under, following the ISO 3166 two-letter country code.
Currency Currency used for all the price-related fields in the instrument class.
ExchangeCode

Exchange that the instrument falls under, following the Exegy exchange identifier.

Note: Refer to Exegy documentation for a comprehensive list of exchange codes.

ExchHiTime

Exchange timestamp indicating when the event left the exchange. The timestamp is recorded in Greenwich Mean Time (GMT).

Format: dd-MMM-yyyy HH:mm:ss.SSS

ExchTimeOffset

Offset of local exchange time from the Greenwich Mean Time (GMT).

This is the time elapsed since midnight, in the local time of the exchange.

Unit: minutes (min.)

Expiration

Contract expiration date.

Format: dd-MMM-yyyy

HighBate

Bid-ask-trade code. This field indicates whether the high price was set by a bid or a trade.

See Bid-ask-trade values for more information.

HighExtime

High time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

HighPrice Price of the current high value.
InstStatus

Normalised trading status or sub-status for the instrument.

See Status values for more information.

LastBate

Bid-ask-trade code. This field indicates whether the last price was set by a bid, ask, or trade.

See Bid-ask-trade values for more information.

LastExtime

The last time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

LastPrice Last price.
LastSize

Last size, in number of shares.

LineId

Data source line identifier. The value typically consists of a string identifying the exchange and its specific source line.

Example value: XLINE_CQS_6E

Note: Refer to Exegy documentation for a comprehensive list of line IDs.

LowBate

Bid-ask-trade code. This field indicates whether the low price was set by a bid or a trade.

See Bid-ask-trade values for more information.

LowExtime

The low time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: hh:mm:ss.sss

LowPrice Price of the current low value.
MarketStatus

Normalised trading status or sub-status for the market or instrument group.

See Status values for more information.

OpenExtime

The open time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: hh:mm:ss.sss

OpenInterest

Open interest. This is the total volume of unsettled contracts on an underlying instrument, as reported by the exchange.

OpenPriceHigh

Opening range high price.

If no opening range is sent by the exchange, then the first trade of the day sets the value of this field.

OpenPriceLow

Opening range low price.

If no opening range is sent by the exchange, then this field is not populated.

PdSetlExtime

Previous day's settlement time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

PdSetlPrice Previous day's settlement price.
PdVolume Previous day's volume.
QuoteQuals

Current quote qualifiers in effect, if any.

Note: Refer to Exegy documentation for a comprehensive list of qualifier values.

QuoteSequence

Sequence number of the most recent quote event.

Example value: 9221258

RecHiTime

Timestamp of receive time. The timestamp is recorded in Greenwich Mean Time (GMT).

Format: dd-MMM-yyyy HH:mm:ss.SSS

SetlBate

Bid-ask-trade code. This field indicates whether the settlement price was set by a bid, ask, or trade.

See Bid-ask-trade values for more information.

SetlExtime

Settlement time, as provided by the exchange.

This is the time elapsed since midnight, in the local time of the exchange.

Unit: nanoseconds (ns)

Format: HH:mm:ss.SSS

SetlPrice Settlement price. This is the official closing price.
ShortRest If true, then the short sale restricted status is in effect for the instrument.
SymbolType

Type of instrument this subscription pertains to.

See Symbol type values for more information.

TotalChange Total change.
TradeQuals

Current trade qualifiers in effect, if any.

Note: Refer to Exegy documentation for a comprehensive list of qualifier values.

TradeSequence

Sequence number of the most recent trade event.

Example value: 9221258

TradeTickFlags

Set of flags indicating whether the most recent tick is up, down, or unchanged from the previous tick; and whether the price trend is up or down.

The price trend here refers to the last time the price changed, and whether it changed up or down.

See Tick flag values for more information.

Volume Volume, in number of shares.

Status values

The following table lists the possible values for the InstStatus and MarketStatus field codes:

Status Sub-status Description
XTRST_INVALID Not applicable Status unknown.
XTRST_OPEN XTRSST_OPEN_REGULAR Open for trading, with no special conditions in effect.
  XTRSST_OPEN_AUCTION Open for trading; auction in effect.
  XTRSST_OPEN_FAST Open for trading; fast market in effect.
  XTRSST_OPEN_SLOW Open for trading; slow market in effect.
XTRST_CLOSED XTRSST_CLOSED_REGULAR Closed for trading, with no special conditions in effect.
  XTRSST_CLOSED_PRE_MARKET Closed for trading before regular market hours.
  XTRSST_CLOSED_POST_MARKET Closed for trading after regular market hours.
  XTRSST_CLOSED_AUCTION Closed for trading; auction in effect.
  XTRSST_CLOSED_IMBALANCE Closed for trading due to order imbalance.
  XTRSST_CLOSED_ROTATION Closed for trading due to rotation.
XTRST_HALTED XTRSST_HALTED_REGULAR Trading halted, with no special conditions in effect.
  XTRSST_HALTED_QUOTING_ALLOWED Trading halted, with no special conditions in effect; nonetheless, quoting is allowed.
  XTRSST_HALTED_REGULATORY Regulatory halt in effect.
  XTRSST_HALTED_QUOTING_ALLOWED_REGULATORY Regulatory halt in effect, but quoting is allowed.
XTRST_ACTIVE XTRSST_ACTIVE_REGULAR Trading active, with no special conditions in effect.
  XTRSST_ACTIVE_CLOSING_ORDERS_ONLY Trading active for closing orders only.
XTRST_INACTIVE XTRSST_INACTIVE_REGULAR Trading inactive, with no special conditions in effect.
  XTRSST_INACTIVE_SUSPENDED Trading inactive due to suspension.
  XTRSST_INACTIVE_DELISTED Trading inactive due to an instrument being delisted.
  XTRSST_INACTIVE_EXPIRED Trading inactive due to an expired order.
XTRST_AUCTION XTRSST_AUCTION_REGULAR Auction market, with no special conditions in effect.
  XTRSST_AUCTION_OPENING Opening auction.
  XTRSST_AUCTION_CALL_OPENING Opening call.
  XTRSST_AUCTION_CLOSING Closing auction.
  XTRSST_AUCTION_CALL_CLOSING Closing call.
  XTRSST_AUCTION_INTRADAY Intra-day or periodic auction.
  XTRSST_AUCTION_VOLATILITY Volatility auction.
  XTRSST_AUCTION_CALL_INTRADAY Intra-day or periodic auction call.
  XTRSST_AUCTION_CALL_VOLATILITY Volatility auction call.

Symbol type values

The following table lists the possible values for the SymbolType field codes:

Symbol type Description
XSYMTYP_INVALID Unvalid or unknown instrument.
XSYMTYP_EQUITY Level 1 equity.
XSYMTYP_EQUITY_OPTION Level 1 equity option.
XSYMTYP_NAV Net asset value.
XSYMTYP_FUND Fund.
XSYMTYP_WARRANT Warrant.
XSYMTYP_INDEX Equity index.
XSYMTYP_FOREIGN_EXCHANGE Level 1 foreign exchange.
XSYMTYP_BOND Bond.
XSYMTYP_FIXED_INCOME Fixed income.
XSYMTYP_FUTURE Future.
XSYMTYP_FUTURE_OPTION Future option.
XSYMTYP_FUTURE_SPREAD Future spread.
XSYMTYP_FUTURE_OPTION_SPREAD Future option spread.
XSYMTYP_EQUITY_L2 Level 2 equity.
XSYMTYP_EQUITY_OPTION_L2 Level 2 equity option.
XSYMTYP_FUTURE_L2 Level 2 future.
XSYMTYP_FUTURE_OPTION_L2 Level 2 future option.
XSYMTYP_FUTURE_SPREAD_L2 Level 2 future spread.
XSYMTYP_FUTURE_OPTION_SPREAD_L2 Level 2 future option spread.
XSYMTYP_COMMODITY_INDEX Commodity index.
XSYMTYP_EQUITY_OPTION_SPREAD Equity option spread.
XSYMTYP_EQUITY_OPTION_SPREAD_L2 Level 2 equity option spread.
XSYMTYP_FOREIGN_EXCHANGE_L2 Level 2 foreign exchange.
XSYMTYP_EQUITY_OPTION_STOCK_COMBO Equity option stock combo.
XSYMTYP_EQUITY_OPTION_STOCK_COMBO_L2 Level 2 equity option stock combo.
XSYMTYP_ETF Exchange traded funds.
XSYMTYP_CURRENCY Currency options.
XSYMTYP_FUTURE_SPREAD_VERTICAL Future spread vertical.
XSYMTYP_FUTURE_SPREAD_CALENDAR Future spread calendar.
XSYMTYP_FUTURE_SPREAD_STRADDLE Future spread straddle.
XSYMTYP_FUTURE_SPREAD_NON_STANDARD Future spread non-standard.
XSYMTYP_FUTURE_SPREAD_VERTICAL_L2 Level 2 future spread vertical.
XSYMTYP_FUTURE_SPREAD_CALENDAR_L2 Level 2 future spread calendar.
XSYMTYP_FUTURE_SPREAD_STRADDLE_L2 Level 2 future spread straddle.
XSYMTYP_FUTURE_SPREAD_NON_STANDARD_L2 Level 2 future spread non-standard.
XSYMTYP_FUTURE_OPTION_SPREAD_VERTICAL Future option spread vertical
XSYMTYP_FUTURE_OPTION_SPREAD_CALENDAR Future option spread calendar.
XSYMTYP_FUTURE_OPTION_SPREAD_STRADDLE Future option spread straddle.
XSYMTYP_FUTURE_OPTION_SPREAD_NON_STANDARD Future option spread non-standard.
XSYMTYP_FUTURE_OPTION_SPREAD_VERTICAL_L2 Level 2 future option spread vertical.
XSYMTYP_FUTURE_OPTION_SPREAD_CALENDAR_L2 Level 2 future option spread calendar.
XSYMTYP_FUTURE_OPTION_SPREAD_STRADDLE_L2 Level 2 future option spread straddle.
XSYMTYP_FUTURE_OPTION_SPREAD_NON_STANDARD_L2 Level 2 future option spread non-standard.
XSYMTYP_EQUITY_OPTION_SPREAD_VERTICAL Equity option spread vertical.
XSYMTYP_EQUITY_OPTION_SPREAD_CALENDAR Equity option spread calendar.
XSYMTYP_EQUITY_OPTION_SPREAD_STRADDLE Equity option spread straddle.
XSYMTYP_EQUITY_OPTION_SPREAD_NON_STANDARD Equity option spread non-standard.
XSYMTYP_EQUITY_OPTION_SPREAD_VERTICAL_L2 Level 2 equity option spread vertical.
XSYMTYP_EQUITY_OPTION_SPREAD_CALENDAR_L2 Level 2 equity option spread calendar.
XSYMTYP_EQUITY_OPTION_SPREAD_STRADDLE_L2 Level 2 equity option spread straddle.
XSYMTYP_EQUITY_OPTION_SPREAD_NON_STANDARD_L2 Level 2 equity option spread non-standard.
XSYMTYP_FUTURE_SPREAD_STRANGLE Future spread strangle.
XSYMTYP_FUTURE_SPREAD_STRANGLE_L2 Level 2 future spread strangle.
XSYMTYP_FUTURE_OPTION_SPREAD_STRANGLE Future option spread strangle.
XSYMTYP_FUTURE_OPTION_SPREAD_STRANGLE_L2 Level 2 future option spread strangle.
XSYMTYP_EQUITY_OPTION_SPREAD_STRANGLE Equity option spread strangle.
XSYMTYP_EQUITY_OPTION_SPREAD_STRANGLE_L2 Level 2 equity spread strangle.
XSYMTYP_CURRENCY_INDEX Currency index.
XSYMTYP_ETF_INDEX Exchange-traded fund (ETF) index.
XSYMTYP_FOREIGN_EXCHANGE_INDEX Foreign exchange index.
XSYMTYP_INTEREST_RATE Interest rate.
XSYMTYP_INTEREST_RATE_INDEX Interest rate index.
XSYMTYP_FUND_L2 Level 2 fund.
XSYMTYP_WARRANT_L2 Level 2 warrant.
XSYMTYP_INDEX_L2 Level 2 equity index.
XSYMTYP_BOND_L2 Level 2 bond.
XSYMTYP_FIXED_INCOME_L2 Level 2 fixed income.
XSYMTYP_COMMODITY_INDEX_L2 Level 2 commodity index.
XSYMTYP_ETF_L2 Level 2 exchange-traded funds.
XSYMTYP_CURRENCY_L2 Level 2 currency options.
XSYMTYP_CURRENCY_INDEX_L2 Level 2 currency index.
XSYMTYP_ETF_INDEX_L2 Level 2 exchange-traded fund (ETF) index.
XSYMTYP_FOREIGN_EXCHANGE_INDEX_L2 Level 2 foreign exchange index.
XSYMTYP_INTEREST_RATE_L2 Level 2 interest rate.
XSYMTYP_INTEREST_RATE_INDEX_L2 Level 2 interest rate index.

Bid-ask-trade values

The following table lists the possible values for the HighBate, LastBate, LowBate, and SetlBate field codes:

Bid-ask-trade code Description
XBAT_BID Price was set by a bid.
XBAT_ASK Price was set by an ask.
XBAT_TRADE Price was set by a trade.

Tick flag values

The following table lists the possible values for the TickFlags and TradeTickFlags field codes:

Tick flag value Description
xtf_tick_up Tick up.
xtf_tick_down Tick down.
xtf_price_up Price trend up.
xtf_price_down Price trend down.

GL adapter

The GL feed adapter connects to the feed infrastructure now known as SunGard Global Trading, but still generally referred to as GL Trade. (The acronym GL was formed from the initials of the founders' surnames.)

Note that the GL feed adapter, running in the context of the Netprobe, needs to be able to establish a TCP/IP connection to the P3 routing process identified in its configuration.

Feed parameters

The feed-specific settings for the GL adapter are concerned with connecting to a GL SLC (the inbound GL server) via a P3 routing process. They specify the host and port of the routing process and the GL sub-node index that identifies the SLC.

A GL feed accepts the following parameters:

gl.p3host=<hostname / IP-address of P3 host>
gl.p3port=<port number of P3 routing process>
gl.slcNode=<sub-node index of SLC>

Instrument codes

GL instrument codes are formed from by the symbol code prefixed by the exchange and market indexes.

These indexes can be found using the GL Win client application. Alternatively, they are can be found in the licsym.ini file within the GL Win installation folder. Entries starting PlaceX= are exchanges, while items starting MchY= are markets.

For example, 41,4,LFI081200000F identifies a Futures (market 4) contract on LIFFE (exchange 41).

Field codes

Fields on GL are identified by numeric GL feed codes, which are non-negative integers. The first 22 of these are listed, for full details please consult the GL documentation.

Code Field Description Code Field Description
0 Bid quantity 11 High
1 Bid price 12 Log
2 Ask price 13 Suspension indicator
3 Ask quantity 14 Variation sign
4 Last traded price 15 unused
5 Last traded quantity 16 Closing price
6 Last trade time 17 Minimum lot
7 unused 18 Proportional average price
8 Percentage variation 19 Cumulative call
9 Total quantity exchanged 20 Cumulative put
10 Opening price 21 Open position
       

ICE adapter

The ICE Data Services or IDC consolidated feed adapter uses the IDC Consolidated Feed Token Format (CTF) Wire Protocol. This technology was acquired when ICE bought the Interactive Data Corporation (IDC).

This adapter must follow the deployment requirements:

  • The Netprobe must establish a TCP connection to the specified ICE Data Services feed server to obtain data.
  • The Market Data Monitor plug-in must be authorized to subscribe to the monitored data, as determined by the specific user monitoring requirements.

Feed parameters

The ICE feed adapter is configured with connection and authentication details.

Use the following parameters to configure this adapter:

ice.serverHost=<hostname/IP>
[required]
ice.serverPort=<listen port of the server>
[required] ice.username=<username to access the server>
[required] ice.password=<password to access the server>
[required] ice.instrumentCheck=full|none
[default=full]

Instrument codes

Instrument codes within Geneos comprise a series of identifiers in this format:

token=value | token=value

You can select the following tokens:

Number Token Name Example
4 ENUM.SRC.ID Market - 627 for LSE.
5 SYMBOL.TICKER These are structured for each type of instrument which has similarities to T:SYMB, where the type can be one of the following:
  • E - Equities and ETF funds
  • B - Fixed income
  • X - Forex and Money markets
  • R - Forwards
  • F - Futures

T:SYMB refers to the base that conveys the root symbol prefixed by type and trading session.

3083 SYMBOL.UNDERLYING.TICKER  
3130 ENUM.SRC.UNDERLYING.ID  
3123 CUSIP number Alternative index to use if configured on server.
3125 ISIN code Alternative index to use if configured on server.
3126 SEDOL code Alternative index to use if configured on server.
     

For example, use the format below to select BP in the London Stock Exchange (LSE):

4=627|5=E:BP.

Use this format to use the ISIN code to identify the same instrument in LSE:

4=627|3125=GB0007980591

You may use any combination of the above token numbers, but the end result must be a unique instrument.

The subscription and data returned will always be resolved to a source and symbol.

The most specific way of providing a unique instrument is to provide a 4 (ENUM.SRC.ID) and a 5 (SYMBOL.TICKER) number as part of the instrument code.

Field codes

Numeric codes are use to identify the fields on ICE, which are non-negative integers. There are several thousand codes.

Refer to the table below to view the list of some numeric codes.

Number Token Name Number Token Name
0 Unused 14 CURRENT.PRICE
1 Unused 15 Unused
2 Unused 16 ACTIVITY.DATETIME
3 PERMISSION 17 Unused
4 ENUM.SRC.ID 18 TRADE.DATETIME
5 SYMBOL.TICKER 19 Unused
6 Unused 20 QUOTE.DATETIME
7 PART.CODE 21 Unused
8 TRADE.PRICE 22 TRADE.VOL
9 TRADE.SIZE 23 SESSION.VOL
10 ASK.PRICE 24 REFRESH
11 ASK.SIZE 25 QUOTE.OFFICIAL.TIME
12 BID.PRICE 26 ACTIVITY.OFFICIAL.DATE
13 BID.SIZE 27 ACTIVITY.OFFICIAL.DATETIME
       

The Lua script code uses the data subscription API to configure and subscribe to an ICE feed, as shown below.

The connection to the ICE feed host allows only one (1) unique user at a time. If you connect to another machine using the same credentials, it will disconnect.

If this occurs, Feed:getStatus() returns "Connection dropped" instead of "OK".

Note: The Feed:getStatus() gets the status reported by feed adapter if the connection has started or is disconnected.

local md = require 'geneos.marketdata'
local iceConfiguration = {
feed = {
	type = "ice",
	["library.filename"] = "geneos-feed-ice.so"
	},
	ice = {
	serverHost      = "11.22.3.4",
	serverPort      = "4001",
	username        = "username",
	password        = "password"
	},
	instruments = {
	AA  = "4=627|5=E:AA.",
	ASC = "4=627|5=E:ASC",
	BP  = "4=627|5=E:BP.",
	JE  = "4=627|5=E:JE."
	},
	fields = {
	Bid      = 12,
	Ask      = 10,
	Trade    = 8
	}
}
local ice = md.addFeed("ICE Adapter", iceConfiguration)
ice:start()
							

 

Lua adapter

The Lua feed adapter provides a Lua environment and API allowing users to write Lua scripts to publish tick data for a feed. For more information on this topic, please see the Geneos Feed Adapter API documentation.

Feed parameters

The Lua feed requires a single argument, specifying the location of the Lua script to execute. If any other parameters are defined they are passed directly to the script for evaluation.

# Required lua.script=path/to/script.lua

Instrument codes

Instrument codes are passed directly to the lua.script as part of a subscription request. Therefore the script author can define any formatting they require.

Field codes

As for instrument codes, field codes are also passed through directly to the lua.script.

NYXT adapter

The NYXT adapter supports the NYSE Technologies Middleware Agnostic Messaging API, better known as NYXT MAMA. This API was also previously named Wombat, after the firm that originally developed the software (Wombat Financial Software).

Configuring an NYXT feed adapter consists of the following steps:

  1. Select the middleware(s) to connect with, and configure these as transports in the mama.properties file.
  2. Configure your Netprobe to add the WOMBAT_PATH environment variable, which is the directory containing the properties file.
  3. Configure your Netprobe LD_LIBRARY_PATH environment variable, with the locations of the MAMA and middleware shared object (.so file) libraries.
  4. Reference the transports from the mama.properties file in your MDM sampler (Lua) script.

Feed parameters

Configuration for the NYXT feed adapter is primarily performed in the mama.properties configuration file. This file should contain configurations for all the transports to be used by the NYXT feeds. The Lua configuration for feeds then relates to referencing the transports from this file by name.

The NYXT feed accepts the following parameters:

# Required
nyxt.middleware=wmw|lbm|tibrv
nyxt.transport=<name of the transport>

# Optional
nyxt.dictionary.download=true|false
nyxt.dictionary.service=<name of dictionary service>
nyxt.dictionary.transport=<name of dictionary transport>

The feed adapter can optionally use a MAMA data dictionary to map symbolic names for fields to numeric field identifiers (FIDs).

This dictionary is not used by default, and use of the dictionary can be manually prevented by configuring the setting nyxt.dictionary.download as false. Otherwise, configuring any values for the nyxt.dictionary.* will enable dictionary use.

If nyxt.dictionary.download is set to true, then by default the feed will attempt to retrieve the dictionary using the feed transport (as defined by the nyxt.transport setting) from the "WOMBAT" service. These locations can be overridden as necessary using the appropriate settings.

Instrument codes

Instruments are configured as a multi-part string comprising the namespace and the instrument code. The namespace is taken to be all non-quoted text before the first dot (.) character.

Some examples of instrument codes:

Instrument code Namespace Instrument
ABC.xxx.yyy ABC xxx.yyy
"my.namespace".inst my.namespace inst
instrument   instrument
NASDAQ.Microsoft NASDAQ Microsoft

Note: The MAMA documentation defines a namespace as:

The publisher specific source name for the source.
e.g. This could be "NASDAQ" for a UTP PAPA publisher.

This is the equivalent of a service name in other market data systems.

Field codes

NYXY field codes may be specified either using the field name, or by FID number. If the MAMA data dictionary is not available for the feed (either because it is disabled or failed to download - see Feed parameters above) then only FID numbers can be used.

mama.properties configuration file

The mama.properties file is a global configuration file used by all configured NYXT feeds. This file must be located in the directory specified by the WOMBAT_PATH environment variable.

An example configuration file can be found in the Netprobe package in the flm/mama folder. This file can be referenced by setting the WOMBAT_PATH as below, assuming the Netprobe is running from the package folder. If not, you will need to modify your environment accordingly.

export WOMBAT_PATH=./flm/mama/config

The configuration file should contain a single Geneos-specific setting geneos.middlewarelist which defines the middleware libraries to be used. If not specified the feed will by default attempt to load the wmw library. This setting accepts a comma-separated list of values, so multiple middlewares (including lbw or tibrv) can loaded by specifying the following:

geneos.middlewarelist=wmw,lbm,tibrv

Other settings in the configuration file will be specific to each middleware being used. Please refer to the MAMA and the middleware bridge documentation for full details. The transport name for each configuration will then be referenced from the feed configuration in the Lua script.

An example configuration for the default middleware wmw is shown below. This file is packaged with the Netprobe but may also be downloaded here.

MAMA shared libraries

When loading an NYXT feed, the MAMA libraries and any required middleware libraries must be available to the Netprobe in the folders specified by the LD_LIBRARY_PATH environment variable.

OpenMAMA requires access to the following library files, which are also packaged with the Netprobe in the flm/mama folder:

  • libmama.so
  • libmama.so.0
  • libmama.so.0.0.0
  • libwcache.so
  • libwcache.so.0
  • libwcache.so.0.0.0

OpenMAMA will initialise each configured middleware by loading an bridge library as an entry point. These libraries have the naming convention libmama<MWNAME>impl.so, for example the wmw type will load libmamawmwimpl.so. Each bridge library may itself have dependencies on underlying middleware libraries, which must also be available in the LD_LIBRARY_PATH.

For example, the full set of libraries required to load the Data Fabric / Wombat middleware (mwm) would be:

  • libmamawmwimpl.so
  • libmamawmwimpl.so.0
  • libmamawmwimpl.so.0.0
  • libwombattcp.so
  • libwombattcp.so.0
  • libwombattcp.so.0.0

Similarly the full set of libraries for the lbm middleware would be provided by the vendor.

QuantFeed adapter

The QuantFeed feed adapter uses the FeedOS API to subscribe to Level1 data for instruments using QuantFeed Local Code and provide ticks to the Geneos Market Data Monitor.

This adapter is subject to the following deployment considerations.

  1. The Netprobe must be able to create a TCP connection to the QuantFeed server to obtain data.
  2. The Market Data Monitor plug-in must be authorized to subscribe to the monitored data (as determined by the specific user monitoring requirements).

Feed parameters

The QuantFeed adapter is configured with connection details of the (the hostname/IP and port) and the application name used for permissioning. These are configured using the following parameters:

quantFeed.serverHost=<hostname/IP of the QuantFeed Appliance>             [default=127.0.0.1]
quantFeed.serverPort=<listen port of the server>                              [default=8194]quantFeed.username=<username to access the server>
quantFeed.password=<password to access the server>

Instrument codes

This is a proprietary market-dependent string, computed from a subset of instrument's characteristics (symbol, expiry date, etc). The syntax for the textual representation of this kind of instrument codes is as follows: 1. marketid - the parent marketid, in textual form. 2. @ - used as a delimiter 3. LocalCodeStr - identifier for the instrument within the given market.

In QuantFeed, each market has its own rules for building LocalCodeStr. This may be as simple as using exchange Symbol or ISIN, but could may be more or less complex depending on the nature of instruments present on the market. For example, Local Codes for PUT options on EUREX have the form: XEUR @ symbol mm yy P strike Where symbol is the EUREX "product id", mm and yy are the expiry date, and strike is the strike price without decimal point. An optional "generation number" could even appear after a split event on the underlying.

Field codes

QuantFeed field codes are identified by descriptive strings called 'tags' in FeedOS documentation. Some of the accepted fields are listed below. For full details, please consult the FeedOS documentation.

Code Field Description
TradingStatus Set on the trading status.
LastPrice Contains the last price, it can be the Off Book or On Book Price, or other prices like closing price.
LastTradeQty Set on last trade quantity.
LastTradeTimestamp Set from market official time.
LastTradePrice Set on the last traded price (on book).
LastOffBookTradePrice Set on the OffBook last traded price.
DailyOpeningPrice If the LastPrice is available, the DailyOpeningPrice will be set on DailyOpen.
DailyClosingPrice It is set on DailyClose at the end of the trading day, and reset the next trading day at DailyOpen
   

Aside from the fields mentioned in the FeedOS documentation, the following custom fields are also supported.

Code Field Description
ASK Ask price.
ASK_SIZE Ask volume.
BID Bid price.
BID_SIZE Bid volume.
LAST_PRICE_MARKET_TIME Market UTC Timestamp.
LAST_PRICE_SERVER_TIME Server UTC Timestamp.
   

RFA adapter

The Refinitiv Robust Foundation API (RFA) feed adapter allows connection to a Refinitiv TREP system.

2 types of feed are currently supported by the RFA Adapter
  • Streaming feeds are those that send a streaming request to the publisher. After such a request is sent, the adapter receives regular multiple responses from the publisher.
  • Non-streaming feeds are those that send a non-streaming request, also called a snapshot request. This is a request for only one response from the publisher. No further updates will be received.

Note that the RFA feed adapter, running in the context of the Netprobe, typically needs to be able to establish a TCP/IP connection to the RMDS infrastructure to be monitored.

When installing the RFA adapter on a Windows platform, the Visual Studio C++ 2010 runtime must be installed to satisfy the RFA libraries dependencies. Please see http://www.microsoft.com/en-gb/download/details.aspx?id=5555 or contact your system administrator for assistance.

In Geneos 4.8.0 version, the RFA version 8 supports the microseconds and nanoseconds timestamps.

You can access the timestamp through all APIs from an OMM source.

Field Time format
Hours 12:00:00:000:000:000
Minutes 12:01:00:000:000:000
Seconds 12:01:01:000:000:000
Milliseconds 12:01:01:001:000:000
Microseconds (RFA version 8 and above) 12:01:01:001:001:000
Nanoseconds (RFA version 8 and above) 12:01:01:001:001:001
   

Feed parameters

The majority of the configuration for the RFA feed adapter is contained within an RFA configuration file. A single file can be used to configure all RFA-type feeds, and the file must be accessible by Netprobe in order for it to read the configuration. RFA feed configuration in the MDM Lua script is related to specifying the location of this file, and referencing the sessions within it.

When configuring the feed, you must also specify whether the data the specific feed provides will be using the RFA Object Message Model (OMM) or the legacy Market Data Interface (MDI). MDI is only supported on 32-bit platforms, and is the default data type to provide backwards compatibility with older Netprobe versions. 64-bit platforms will default to OMM connections.

An RFA feed accepts the following parameters:

rfa.configFile=<relative or absolute path to the RFA configuration file>
rfa.session=<session name>
rfa.connectionType=OMM|MDI
rfa.messageModelType=MARKET_PRICE|DOMAIN_TYPE_11
rfa.mapEntry.keys={<list of map-value keys to subscribe to>}
rfa.mapEntry.fields={<list of map-value fields to subscribe to>}

The RFA feed supports two message model types: "MARKET_PRICE" and "DOMAIN_TYPE_11". By default, if this parameter is not set, the message model type will be "MARKET_PRICE".

An RFA feed with an OMM connection type also supports map values obtained from the server. To set which map-value keys and fields to subscribe to, the rfa.mapEntry.keys and rfa.mapEntry.fields must be set. If the rfa.mapEntry.keys parameter is not set, it will subscribe to all the keys of the map-value. If the rfa.mapEntry.fields parameter is not set, it will subscribe to all the fields of the map-value. These keys are only supported for RFA feeds using OMM connection type on Linux and Windows platforms.

To set an adapter as non-streaming, the feed.streaming parameter should be set to false. By default, if this parameter is not set, the adapter is considered streaming.

feed.streaming=false

Non-streaming adapter is only applicable for OMM connections. This parameter is ignored when rfa.connectionType is set to MDI.

Instrument codes

RFA instrument codes are formed of a RIC prefixed by the service name. For example, IDN_SELECTFEED.BP.L represents market data from IDN SelectFeed about BP, traded on the London stock exchange.

Field codes

RFA field codes are identified by a descriptive string, some examples of which are given below.

Code Field Description
TRDPRC_1 Latest trade price
ASK Ask price
ASKSIZE Ask volume
BID Bid price
BIDSIZE Bid volume
   

Geneos-specific RFA settings

The following session-specific settings can be configured in the RFA configuration file. These settings are read and processed by the RFA feed adapter. The fields should be configured under the \Geneos\FLM\SessionName tree. For example, the OMM_ADS session might be configured with the line:

\Geneos\FLM\OMM_ADS\DacsUsername = "SomeUser"

The available fields are as follows:

Field Description Default
RDMFieldDictionaryFilename Path to the RDMFieldDictionary file. ./flm/rfa7/RDMFieldDictionary
EnumtypeDefFilename Path to the enumtype.def file. ./flm/rfa7/enumtype.def
DacsApp DACS application ID 256
DacsPosition DACS position
DacsUsername DACS username user

Metadata fields

To provide additional information about the tickstream at runtime the following meta-data fields can be subscribed to. These are not market data values but information about the tickstream accessed via the RFA.

Field Type Description
status.streamState String State of the data stream
status.dataState String State of the data
status.statusCode String Description of the status code for this instrument
status.statusText String Text description of current status
qos.rate String Quality of service rate
qos.timeliness String Quality of service timeliness
manifest.sequenceNumber Number Sequence number of tick
manifest.filteredCount Number Count of ticks conflated by the infrastucture
manifest.filteredTime Number Time in millisec which updates were conflated
manifest.itemGroup String Group identifier of message
attribute.name String The name identifier
attribute.nameType Number Semantic is symbology with one type being a RIC
attribute.serviceId String Id of service providing the information
attribute.serviceName Number Name of service providing the information
attribute.id Number A unique id

RFA data from an ADS

The following configuration settings can be used to connect to a ADS or P2PS and receive OMM data. The Lua configuration for this feed must set the connection type to OMM (or left to default on 64-bit platforms).

# Session configuration.
 #   The feed rfa.session parameter should match the session name "OMM_P2PS" defined below.
#   The connectionList setting references a connection defined below.
#   The threading model is set to "Single" to minimise message latency for more accurate timestamps.
\Sessions\OMM_P2PS\connectionList = "Connection_RSSL"
\Sessions\OMM_P2PS\threadModel    = "Single"

# P2PS connection details.
#   RSSL type must be specified for OMM data.
#   The host and port settings specify how to connect to the P2PS for this data.
\Connections\Connection_RSSL\connectionType = "RSSL"
\Connections\Connection_RSSL\rsslPort       = "14002"
\Connections\Connection_RSSL\hostName       = "host.example.com"

# Disables singleton usage of the RSSL connection, allowing multiple RSSL connections to be used.
# This setting must be disabled (default is true) when using a session ThreadModel of "Single".
\Adapters\RSSL_Cons_Adapter\singleton = false

# OMM message queuing settings
#   These settings allow fine-grained control over incoming OMM data.
#   enableOMMEventAge should be enabled where possible, for more accurate message timestamps.
\Control\MessagePools\OMMItemEventPool\InitialSize       = 10000
\Control\MessagePools\OMMItemEventPool\Increment         = 10000
\Control\MessagePools\OMMItemEventPool\MaximumSize       = 0
\Control\MessagePools\OMMItemEventPool\enableOMMEventAge = true

# API Logging and error message configuration
#   If not using internal logging strings, you will need to configure settings within
#   \Logger\ComponentLoggers to specify message file locations
\Logger\AppLogger\windowsLoggerEnabled  = false
\Logger\AppLogger\fileLoggerEnabled     = true
\Logger\AppLogger\useInternalLogStrings = true

# Geneos-specific settings for the "OMM_P2PS" session.
#   Uncomment the settings below and configure as required.
#\Geneos\FLM\OMM_P2PS\RDMFieldDictionaryFilename = "./flm/rfa7/RDMFieldDictionary"
#\Geneos\FLM\OMM_P2PS\EnumtypeDefFilename = "./flm/rfa7/enumtype.def"
#\Geneos\FLM\OMM_P2PS\DacsApp             = "app_name"
#\Geneos\FLM\OMM_P2PS\DacsPosition        = "position"
#\Geneos\FLM\OMM_P2PS\DacsUsername        = "username"

RFA configuration containing multiple sessions

An RFA configuration file can contain multiple sessions, which are then referenced in the Lua script as normal. An example of such a file can be made by creating a file containing both of the P2PS example configurations shown above.

It is also possible to configure sessions which share the same underlying connection but use different services. These sessions would then be configured as individual feeds, allowing comparison between services (assuming they can provide data for the same instrument). In this configuration, the connection service list must contain the names of all services in use. An example is shown below:

# Session configuration.
\Sessions\SERV1_P2PS\connectionList = "Connection_SSLED"
\Sessions\SERV2_P2PS\connectionList = "Connection_SSLED"
\Sessions\SERV3_P2PS\connectionList = "Connection_SSLED"

# Connection definition (P2PS details).
#   This connection will be shared by all the sessions defined above.
#   Each session can reference a different service as defined by the MDM instrument configuration.
\Connections\Connection_SSLED\connectionType = "SSLED"
\Connections\Connection_SSLED\PortNumber     = 8101
\Connections\Connection_SSLED\ServerList     = "host.example.com"
\Connections\Connection_SSLED\UserName       = "SomeUser"
\Connections\Connection_SSLED\logEnabled     = true
\Connections\Connection_SSLED\serviceList    = "SERV1,SERV2,SERV3"

# Service definitions
\Services\SERV1\dataFormat   = "marketfeed"
\Services\SERV1\dataDictList = "MF"
\Services\SERV2\dataFormat   = "marketfeed"
\Services\SERV2\dataDictList = "MF"
\Services\SERV3\dataFormat   = "marketfeed"
\Services\SERV4\dataDictList = "MF"\DataDictionaries\MF\dataDictType = "marketfeed"

# Legacy DACS settings
\Control\Entitlements\dacs_CbeEnabled        = false
\Control\Entitlements\dacs_SbeEnabled        = false
\Control\Entitlements\dacs_NewsCbeEnabled    = false
\Control\Entitlements\dacs_NewsCbeLogEnabled = false
\Control\Entitlements\dacs_SbeSubEnabled     = false
\Control\Entitlements\dacs_SbePubEnabled     = false

# API Logging and error message configuration
\Logger\AppLogger\windowsLoggerEnabled  = false
\Logger\AppLogger\fileLoggerEnabled     = true
\Logger\AppLogger\useInternalLogStrings = true

TestFile adapter

The test file feed adapter allows MDM tick history file output to be replayed as input for testing purposes.

Feed parameters

The test file feed accepts the following parameters:

testfile.feed=<feed name in input file to be read>
testfile.filename=<relative or absolute path to input file>
testfile.format=3|4

Note that the feed parameter specifies the name of the feed in the input data file. This does not necessarily have to be the same as the MDM feed name, but is recommended to avoid confusion.

The testfile supports two formats (version 3 and 4) of the tick history file. Only tick data is captured; informational messages (such as a sample or log rolling) are ignored. Example version 3 output is shown below. Version 4 output looks similar, but has tick timestamps in microsecond resolution.

==== Started logging: Tue 11 May 2012, 08:46:01 ====
== Sample, 08:46:07 ==
Time:08:46:03.002  Feed:SSL-REUT  Inst:LLOY
Field:Ask       Value: 99.65000000  U
Field:AskSize   Value:10322.00000000  U
Field:Bid       Value: 99.56000000  U
Field:BidSize   Value:39704.00000000  U
Field:Trade     Value: 99.57000000  U
Field:Volume    Value:1556.00000000  U*
Time:08:46:03.013  Feed:LSEPERF   Inst:BLT
...etc

Instrument codes

Since this feed reads tick history files as input data, the instrument codes for a test feed should be configured to match the instrument codes as recorded in the input file.

Field codes

As per instrument codes above, field codes should be configured to match those present in the input file.

TT adapter

The TT feed adapter allows subscription of market data from Trading Technologies (TT) using the XTrader API. This adapter is available only for the Windows platform.

The TT adapter can be run in one of two modes:

Standard Mode

In this mode the Netprobe runs on the desktop of an X_Trader Pro user (not as a service) and shares the license of the running X_Trader application.

Server Mode

In this mode the Netprobe can be run as a Windows service. The TT feed must then be configured with its own TT universal login credentials, which will be used to authenticate with TT. In this mode the Netprobe will consume its own X_Trader Pro license.

Note: The XTrader API used by the TT feed adapter does not support unsubscribe operations. This means that unsubscribing from instruments using the MDM market data API will only prevent publishing of updates. Processing of updates for the unsubscribed instruments will still occur and consume CPU.

If you make large-scale changes to instrument configurations for TT feeds, it is advised to restart the Netprobe following the change.

Feed parameters

A TT adapter requires the name of the exchange gateway to be configured. TT universal login credentials are optional settings which are only required if the Netprobe will be running in server mode.

# Required
tt.exchange=<name of the exchange>

# Optional
tt.global.com.verbose=true|false
tt.global.universal.username=<username>
tt.global.universal.password=<password>
tt.global.universal.encoding=std|plaintext

The com.verbose setting controls debug output for the Windows COM handler thread, which is shared by all TT feeds. Verbose (debug) output is disabled by default.

The login password can be configured as either plaintext or using the Geneos standard encoding.

To configure a plaintext version specify the following:

tt.global.universal.username=myUser
tt.global.universal.password=myPassword
tt.global.universal.encoding=plaintex

To configure an encoded password, first generate your password using a Geneos gateway binary ./gateway2.linux-en <password> then specify the following:

tt.global.universal.username=myUser
tt.global.universal.password=<encoded password text from gateway>
tt.global.universal.encoding=std

Instrument codes

TT instrument codes are specified as a multi-part dotted string, consisting of the Product Name, Product Type and Contract ID (exchange identifier for contract). i.e. ProductName.ProductType.ContractID - for example KERO.FUTURE.2014/01.

Alternatively, an RTD code can be generated from the X_Trader GUI for an instrument and configured as the instrument code. This feature is normally used by X_Trader for Excel data linking. When using an RTD code, the generated result must be for an instrument and the exchange name must match that which configured exchange of the feed.

e.g. =RTD("XTAPI.RTD","","Instr","TOCOM","KERO","FUTURE","2014/01","ASK")

Field Codes

TT field codes are identified by a descriptive string. Some examples of this are given below.

Code Field Description
ASK Ask Price
ASKQTY Ask Quantity
BID Bid Price
BIDQTY Bid Quantity
LAST Last Price
LASTQTY Last Quantity
VOLUME Volume
   

TT field names may optionally be specified with a format modifier postfix (e.g. & for integer, # for decimal, $ for string). If no postfix is given the TT feed will use the default # for decimal notation. For normal use it is recommended not to specify a format.

Depth and Order Set data is not available via the TT feed adapter.