Historical Reference for RIC identifier: All identifier invalid. No Extraction performed

Options
dirk
dirk Newcomer

I try to extract the Historical reference for certain RICs. It works with ChainRICs but when I enter a RIC, there is an error of invalid identifier.

See the code example

 string[] requestedFieldNames = {
"RIC",
"RIC Root",
"Expiration Date"};

//Create the request
var extractionRequest = new HistoricalReferenceExtractionRequest()
{ IdentifierList = new InstrumentIdentifierList()
{ InstrumentIdentifiers = new[] { new InstrumentIdentifier { IdentifierType = IdentifierType.Ric, Identifier = "HOZ5" } }
},
Condition = new HistoricalReferenceCondition()
{ ReportDateRangeType = ReportDateRangeType.Range,
//QueryStartDate = new DateTimeOffset(new DateTime(2014, 1, 1)),
//QueryEndDate = new DateTimeOffset(new DateTime(2014, 1, 31))
QueryStartDate = new DateTimeOffset(new DateTime(2015, 12, 1)),
QueryEndDate = new DateTimeOffset(new DateTime(2015, 12, 4))
},
ContentFieldNames = requestedFieldNames
};
  //Extract - NOTE: If the extraction request takes more than 30 seconds the async mechansim will be used.  See Key Mechanisms 
var extractionResult = ExtractionsContext.ExtractWithNotes(extractionRequest);
var extractedRows = extractionResult.Contents;

Best Answer

  • Christiaan Meihsl
    Answer ✓

    @dirk, yes you are right of course. Sorry, my mistake, I was looking for a current instrument, not a historical one.

    When I use your code I get a "Not found" error, and the extraction notes contain:

    All identifiers were invalid.  No extraction performed.

    Cause: by default historical instruments are not included in the results.

    Solution: you need to add a validation option to allow historical instruments. The following code should get the data you want:

    var extractionRequest = new HistoricalReferenceExtractionRequest()
    {
    IdentifierList = new InstrumentIdentifierList()
    {
    InstrumentIdentifiers = new[] {
    new InstrumentIdentifier { IdentifierType = IdentifierType.Ric, Identifier = "HOZ5" }
    },
    ValidationOptions = new InstrumentValidationOptions() {
    AllowHistoricalInstruments = true
    }
    },
    Condition = new HistoricalReferenceCondition()
    {
    ReportDateRangeType = ReportDateRangeType.Range,
    QueryStartDate = new DateTimeOffset(new DateTime(2015, 12, 01)),
    QueryEndDate = new DateTimeOffset(new DateTime(2015, 12, 04))
    },
    ContentFieldNames = requestedFieldNames
    };

    Just to illustrate, the following code sets all validation options, and disables the user preferences for this call (because we are overriding them with our validation options):

    var extractionRequest = new HistoricalReferenceExtractionRequest()
    {
    IdentifierList = new InstrumentIdentifierList()
    {
    InstrumentIdentifiers = new[] {
    new InstrumentIdentifier { IdentifierType = IdentifierType.Ric, Identifier = "HOZ5" }
    },
    ValidationOptions = new InstrumentValidationOptions() {
    AllowHistoricalInstruments = true,
    AllowOpenAccessInstruments = false,
    UseExchangeCodeInsteadOfLipper = true,
    ExcludeFinrAsPricingSourceForBonds = false,
    UseConsolidatedQuoteSourceForCanada = false,
    UseConsolidatedQuoteSourceForUsa = false,
    UseUsQuoteInsteadOfCanadian = true
    },
    UseUserPreferencesForValidationOptions = false
    },
    Condition = new HistoricalReferenceCondition()
    {
    ReportDateRangeType = ReportDateRangeType.Range,
    QueryStartDate = new DateTimeOffset(new DateTime(2015, 12, 01)),
    QueryEndDate = new DateTimeOffset(new DateTime(2015, 12, 04))
    },
    ContentFieldNames = requestedFieldNames
    };

    Hope this helps.

Answers