Resolve RICs from multiple SEDOLs

I have an application that snapshots thousands of equities from the RFA API. I don't always have the most up-to-date RIC and would like to resolve these from a SEDOL. From answers in the portal, it seems the only way to do this is by leveraging some of the Reuters RESTful APIs.

I've found that this code both works and is very slow:

var extractionsContext = new ExtractionsContext(serviceUri, token);
var onlyEquities = new[] { InstrumentTypeGroup.Equities };
foreach (var sedol in sedols)
{
var sedolresult = extractionsContext.InstrumentSearch(IdentifierType.Sedol, sedol, onlyEquities, IdentifierType.Ric, 1).FirstOrDefault();
if (null == sedolresult) continue;
if (sedolresult.IdentifierType != IdentifierType.Ric) continue;
//Do something with sedol/ric pair
}

Is there a way to do this in a single call?

Best Answer

  • tradingTech, you can do it using a T&C (Terms and Conditions) request, in one call for all instruments:

    POST https://hosted.datascopeapi.reuters.com/RestApi/v1/Extractions/Extract

    {
    "ExtractionRequest": {
    "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.TermsAndConditionsExtractionRequest",
    "ContentFieldNames": [
    "RIC", "Currency Code", "Exchange Code"
    ],
    "IdentifierList": {
    "@odata.type": "#ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.InstrumentIdentifierList",
    "InstrumentIdentifiers": [
    { "Identifier": "5641567", "IdentifierType": "Sedol" },
    { "Identifier": "B1YW440", "IdentifierType": "Sedol" },
    { "Identifier": "5231485", "IdentifierType": "Sedol" },
    { "Identifier": "BH4HKS3", "IdentifierType": "Sedol" }
    ],
    "ValidationOptions": { "AllowHistoricalInstruments": true },
    "UseUserPreferencesForValidationOptions": false
    }
    }
    }

    Result:

    {
    "@odata.context": "https://hosted.datascopeapi.reuters.com/RestApi/v1/$metadata#Collection(ThomsonReuters.Dss.Api.Extractions.ExtractionRequests.ExtractionRow)",
    "value": [
    {
    "IdentifierType": "Sedol",
    "Identifier": "5641567",
    "RIC": "CARR.PA",
    "Currency Code": "EUR",
    "Exchange Code": "PAR"
    },
    {
    "IdentifierType": "Sedol",
    "Identifier": "B1YW440",
    "RIC": "LP71000002",
    "Currency Code": "GBp",
    "Exchange Code": "LIP"
    },
    {
    "IdentifierType": "Sedol",
    "Identifier": "5231485",
    "RIC": "ALVG.DE",
    "Currency Code": "EUR",
    "Exchange Code": "GER"
    },
    {
    "IdentifierType": "Sedol",
    "Identifier": "BH4HKS3",
    "RIC": "VOD.L",
    "Currency Code": "GBp",
    "Exchange Code": "LSE"
    }
    ]
    }

    Comments:

    • I added the currency and exchange codes to the result, you may not require this.
    • I set ValidationOptions to Allow Historical Instruments. If you are snapping prices with RFA you will probably only require current ones, in which case you could set that parameter to false.
    • I also set UseUserPreferencesForValidationOptions to override the user preferences in the GUI. Again, this is just a choice.
    • For more info on this call, see this DSS REST API Tutorial 7: On Demand T&C extraction (it also applies for TRTH).
    • For more info on how to convert from Sedols to RICs, see this article. It is about ISIN to RIC conversion, but applies to SEDOL to RIC as well.

Answers