Bloomberg

Overview

The Bloomberg Groups are visual color-coded named groups (much like the io.Connect Channels) which the user can select from the UI of Bloomberg apps. They provide data synchronization across Bloomberg apps (e.g., if two apps are in the same colored group, when an instrument changes in one app, the other app is updated respectively). The Bloomberg Adapter API provides configurable mapping between the Bloomberg Groups and the io.Connect Channels.

⚠️ Note that the io.Connect Channels are mapped via configuration to the default names of the Bloomberg Groups. Therefore, modifying the default name of a group in the Bloomberg Terminal will cause the mapping between the Bloomberg Groups and the io.Connect Channels to break. Any change you make to a Bloomberg Group name you must reflect in the channels.json file (located in %LocalAppData%\interop.io\io.Connect Desktop\Desktop\config) which contains the configuration for the io.Connect Channels.

Groups Operations

Get Group Names

Get the known groups as a list of strings with the group names:

  • Interop method name: "T42.BBG.GetGroups"
  • Accepts: void
  • Returns: Array of strings with the available Bloomberg group names;

Example:

const result = await io.interop.invoke("T42.BBG.GetGroups");

// Example value: ["Group-B", "Group-A"]
const groups = result.returned.Result;

if (groups && groups.length > 0) {
    // Use the Bloomberg groups here.
};

Get Group Context

Get the context of a group by name:

  • Interop method name: "T42.BBG.GetGroupContext"
  • Accepts: The group name as a string;
  • Returns: The context of the group as a string;

Example:

const invocationOptions = { group: "Group-A" };
const result = await io.interop.invoke("T42.BBG.GetGroupContext", invocationOptions);

// Example value: "VOD LN Equity"
const context = result.returned.Result;

Update Group Context

Update the context of a group by name:

(void) T42.BBG.SetGroupContext (string group, string context)
  • Interop method name: "T42.BBG.SetGroupContext"
  • Accepts: The name of the group as a string and context as a string with which to update the group;
  • Returns: void

Example:

const invocationOptions = {
    group: "Group-A",
    context: "BARC LN Equity"
};

io.interop.invoke("T42.BBG.SetGroupContext", invocationOptions);

Streaming Events

An interop-enabled app can subscribe for and be notified about group changes:

  • Interop method name: "T42.BBG.GroupsChanged"
  • Accepts: void
  • Returns: An array of objects with name and value string properties, representing the name of the changed group and the value of its new context;

Example:

const subscription = await io.interop.subscribe("T42.BBG.GroupsChanged");

subscription.onData(handleGroupChanges);

function handleGroupChanges(streamData) {
    // Example value: [{ name: "Group-A", value: "VOD LN Equity" }]
    const changes = streamData.data.groups;
    // Handle group changes here.
};

Channels Synchronization

Currently, io.Connect Desktop has Channel definitions for all Bloomberg Groups. The io.Connect Channels are defined in %LocalAppData%\interop.io\io.Connect Desktop\Desktop\config\channels.json.

The binding configuration for the Bloomberg Groups to the io.Connect Channels can be found in the meta property of the io.Connect Channel definition:

{
    "blpGroup": {
        "name" : "Group-G",
        "readDataFieldPath" : "data.partyPortfolio.ric",
        "writeDataFieldPath" : "data.partyPortfolio.ric",
        "read" : "ric",
        "write": "ric"
    }
}
  • name - specifies the Bloomberg Group to bind to the respective io.Connect Channel;

  • readDataFieldPath - specifies the field path to the io.Connect Channel data from where the Bloomberg Adapter reads the updated Channel value and then updates the Bloomberg Group context.

  • writeDataFieldPath - specifies the field path to the io.Connect Channel data, where the Bloomberg Adapter writes the updated Bloomberg Group context.

  • read and write - specify whether the type of the context to read/write is RIC or BLP;