question

Upvotes
Accepted
43 2 5 8

FX Option - The query for a Fx barrier does not work due to a JSON Serialization error

Hello,

I'm trying to execute a IPA query and it does not work.

I got this error: ""

Here is the code


import refinitiv.data as rd
import refinitiv.data.content.ipa.financial_contracts as rdf
from refinitiv.data.content.ipa.financial_contracts import option

rd.open_session()

response = option.Definition(
    instrument_tag = "EURGBP_1M",
    underlying_type = option.UnderlyingType.FX,
    underlying_definition = option.FxUnderlyingDefinition("EURGBP"),
    barrier_definition =  option.FxBarrierDefinition(barrier_mode = "American",
                                                      in_or_out = "Out",
                                                      up_or_down = "Down",
                                                      level = 0.85449),
    tenor = "1M",
    call_put = "Call",
    exercise_style = "EURO",
    strike = 0.8597,
    notional_amount = 1000000,
    notional_ccy = "EUR",
    pricing_parameters = option.PricingParameters(valuation_date = "2023-09-15T00:00:00Z")
).get_data()

response.data.df


here is the error got :

1694808977978.png


Can someone has a look ?

Thanks:


Note: The same error occurs when trying to use a FxBinaryDefinition

python#technologypython apicodebook
1694808977978.png (16.6 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
Accepted
25.2k 57 17 14

Hello @yaokoffi.kouassi

I can replicate the issue on Codebook (Refinitiv Data Library for Python version 1.2.0) and a standalone Jupyter Notebook using Refinitiv Data Library for Python version 1.3.1.

However, the latest version of the library is 1.4.0 (https://pypi.org/project/refinitiv-data/1.4.0/). I have tried it on a standalone Jupyter notebook with your code. It works fine.

result.png

It seems the issue has been fixed in version 1.4.0. If you (or the client) use a standalone Jupyter notebook, I highly recommend upgrading the library.

pip install refinitiv-data==1.4.0



result.png (61.2 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
43 2 5 8

Hello Wasin and thank you for your reply.

Unfortunately, the customer palns to use the script within Codebook.

Do we know whne Codebook will use the version 1.4.0?

Thanks

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
80.3k 259 52 75

@yaokoffi.kouassi

The workaround is using the following code.

import refinitiv.data as rd
import refinitiv.data.content.ipa.financial_contracts as rdf
from refinitiv.data.content.ipa.financial_contracts import option
 
rd.open_session()
 
response = option.Definition(
    instrument_tag = "EURGBP_1M",
    underlying_type = option.UnderlyingType.FX,
    underlying_definition = option.FxUnderlyingDefinition("EURGBP"),
    barrier_definition = {'barrierMode': 'American', 'inOrOut': 'Out', 'upOrDown': 'Down', 'level': 0.85449},
    tenor = "1M",
    call_put = "Call",
    exercise_style = "EURO",
    strike = 0.8597,
    notional_amount = 1000000,
    notional_ccy = "EUR",
    pricing_parameters = option.PricingParameters(valuation_date = "2023-09-15T00:00:00Z")
).get_data()
 
response.data.df

1695023376486.png


1695023376486.png (62.6 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
25.2k 57 17 14

Hello @yaokoffi.kouassi

I suggest you contact the Codebook team about when will the app upgrade its libraries.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1.4k 5 3 6

Hi @yaokoffi.kouassi

Customer can also use a direct request to an endpoint:

import refinitiv.data as rd
import pandas as pd
rd.open_session()

request = rd.delivery.endpoint_request.Definition(
                        method=rd.delivery.endpoint_request.RequestMethod.POST,
                        url='https://api.refinitiv.com/data/quantitative-analytics/v1/financial-contracts',
                        body_parameters={"universe": [
    {
      "instrumentType": "Option",
      "instrumentDefinition": {
        "instrumentTag": "EURGBP_1M",
        "underlyingType": "FX",
        "underlyingDefinition": {
          "fxCrossCode": "EURGBP"
        },
        "barrierDefinition": {
          "level": 0.85449,
          "barrierMode": "American",
          "inOrOut": "Out",
          "upOrDown": "Down"
        },
        "tenor": "1M",
        "callPut": "Call",
        "exerciseStyle": "EURO",
        "strike": 0.8597,
        "notionalAmount": 1000000,
        "notionalCcy": "EUR"
      },
      "pricingParameters": {
        "valuationDate": "2023-09-15"
      }
    }
  ]
})
response = request.get_data()
names = [i["name"] for i in response.data.raw["headers"]]
pd.DataFrame(response.data.raw["data"], columns=names)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
43 2 5 8

Thanks guys for your reply.

The customer will use the script in Codebook.

I've contacted Codebook team to have a date for the release and I will inform the client.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.