IPA Financial Contracts for Fx Cross api - error responses

I am using the IPA Financial Contracts for Fx Cross api to resolve Fx prices.

I have made the same request (see payload below) several times over a period of 2-3 hours. Sometimes I receive an error response, sometimes I get a successful response.


The error response was: QPS-Pricer.8020:Market data: No Fx Spot Point available. Fx Spot is N/A for the cross code 'GBPUSD'.

Do you know what this message means and why I might get it periodically?


I am testing the system with many requests (in the region of 3000 fx prices).


The payload is this:

{

"instrumentDefinition": {

"fxCrossCode": "USDGBP",

"fxCrossType": "FxForward",

"instrumentTag": "12908240928_USDGBP",

"legs": [

{

"fxLegType": "FxForward",

"endDate": "2024-03-05"

}

]

},

"instrumentType": "FxCross",

"pricingParameters": {

"isIntraday": true,

"priceSide": "Ask",

"valuationDate": "2023-12-15T16:17:01"

}

}


Many Thanks...

Best Answer

  • Hello @david.p.newman ,


    It seems the Fx spot USDGBP was not found during the pricing.

    Next time please Add ErrorMessage in the request fields we will get more details about the error.

    Also, if you have the request id we can look into the logs:

    {
        "outputs": [
            "Headers",
            "Data",
            "Statuses"
        ],
        "fields": [
            "FxSpot",
            "ErrorCode",
            "ErrorMessage"
        ],
        "universe": [
            {
                "instrumentDefinition": {
                    "fxCrossCode": "USDGBP",
                    "fxCrossType": "FxForward",
                    "instrumentTag": "12908240928_USDGBP",
                    "legs": [
                        {
                            "fxLegType": "FxForward",
                            "endDate": "2024-03-05"
                        }
                    ]
                },
                "instrumentType": "FxCross",
                "pricingParameters": {
                    "isIntraday": true,
                    "priceSide": "Ask",
                    "valuationDate": "2023-12-15T16:17:01"
                }
            }
        ]
    }
     



Answers

  • Okay, thanks for the info. I will start tracking the request id from now on so we can get better information about what went wrong.

    I didn't make it clear in my initial message that I was including the "ErrorMessage" in the request fields. The code and the message were as per my initial message.

    The error code and message:
    QPS-Pricer.8020: Market data: No Fx Spot Point available. Fx Spot is N/A for the cross code 'GBPUSD'.

    Here is the full payload:


    {
      "fields": [
            "InstrumentTag",
            "ValuationDate",
        "InstrumentDescription",
        "FxOutrightCcy1Ccy2",
        "ErrorCode",
        "ErrorMessage",
        "FxCrossScalingFactor",
            "FxSpot",
            "FxCrossType"
      ],
      "outputs": [
        "Data",
            "Headers"
      ],
      "universe": [
            {
                "instrumentDefinition": {
                    "fxCrossCode": "USDGBP",
                    "fxCrossType": "FxForward",
                    "instrumentTag": "12908240928_USDGBP",
                    "legs": [
                        {
                            "fxLegType": "FxForward",
                            "endDate": "2024-03-05"
                        }
                    ]
                },
                "instrumentType": "FxCross",
                "pricingParameters": {
                    "isIntraday": true,
                    "priceSide": "Ask",
                    "valuationDate": "2023-12-15T16:17:01"
                }
            }
      ]
    }
  • Hi, you referred to the request id in your message. Is this the http header "x-tr-requestid"? There is also an operationid on the async api (i.e. specified in the location header). Is this useful for analysing issues with your team also? Which is best? Many Thanks.


  • Just noticed that in the async method the "operationid" is the same as the "requestid" in the initiating request. We will look to capture that and get back to you. Thanks.