Ability for a consumer to identify if prices published by a provider are stale

Using EMA, is there a mechanism for a market data consumer to identify if prices being published by providers are stale due to an issue faced by the provider or any other reason?

Best Answer

  • In addition to the answer already provided there are two additional points to note:

    • There isn't exactly a state called "stale", but there's a data state called "SUSPECT" and this is what you are looking for. SUSPECT is actually a much better word. In most cases you'll experience that an item in this state has stopped updating (meaning it is stale in the true meaning of the word) but this may not be the case. SUSPECT simply means there's currently something wrong with the item, not necessarily that it is no longer updating.
    • State is something you'll need to keep track of yourself on a per-item basis as each UPDATE message doesn't come with its own state. As with everything else in TREP you'll only see messages if something is actually changing. This is also true for State.

    Lars

    Addicticks

Answers

  • When a market data stream state changes e.g. suspect/stale due to the provider goes down. EMA consumer will receive status messages at the callback method named onStatusMsg(...).of OmmConsumerClient interface. The example source code implementing the onStatusMsg(..) in EMA Java Consumer application

    public void onStatusMsg(StatusMsg statusMsg, OmmConsumerEvent event) 
    {
    System.out.println("Item Name: " + (statusMsg.hasName() ? statusMsg.name() : "<not set>"));
    System.out.println("Service Name: " + (statusMsg.hasServiceName() ? statusMsg.serviceName() : "<not set>"));


    if (statusMsg.hasState())
    System.out.println("Item State: " +statusMsg.state());

    System.out.println();

    }

    The example output when the provider goes down, EMA application will receive a status message:

    Item Name: IBM.N

    Service Name: API_NEON_NI

    Item State: Open / Suspect / None / 'A23: Service has gone down. Will recall when service becomes available.'