StreamingPrices does not update when open() is not called infront of it every time.
Hello,
>>> rdp.__version__
'1.0.0a12'
I am bit confused about the lack of updates on rdp.StreamingPrices when the function is.open() is not used every time in front of get_snapshot. In the end I want to make this data available to my application and not to read it from the console. Is this normal behavior. Normally with stream state open I would expect that a snapshot delivers the actual value every time and not a valid from 5 minutes ago.
What is the best way to deal with this issue?
case1: Is.open is only used 1x and data is apparently flowing in according to print statement. Here is valid that no update on get_snapshot can be observed:
>>> def display_fields(streaming_prices, instrument_name, fields):
... print("Fields received for", instrument_name, ":", fields)
...
>>> streaming_prices = rdp.StreamingPrices(
... universe = ['EUR=','GBP=','JPY=', 'CAD='],
... fields = ['SALTIM', 'CF_BID','CF_ASK','OPEN_PRC', 'CF_HIGH','CF_LOW', 'CF_CLOSE'],
... on_refresh = lambda streaming_prices, instrument_name, fields :
... display_fields(streaming_prices, instrument_name, fields),
... on_update = lambda streaming_prices, instrument_name, fields :
... display_fields(streaming_prices, instrument_name, fields)
... )
>>> streaming_prices.open()
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132, 'OPEN_PRC': 1.1144, 'CF_HIGH': 1.1155, 'CF_LOW': 1.1122, 'CF_CLOSE': 1.1143}
Fields received for EUR= : {'CF_BID': 1.113, 'CF_ASK': 1.1134}
Fields received for EUR= : {'CF_BID': 1.1129, 'CF_ASK': 1.1133}
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132}
Fields received for GBP= : {'CF_BID': 1.3387, 'CF_ASK': 1.3391, 'OPEN_PRC': 1.3378, 'CF_HIGH': 1.3415, 'CF_LOW': 1.3366, 'CF_CLOSE': 1.3385}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792, 'OPEN_PRC': 1.2741, 'CF_HIGH': 1.2796, 'CF_LOW': 1.2713, 'CF_CLOSE': 1.274}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61, 'OPEN_PRC': 115.35, 'CF_HIGH': 115.68, 'CF_LOW': 115.28, 'CF_CLOSE': 115.34}
<StreamState.Open: 3>
>>> streaming_prices.open()
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3387 1.3391 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2788 1.2792 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3387 1.3391 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2788 1.2792 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3387 1.3391 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2788 1.2792 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3387 1.3391 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2788 1.2792 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.state()
TypeError: 'StreamState' object is not callable
>>> streaming_prices.state
<StreamState.Open: 3>
Case2: is.open is used every time before get_snapshot and data is updated (now I get different prices):
>>> streaming_prices.state
<StreamState.Open: 3>
>>> streaming_prices.open()
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3387 1.3391 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2788 1.2792 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.open()
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1133}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2793}
Fields received for JPY= : {'CF_BID': 115.59, 'CF_ASK': 115.64}
Fields received for GBP= : {'CF_BID': 1.3387, 'CF_ASK': 1.3392}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.2791}
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1133}
Fields received for GBP= : {'CF_BID': 1.3388, 'CF_ASK': 1.339}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132}
Fields received for GBP= : {'CF_BID': 1.3387, 'CF_ASK': 1.3391}
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3388 1.339 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2789 1.2791 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3388 1.339 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2789 1.2791 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.open()
Fields received for JPY= : {'CF_BID': 115.59, 'CF_ASK': 115.62}
Fields received for JPY= : {'CF_BID': 115.59, 'CF_ASK': 115.63}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.2791}
Fields received for GBP= : {'CF_BID': 1.3388, 'CF_ASK': 1.339}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.113 1.1134 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3388 1.3389 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2788 1.2792 1.2741 1.2796 1.2713 1.274
>>> streaming_prices.open()
Fields received for EUR= : {'CF_BID': 1.1131, 'CF_ASK': 1.1132}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.279}
Fields received for CAD= : {'CF_BID': 1.2787, 'CF_ASK': 1.2791}
Fields received for JPY= : {'CF_BID': 115.6, 'CF_ASK': 115.61}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
Fields received for CAD= : {'CF_BID': 1.2789, 'CF_ASK': 1.279}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
Fields received for GBP= : {'CF_BID': 1.3388, 'CF_ASK': 1.3389}
Fields received for EUR= : {'CF_BID': 1.113, 'CF_ASK': 1.1134}
Fields received for CAD= : {'CF_BID': 1.2788, 'CF_ASK': 1.2792}
<StreamState.Open: 3>
>>> streaming_prices.get_snapshot()
Instrument CF_BID CF_ASK OPEN_PRC CF_HIGH CF_LOW CF_CLOSE
0 EUR= 1.1131 1.1132 1.1144 1.1155 1.1122 1.1143
1 GBP= 1.3387 1.3391 1.3378 1.3415 1.3366 1.3385
2 JPY= 115.6 115.61 115.35 115.68 115.28 115.34
3 CAD= 1.2788 1.2792 1.2741 1.2796 1.2713 1.274
Best Answer
-
Hi @laurens
Unfortunately. neither myself nor members of the RDP Library team are experienced with R and the RefinitivR package you are using is not a Refinitiv product and therefore we are not able to offer any support for it.
It may be worth reaching out to the developer of RefinitivR - to see if they can shed some light on the issue you are facing.
You can also consider using the alternative Pricing Snapshot API I mentioned in one of my previous posts.
0
Answers
-
hi @laurens
Do you require asynchronous events as well as the ability to snap as and when required? Or just the ability to snap as and when required?
0 -
Hi
@umer.nalla,
I would prefer to do it without asyncio. As I am using it in R in the end. So I would like to have an object that creates the stream (non blocking) and then use get_snapshot to get the actual value from the stream.0 -
hi @laurens
I have tested this with a13 release and cannot recreate the issue:
Can you please retest with a13?
Also, if you are not interested in receiving the async event updates, you can just use the cache mechanism to snap as and when you want e.g.:
0 -
Hi @laurens
The code for the non-async technique was truncated in the snip above:
streaming_prices = rdp.StreamingPrices(
universe = ['EUR=','GBP=','JPY=', 'CAD='],
fields = ['QUOTIM_MS', 'CF_BID','CF_ASK']
)
streaming_prices.open()
## and then
streaming_prices.get_snapshot()
## as and when required...0 -
Hi @umer.nalla and @jason.ramchandani01 ,
From the attached screenshots I have the impression that these snippings are made in codebook. I don't use codebook as this can not be integrated with other information streams.
As a consequence of your reaction I tried with a completely fresh r-eikon conda environment in miniconda.
As can observed below also with the latest version of dataplatform and brand new miniconda and brand new conda environment no updates occur.
I get the impression that eventhough the stream state says it is open it is actually closed and get_snapshot gives the latest result it knows. when open() is called again the stream is open for a very short time again and get_snapshot shows the latest known value. So it looks rather than streaming prices it is more like a streamed_price.
Brand new Conda environment r-eikon as built by a newly installed miniconda
(r-eikon) PS C:\Users\XXXX> conda list
# packages in environment at C:\Users\XXXX\AppData\Local\R-MINI~1\envs\r-eikon:
#
# Name Version Build Channel
anyio 3.5.0 pypi_0 pypi
appdirs 1.4.4 pypi_0 pypi
ca-certificates 2021.10.8 h5b45459_0 conda-forge
certifi 2021.10.8 pypi_0 pypi
chardet 3.0.4 pypi_0 pypi
charset-normalizer 2.0.10 pypi_0 pypi
datetime 4.3 pypi_0 pypi
decorator 5.1.1 pypi_0 pypi
deprecation 2.1.0 pypi_0 pypi
eikon 1.1.14 pypi_0 pypi
eventemitter 0.2.0 pypi_0 pypi
h11 0.12.0 pypi_0 pypi
h2 3.2.0 pypi_0 pypi
hpack 3.0.0 pypi_0 pypi
httpcore 0.14.5 pypi_0 pypi
httpx 0.22.0 pypi_0 pypi
hyperframe 5.2.0 pypi_0 pypi
idna 2.10 pypi_0 pypi
nest-asyncio 1.5.4 pypi_0 pypi
numpy 1.22.1 pypi_0 pypi
openssl 3.0.0 h8ffe710_2 conda-forge
packaging 21.3 pypi_0 pypi
pandas 1.4.0 pypi_0 pypi
pip 21.3.1 pyhd8ed1ab_0 conda-forge
pyparsing 3.0.7 pypi_0 pypi
python 3.8.12 h900ac77_2_cpython conda-forge
python-configuration 0.8.2 pypi_0 pypi
python-dateutil 2.8.2 pypi_0 pypi
python_abi 3.8 2_cp38 conda-forge
pytz 2021.3 pypi_0 pypi
refinitiv-dataplatform 1.0.0a13 pypi_0 pypi
requests 2.27.1 pypi_0 pypi
rfc3986 1.5.0 pypi_0 pypi
scipy 1.7.3 pypi_0 pypi
setuptools 60.5.0 py38haa244fe_0 conda-forge
six 1.16.0 pypi_0 pypi
sniffio 1.2.0 pypi_0 pypi
sqlite 3.37.0 h8ffe710_0 conda-forge
ucrt 10.0.20348.0 h57928b3_0 conda-forge
urllib3 1.26.8 pypi_0 pypi
validators 0.18.2 pypi_0 pypi
vc 14.2 hb210afc_6 conda-forge
vs2015_runtime 14.29.30037 h902a5da_6 conda-forge
watchdog 2.1.6 pypi_0 pypi
websocket-client 1.2.3 pypi_0 pypi
wheel 0.37.1 pyhd8ed1ab_0 conda-forge
zope-interface 5.4.0 pypi_0 pypi
(r-eikon) PS C:\Users\XXXX>then I tested this with both reticulate::repl_python in r and with pycharm.
I also tested it in pycharm with the same result:
0 -
Hi @umer.nalla
As I could not fit in my reaction in this box please see the answer below for a reaction.
0 -
Hi @laurens
I am not familiar with R - so cannot assist much in this matter.
Bearing in mind that even with the caching technique, there is some behind the scenes async activity taking place - in order to allow the RDP library to continue receiving the asynchronous stream updates as they are received from the server and thereby keep the cache updated.
My guess is that with R, the stream connection is not remaining open and therefore you are having to continuously re-open it in order to receive your updates.
Hopefully, my colleague @jason.ramchandani01 or others may be able to provide some R based guidance.
One option could be to just open a non-streaming request each time you need to snap e.g.
streaming_prices.open(with_udpates = False)
Otherwise, another alternative you could explore is to use the non-realtime RDP Snapshot service - which is REST-based - requiring you to snap as an when required (via a REST mechanism).
For example with the newer RD Python library, the following makes a snap request using the RDP Snapshot API
# Define our RDP Snapshot Price object
response = rd.content.pricing.Definition(
['EUR=', 'GBP=', 'JPY=', 'CAD='],
fields=['BID', 'ASK']
).get_data()
display(response.data.df)Notice the get_data() call - as opposed to the get_snapshot() and no mention of Streaming Prices.
Please note that the RDP Snapshot API has different licencing compared to Real-Time streaming - so may not work with your desktop licence.
0 -
@laurens Sorry. to hear about your issue - I have tested this with
refinitiv-dataplatform==1.0.0a11
in a standalone python environment and it is working fine - updates are being received after I open the stream and i can see they are changing I snapshot every few seconds or so. Is it the a13 lib that is responsible have you tried to see if a11 lib works? Just a thought. Umer cannot replicate in a13. I am bit tied up at moment but i will try to look at this later.
Actually I just look at your new build - can you drop httpx back to 0.19.0 and nest-asyncio to 1.3.3 and see if that helps?
0 -
I have tested this with the current release of https://github.com/GreenGrassBlueOcean/RefinitivR
I have manually downgraded the environment as requested. I could unfortunately not simply downgrade only httpx and nest-asyncio :
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
refinitiv-dataplatform 1.0.0a13 requires h2==3.*, but you have h2 4.0.0 which is incompatible.
refinitiv-dataplatform 1.0.0a13 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires h2==3.*, but you have h2 4.0.0 which is incompatible.
eikon 1.1.14 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires nest-asyncio>=1.5.1, but you have nest-asyncio 1.3.3 which is incompatible.
Successfully installed anyio-3.5.0 httpcore-0.13.7 httpx-0.19.0
(r-reticulate) PS C:\Users\XXXX> pip install h2==3.2.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
refinitiv-dataplatform 1.0.0a13 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires idna==2.*, but you have idna 3.3 which is incompatible.
eikon 1.1.14 requires nest-asyncio>=1.5.1, but you have nest-asyncio 1.3.3 which is incompatible.
(r-reticulate) PS C:\Users\XXXX> pip install idna==2.1.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
requests 2.27.1 requires idna<4,>=2.5; python_version >= "3", but you have idna 2.1 which is incompatible.
eikon 1.1.14 requires nest-asyncio>=1.5.1, but you have nest-asyncio 1.3.3 which is incompatible.
anyio 3.5.0 requires idna>=2.8, but you have idna 2.1 which is incompatible.Unfortunatelly Eikon requires a newer version of nest asyncio than 1.3.3 . So the whole thing gets a bit messy now.
As can be observed from below: prices are only streaming after forcing $open() and I doubt if they are really streaming. There is also no check if prices are streaming or not. So there is no way to check if the data that you are looking at is old or actual. Quite dangerous in my eyes.
> rdp <- RDPConnect("key")
> universe = list("EUR=","JPY=", "GBP=", "HKD=")
> fields=list('DSPLY_NAME', 'BID', 'ASK', 'CF_TIME')
> StreamingPricesObject <- rdp$StreamingPrices(universe = universe, fields = fields)
> StreamingPricesObject$open()
StreamState.Open
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot
Instrument DSPLY_NAME BID ASK CF_TIME
0 EUR= SANTANDER HKG 1.142 1.1421 10:55:35
1 JPY= ZUERCHER KB ZUR 114.99 115.0 10:55:35
2 GBP= SANTANDER HKG 1.3492 1.3497 10:55:33
3 HKD= ZUERCHER KB ZUR 7.7933 7.7934 10:55:33
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot
Instrument DSPLY_NAME BID ASK CF_TIME
0 EUR= SANTANDER HKG 1.142 1.1421 10:55:35
1 JPY= ZUERCHER KB ZUR 114.99 115.0 10:55:35
2 GBP= SANTANDER HKG 1.3492 1.3497 10:55:33
3 HKD= ZUERCHER KB ZUR 7.7933 7.7934 10:55:33
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot
Instrument DSPLY_NAME BID ASK CF_TIME
0 EUR= SANTANDER HKG 1.142 1.1421 10:55:35
1 JPY= ZUERCHER KB ZUR 114.99 115.0 10:55:35
2 GBP= SANTANDER HKG 1.3492 1.3497 10:55:33
3 HKD= ZUERCHER KB ZUR 7.7933 7.7934 10:55:33
> StreamingPricesObject$open()
StreamState.Open
> py_snapshot <- StreamingPricesObject$get_snapshot()
> py_snapshot
Instrument DSPLY_NAME BID ASK CF_TIME
0 EUR= BARCLAYS LON 1.1418 1.1422 10:55:40
1 JPY= BARCLAYS LON 114.97 115.0 10:55:42
2 GBP= NEDBANK LTD JHB 1.3492 1.3496 10:55:42
3 HKD= BK OF CHINA HKG 7.7929 7.7934 10:55:41conda environment
(r-reticulate) PS C:\Users\XXXX> conda list
# packages in environment at C:\Users\XXXX\AppData\Local\R-MINI~1\envs\r-reticulate:
#
# Name Version Build Channel
anyio 3.5.0 pypi_0 pypi
appdirs 1.4.4 pypi_0 pypi
ca-certificates 2021.10.26 haa95532_4
certifi 2021.10.8 pypi_0 pypi
chardet 3.0.4 pypi_0 pypi
charset-normalizer 2.0.4 pyhd3eb1b0_0
dataclasses 0.6 pypi_0 pypi
datetime 4.3 pypi_0 pypi
decorator 5.1.1 pypi_0 pypi
deprecation 2.1.0 pypi_0 pypi
eikon 1.1.14 pypi_0 pypi
eventemitter 0.2.0 pypi_0 pypi
eventkit 0.8.9 pypi_0 pypi
h11 0.12.0 pyhd3eb1b0_0
h2 3.2.0 pypi_0 pypi
hpack 3.0.0 pypi_0 pypi
httpcore 0.13.7 pypi_0 pypi
httpx 0.19.0 py38haa244fe_0 conda-forge
hyperframe 5.2.0 pypi_0 pypi
ib-insync 0.9.70 pypi_0 pypi
idna 2.1 pypi_0 pypi
intel-openmp 2022.0.0 haa95532_3663
libblas 3.9.0 13_win64_mkl conda-forge
libcblas 3.9.0 13_win64_mkl conda-forge
liblapack 3.9.0 13_win64_mkl conda-forge
mkl 2022.0.0 h0e2418a_796 conda-forge
nest-asyncio 1.3.3 pypi_0 pypi
numpy 1.22.1 py38hcf66579_0 conda-forge
openssl 1.1.1m h2bbff1b_0
packaging 21.3 pypi_0 pypi
pandas 1.4.0 pypi_0 pypi
pip 21.2.2 py38haa95532_0
pyparsing 3.0.7 pypi_0 pypi
python 3.8.12 h6244533_0
python-configuration 0.8.2 pypi_0 pypi
python-dateutil 2.8.2 pypi_0 pypi
python_abi 3.8 2_cp38 conda-forge
pytz 2021.3 pypi_0 pypi
refinitiv-dataplatform 1.0.0a13 pypi_0 pypi
requests 2.27.1 pypi_0 pypi
rfc3986 1.4.0 pyhd3eb1b0_0
scipy 1.7.3 pypi_0 pypi
setuptools 58.0.4 py38haa95532_0
six 1.16.0 pypi_0 pypi
sniffio 1.2.0 py38haa95532_1
sqlite 3.37.2 h2bbff1b_0
tbb 2021.5.0 h59b6b97_0
urllib3 1.26.8 pypi_0 pypi
validators 0.18.2 pypi_0 pypi
vc 14.2 h21ff451_1
vs2015_runtime 14.27.29016 h5e58377_2
watchdog 2.1.6 pypi_0 pypi
websocket-client 1.2.3 pypi_0 pypi
wheel 0.37.1 pyhd3eb1b0_0
wincertstore 0.2 py38haa95532_2
zope-interface 5.4.0 pypi_0 pypi
(r-reticulate) PS C:\Users\XXXX>0
Categories
- All Categories
- 6 AHS
- 37 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛