Ariticle

Shareholding Disclosures Data Through DataScope Solutions

Author:

Anantha Jagannath
Customer Success Manager Customer Success Manager
Jirapongse Phuriphanvichai
Developer Advocate Developer Advocate

Disclaimer

In order to reproduce the sample below, you will need to have valid credentials for DataScope Select. The source code in this article was simplified for illustration purposes, you can find the full project here.

Overview – What is Shareholding Disclosure

The company finances its overall operations and growth by using different sources of funds. Debt comes in the form of bond issues or long-term notes payable, while equity is classified as common or preferred stock. Share capital is formed from equity (common/ordinary and preferred stock) and respective par values. 

Shares represent ownership of a company. When an individual buys shares in your company, he/she becomes one of its owners. Shareholders choose who runs a company and are involved in making key decisions, such as whether a business should be sold.

Increasingly stringent regulatory requirements mandate that asset managers monitor any changes in their equity, sovereign debt, and related derivative positions in each issuer and disclose when applicable thresholds and rules are breached. Finding accurate data to comply with the intricacies of the rules that differ for each regulatory authority around the world creates a significant challenge. 

Market Trends & Competition:

Regulators around the world have mandated market participants to make disclosures on their holdings of instruments that have a “similar economic effect” to equities when they accumulate a substantial shareholding in an entity, invest in a protected industry, become involved in a takeover bid or engage in short selling. 

Today’s challenges for reporting include: 

  • Shareholdings Disclosure Regulations are both ubiquitous and heterogeneous
  • This creates a challenge for individuals and institutions holding shares across multiple jurisdictions:
    • Unique reporting rules
    • Frequency of reporting
    • Format of disclosure
    • The types of data that will need to be included
  • Buy-side and sell-side institutions need to thereby continually monitor changes in their shareholdings and compare these with the disclosure triggers specified by local regulators
  • Record inflows into Equity funds and ETFs
  • Seeking alpha in new global jurisdictions
  • Regulatory fines are increasing for non-disclosure of assets

Read More: French financial watchdog says Elliott 'obstructed' investigation that led to 20 million euro fine

The LSEG DataScope Solutions

LSEG PRS data includes 15 different types of total shares and total voting rights, allowing you to monitor your positions by providing an accurate denominator. In addition, we provide a comprehensive set of reference data integral to the numerator calculation process. Our data helps you meet the challenges presented by globally diverse regulations relating to Major, Short, Takeover, and Industry-specific disclosure rules and thresholds. LSEG helps you answer the reporting challenge.

Our data for Shareholding Disclosures is a primary source used by many of the world’s largest asset managers to fuel their disclosure processes. Our solution has been developed in partnership with large buy-side institutions to specifically respond to their data challenges. 

Our offering features:

  • Shares and voting rights collected from over 150 reliable and timely sources, as well as regular filings from over 70,000 listed companies, providing coverage for 100 countries
  • Total shares, voting rights, and voting shares data at the instrument and issuer level for all classes of shares relevant to deriving an accurate denominator (including unlisted share classes)
  • All share types (issued, listed, outstanding, treasury), covered at both instrument level and derived at the issuer level.
  • Reference data and analytics required to support disclosures (e.g., industry classifications, market segment identifiers, underlying asset details and ratios for derivatives and depository receipts, underlying/instrument/issuer hierarchies, and more)
  • Sources that align to where regulators enforce a specific source stipulation (e.g., in the Netherlands, Hong Kong, etc.)
  • Total voting rights where nations allow variable voting rights per share dependent on holder circumstances (e.g., Florange Act in France)

In a nutshell:

  • Accuracy of shares and voting rights content
  • Precise and unique data
  • Outstanding service
  • Focus on quality assurance
  • Flexible delivery (customizable Web interface, which offers delivery by REST API, (S)FTP, CSV, and XML with custom file layout)

We are going to use a CSV file as an input, which will consist of two columns:

  • Security identifier type, CHR (ChainRIC), ISN (ISIN), CSP (CUSIP) or SED (SEDOL) or RIC (RIC) or File code (IPC)
  • Security identifier.

So, in our case, the file companies.csv will look like this: 

    	
            

IPC,1

IPC,81

IPC,1272

With this input file, we will get the following list of fields from DataScope Select.

Fields Asset  Description
Shares Amount Equity Amount of shares for this share type. The latest default record is returned.
Shares Amount Change Date Equity Date the number of shares is confirmed as being true; This value does not necessarily represent the date on which the number of shares is changed.
Shares Amount Type Equity Code indicating the share amount type (OUT, ISS, LIS, TRE, FFL, CLH, AUT or UNC).
Shares Amount Type Description Equity Description of Shares Amount Type.
Shares Outstanding Equity Total number of shares outstanding, issued or listed, including all equity issues issued by the company. Issues deemed non-primary issue by LSEG are excluded from total shares outstanding.
Total Shares - Default Equity Total number of shares for a company summing all classes of shares that qualify for inclusion using shares for the default share type. This will be the Outstanding, Listed or Issued number, depending on the market.
Total Shares - Default - Audit Equity Details of instruments, number of shares, conversion ratio and any other information included in calculating Total Shares - Default.
Total Shares - Default - Effective Date Equity Effective date for Total Shares - Default.
Total Shares - Issued Equity Total number of shares for a company summing all classes of share that qualify for inclusion using class level issued shares.
Total Shares - Issued - Audit Equity Details of instruments, number of shares, conversion ratio and any other information included in calculating Total Shares - Issued.
Total Shares - Issued - Effective Date Equity Effective date for Total Shares - Issued.
Total Shares - Listed Equity Total number of shares for a company summing all classes of share that qualify for inclusion using class level listed shares.
Total Shares - Listed - Audit Equity Details of instruments, number of shares, conversion ratio and any other information included in calculating Total Shares - Listed.
Total Shares - Listed - Effective Date Equity Effective date for Total Shares - Listed.
Total Shares - Outstanding Equity Total number of shares for a company summing all classes of share that qualify for inclusion using class level Outstanding shares.
Total Shares - Outstanding - Audit Equity Details of instruments, number of shares, conversion ratio and any other information included in calculating Total Shares - Outstanding.
Total Shares - Outstanding - Effective Date Equity Effective date for Total Shares - Outstanding.
Total Voting Shares - Default Equity Sum of the number of shares, with voting rights, for each class (that qualify for inclusion). For example: Number of A shares with voting rights + number of B shares with voting rights. Uses the Default share numbers in the calculation.
Total Voting Shares - Issued Equity Sum of the number of shares, with voting rights, for each class (that qualify for inclusion). For example: Number of A shares with voting rights + number of B shares with voting rights. Uses Issued share numbers in the calculation.
Total Voting Shares - Listed Equity Sum of the number of shares, with voting rights, for each class (that qualify for inclusion). For example: Number of A shares with voting rights + number of B shares with voting rights. Uses the Listed share numbers in the calculation.
Total Voting Shares - Outstanding Equity Sum of the number of shares, with voting rights, for each class (that qualify for inclusion). For example: Number of A shares with voting rights + number of B shares with voting rights. Uses the Outstanding share numbers in the calculation.
Total Voting Shares - Treasury Equity Sum of the number of shares, with voting rights, for each class (that qualify for inclusion). For example: Number of A shares with voting rights + number of B shares with voting rights. Uses the Treasury share numbers in the calculation.
Total Voting Shares - Unlisted Equity Sum of the number of Unlisted shares, with voting rights, for each share class that qualify for inclusion.

For more information regarding field descriptions, please refer to the LSEG DataScope Select Data Content Guide.

We are going to use the following DataScope Select templates:

  • Composite

So, we are going to establish a connection to DataScope Select, upload the companies.csv input file, then extract the fields from the composite template within DataScope Select.

Code

Prerequisites

In order to start working with the DataScope Select .NET SDK you will need to download the latest SDK, extract it, copy the following files into your solution folder and reference them in your IDE:

  • Microsoft.OData.Client.dll
  • Microsoft.OData.Core.dll
  • Microsoft.OData.Edm.dll
  • Microsoft.Spatial.dll
  • Newtonsoft.Json.dll
  • DataScope.Select.Core.RestApi.Common.dll
  • DataScope.Select.RestApi.Client.dll

For more information on how to install the SDK have a look at the DSS .NET SDK tutorial 1.

Connecting to the server

Firstly, we need to establish a connection to DataScope Select host and get a token. 

    	
            

DssClient dssClient = new DssClient();

dssClient.ConnectToServer(dssUserName.Value, dssPassword.Value);

Console.WriteLine("\nReturned session token: {0}\n",dssClient.SessionToken);

...

...

class DssClient

{

    private ExtractionsContext extractionsContext;

 

    private Uri dssUri = new Uri("https://selectapi.datascope.refinitiv.com/RestApi/v1/");

 

    public void ConnectToServer(string dssUserName, string dssUserPassword)

    {

        extractionsContext = new ExtractionsContext(dssUri, dssUserName, dssUserPassword);

    }

 

    public string SessionToken

    {

        //The session token is only generated if the server connection is successful.

        get { return extractionsContext.SessionToken; }

    }

...

}

The code sends the HTTP POST request message with the username and password to the https://selectapi.datascope.refinitiv.com/RestApi/v1/Authentication/RequestToken endpoint.

    	
            

{

  "Credentials": {

    "Username": <dss-user>,

    "Password": <dss-password>

  }

}

If the credential is valid, the HTTP response will contain a token. 

    	
            

{

    "@odata.context": "https://selectapi.datascope.refinitiv.com/RestApi/v1/$metadata#Edm.String",

    "value": "_i4exu5DBe-13t648x4WK93FkHUUU3cNj1cuULCQS-xJhkHLIsrjKAEt4qU8..."

}

Reading the input file

Once the connection to the host is established, our app will read the companies.csv input file, parse it and create an InstrumentIdentifier list.

    	
            

...

...

List<InstrumentIdentifier> instrumentIdentifiersList =

    PopulateInstrumentIdentifiersListFromFile(inputFileName.Value, errorFile);

...

...

private List<InstrumentIdentifier> PopulateInstrumentIdentifiersListFromFile(

    string instrumentIdentifiersInputFile, string errorOutputFile)

{

   

    StreamReader sr = new StreamReader(instrumentIdentifiersInputFile);

    List<InstrumentIdentifier> instrumentIdentifiersList = new List<InstrumentIdentifier>();

 

    ...

    bool endOfFile = false;

    while (!endOfFile)

    {

        Errors errorCode = Errors.NoError;

 

        fileLine = sr.ReadLine();

       

        ...

        //Parse the file line to extract the comma separated instrument type and code:

        if (errorCode == Errors.NoError && !endOfFile)

        {

            commaExistsInFileLine = (fileLine.IndexOf(",") >= 0);

            if (commaExistsInFileLine)

            {

                string[] splitLine = fileLine.Split(new char[] { ',' });

                identifierTypeString = splitLine[0];

                identifierCodeString = splitLine[1];

            }

            else

            {

                errorCode = Errors.BadLineFormat;  //Missing comma

                identifierTypeString = string.Empty;

                identifierCodeString = string.Empty;

            }

        }

 

        ...

        if (errorCode == Errors.NoError && !endOfFile)

        {

            //DSS can handle many types, here we only handle a subset:

            switch (identifierTypeString)

            {

                case "CHR": identifierType = IdentifierType.ChainRIC; break;

                case "CSP": identifierType = IdentifierType.Cusip; break;

                case "ISN": identifierType = IdentifierType.Isin; break;

                case "RIC": identifierType = IdentifierType.Ric; break;

                case "SED": identifierType = IdentifierType.Sedol; break;

                case "IPC": identifierType = IdentifierType.FileCode;break;

                default: errorCode = Errors.UnknownIdentifier; break;

            }

        }

 

        if (errorCode == Errors.NoError && !endOfFile)

        {

            //Add validated instrument identifier into our list:

            instrumentIdentifiersList.Add(new InstrumentIdentifier

            {

                IdentifierType = identifierType,

                Identifier = identifierCodeString

            });

            Console.WriteLine("Line " + fileLineNumber + ": " +

                identifierTypeString + " " + identifierCodeString + " loaded into array [" + i + "]");

            i++;

        }

 

        ...

    }  

 

    ...

 

    return instrumentIdentifiersList;

}

 

Creating an array of field names

We are going to extract the following fields from the composite report template.

  • RIC
  • Ticker
  • File Code
  • Exchange Code               
  • Asset SubType
  • Asset SubType Description
  • Refinitiv Classification Scheme
  • Refinitiv Classification Scheme Description
  • Shares Amount
  • Shares Amount Change Date
  • Shares Amount Type
  • Shares Amount Type Description
  • Shares Outstanding
  • Total Shares - Default
  • Total Shares - Default - Audit
  • Total Shares - Default - Effective Date
  • Total Shares - Issued
  • Total Shares - Issued - Audit
  • Total Shares - Issued - Effective Date
  • Total Shares - Listed
  • Total Shares - Listed - Audit
  • Total Shares - Listed - Effective Date
  • Total Shares - Outstanding
  • Total Shares - Outstanding - Audit
  • Total Shares - Outstanding - Effective Date
  • Total Voting Shares - Default
  • Total Voting Shares - Issued
  • Total Voting Shares - Listed
  • Total Voting Shares - Outstanding
  • Total Voting Shares - Treasury
  • Total Voting Shares - Unlisted

Thus, we create an array of these field names.

    	
            

...

string[] requestedFieldNames = CreateRequestedFieldNames();

...

...

private string[] CreateRequestedFieldNames()

{

 

    string[] requestedFieldNames = {

        "RIC",

        "Ticker",

        "File Code",

        "Exchange Code",               

        "Asset SubType",

        "Asset SubType Description",

        "Refinitiv Classification Scheme",

        "Refinitiv Classification Scheme Description",

        "Shares Amount",

        "Shares Amount Change Date",

        "Shares Amount Type",

        "Shares Amount Type Description",

        "Shares Outstanding",

        "Total Shares - Default",

        "Total Shares - Default - Audit",

        "Total Shares - Default - Effective Date",

        "Total Shares - Issued",

        "Total Shares - Issued - Audit",

        "Total Shares - Issued - Effective Date",

        "Total Shares - Listed",

        "Total Shares - Listed - Audit",

        "Total Shares - Listed - Effective Date",

        "Total Shares - Outstanding",

        "Total Shares - Outstanding - Audit",

        "Total Shares - Outstanding - Effective Date",

        "Total Voting Shares - Default",

        "Total Voting Shares - Issued",

        "Total Voting Shares - Listed",

        "Total Voting Shares - Outstanding",

        "Total Voting Shares - Treasury",

        "Total Voting Shares - Unlisted"

    };

    return requestedFieldNames;

}

Extracting Data

Now, we have an instrument list and an array of fields. Let us use the CompositeExtractionRequest object to extract data for all instruments.

    	
            

...

ExtractionResult extractionResult =

               dssClient.CreateAndRunCompositeExtraction(instrumentIdentifiersList.ToArray(), requestedFieldNames);

...

 

class DssClient

{

    ...

    public ExtractionResult CreateAndRunCompositeExtraction(InstrumentIdentifier[] instrumentIdentifiers, string[] contentFieldNames)

    {

        CompositeExtractionRequest extractionComposite = new CompositeExtractionRequest

        {

            IdentifierList = InstrumentIdentifierList.Create(instrumentIdentifiers),

            ContentFieldNames = contentFieldNames,            

        };

        //Run the extraction.

        //This call is blocking, it returns when the extraction is completed:

        return extractionsContext.ExtractWithNotes(extractionComposite);

    }

...

}

The code sends the HTTP POST request message with the following content in the body to the https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ExtractWithNotes endpoint.

The raw HTTP response contiains the extracted data and the Notes information. 

Parsing and displaying content

The .NET function returns the ExtractionResult object which contains extracted data and Notes information. The following code is used to parse and display the data and Noted information. Moreover, the extracted data is written to an output file (output.csv). 

    	
            

...

DssCollection<ExtractionRow> extractionDataRows = extractionResult.Contents;

 

DisplayExtractedDataFieldNames(extractionDataRows);

DisplayExtractedDataFieldValues(extractionDataRows);

DisplayExtractionNotes(extractionResult);

...

private void DisplayExtractedDataFieldNames(DssCollection<ExtractionRow> extractionDataRows)

{    

    StreamWriter sw = new StreamWriter(outputFileName.Value, true);   

    StringBuilder returnedFieldNames = new StringBuilder();

    ExtractionRow firstRow = extractionDataRows.First();

    foreach (string fieldName in firstRow.DynamicProperties.Keys)

    {

        returnedFieldNames.Append(fieldName);

        returnedFieldNames.Append(",");

    }

    sw.WriteLine(returnedFieldNames.ToString());

    DebugPrintAndWaitForEnter("Returned list of field names:\n" + returnedFieldNames.ToString());

    

    sw.Close();

}

 

//Extract the actual data values, from all rows of returned data:

private void DisplayExtractedDataFieldValues(DssCollection<ExtractionRow> extractionDataRows)

{  

    StreamWriter sw = new StreamWriter(outputFileName.Value, true);

    string rowValuesInString = string.Empty;

    int validDataRows = 0;

    foreach (ExtractionRow row in extractionDataRows)

    {

        IEnumerable<object> rowValues = row.DynamicProperties.Select(dp => dp.Value);

        rowValuesInString = String.Join(", ", rowValues);

        if (rowValuesInString != string.Empty)

        {

            Console.WriteLine(rowValuesInString);

            sw.WriteLine(rowValuesInString);

            validDataRows++;

        }

    }

    

    sw.Close();

}

 

//Display the extraction notes:

private void DisplayExtractionNotes(ExtractionResult extractionResult)

{

    Console.WriteLine("Extraction Notes:");

    Console.WriteLine("=================");

    foreach (string note in extractionResult.Notes)

        Console.WriteLine(note);

    

}

Run the example

The example accepts four optional parameters.

    	
            

Usage:

        -u, --username[optional]... DSS Username

 

        -p, --password[optional]... DSS Password

 

        -i, --input[optional]... Input CSV file name (companies.csv)

 

        -o, --output[optional]... Output file name (output.csv)

The output when running the example is:

    	
            

Returned session token: _QITEBR0PiIKkGQpcmNgsEZVnr...

 

 

Delete an output file: output.csv

 

Line 1: IPC 1 loaded into array [0]

Line 2: IPC 81 loaded into array [1]

Line 3: IPC 1272 loaded into array [2]

 

Extract the following fields:

RIC

Ticker

File Code

Exchange Code

Asset SubType

Asset SubType Description

Refinitiv Classification Scheme

Refinitiv Classification Scheme Description

Shares Amount

Shares Amount Change Date

Shares Amount Type

Shares Amount Type Description

Shares Outstanding

Total Shares - Default

Total Shares - Default - Audit

Total Shares - Default - Effective Date

Total Shares - Issued

Total Shares - Issued - Audit

Total Shares - Issued - Effective Date

Total Shares - Listed

Total Shares - Listed - Audit

Total Shares - Listed - Effective Date

Total Shares - Outstanding

Total Shares - Outstanding - Audit

Total Shares - Outstanding - Effective Date

Total Voting Shares - Default

Total Voting Shares - Issued

Total Voting Shares - Listed

Total Voting Shares - Outstanding

Total Voting Shares - Treasury

Total Voting Shares - Unlisted

 

Extracting CompositeExtractionRequest...

 

Extraction Completed:

 

Returned list of field names:

RIC,Ticker,File Code,Exchange Code,Asset SubType,Asset SubType Description,Refinitiv Classification Scheme,Refinitiv Classification Scheme Description,Shares Amount,Shares Amount Change Date,Shares Amount Type,Shares Amount Type Description,Shares Outstanding,Total Shares - Default,Total Shares - Default - Audit,Total Shares - Default - Effective Date,Total Shares - Issued,Total Shares - Issued - Audit,Total Shares - Issued - Effective Date,Total Shares - Listed,Total Shares - Listed - Audit,Total Shares - Listed - Effective Date,Total Shares - Outstanding,Total Shares - Outstanding- Audit,Total Shares - Outstanding - Effective Date,Total Voting Shares - Default,Total Voting Shares - Issued,Total Voting Shares - Listed,Total Voting Shares - Outstanding,Total Voting Shares - Treasury,Total Voting Shares - Unlisted,

 

Press Enter to continue

 

0001.HK, 1, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 3834484500, 4/4/2022 12:00:00 AM, OUT, Outstanding, , 3834484500, <Shs><I PILC="131070920" ST="DEF" SHSSPE="3834484500.0" RS="0001stat.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-04"/></Shs>, 4/4/2022 12:00:00 AM, 3834484500, <Shs><I PILC="131070920" ST="ISS" SHSSPE="3834484500.0" RS="0001stat.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-04"/></Shs>, 4/4/2022 12:00:00 AM, 3834484500, <Shs><I PILC="131070920" ST="LIS" SHSSPE="3834484500.0" RS="0001stat.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-04"/></Shs>, 4/4/2022 12:00:00 AM, 3834484500, <Shs><I PILC="131070920" ST="OUT" SHSSPE="3834484500.0" RS="0001stat.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-04"/></Shs>, 4/4/2022 12:00:00 AM, 3834484500, 3834484500, 3834484500, 3834484500, 0, 

0002.HK, 2, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 2526450570, 12/31/2014 12:00:00 AM, OUT, Outstanding, , 2526450570, <Shs><I PILC="114775" ST="DEF" SHSSPE="2526450570.0" RS="0002.HK" ShsF="1.000000000000000e+000" SHSDT="2014-12-31"/></Shs>, 12/31/2014 12:00:00 AM, 2526450570, <Shs><I PILC="114775" ST="ISS" SHSSPE="2526450570.0" RS="0002.HK" ShsF="1.000000000000000e+000" SHSDT="2016-12-31"/></Shs>, 12/31/2016 12:00:00 AM, 2526450570, <Shs><I PILC="114775" ST="LIS" SHSSPE="2526450570.0" RS="0002.HK" ShsF="1.000000000000000e+000" SHSDT="2014-12-31"/></Shs>, 12/31/2014 12:00:00 AM, 2526450570, <Shs><I PILC="114775" ST="OUT" SHSSPE="2526450570.0" RS="0002.HK" ShsF="1.000000000000000e+000" SHSDT="2014-12-31"/></Shs>, 12/31/2014 12:00:00 AM, 2526450570, 2526450570, 2526450570, 2526450570, 0, 

0003.HK, 3, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 18659870098, 6/21/2021 12:00:00 AM, OUT, Outstanding, , 18659870098, <Shs><I PILC="114870" ST="DEF" SHSSPE="18659870098.0" RS="HOKCF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-06-21"/></Shs>, 6/21/2021 12:00:00 AM, 18659870098, <Shs><I PILC="114870" ST="ISS" SHSSPE="18659870098.0" RS="HOKCF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-06-21"/></Shs>, 6/21/2021 12:00:00 AM, 18659870098, <Shs><I PILC="114870" ST="LIS" SHSSPE="18659870098.0" RS="HOKCF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-06-21"/></Shs>, 6/21/2021 12:00:00 AM, 18659870098, <Shs><I PILC="114870" ST="OUT" SHSSPE="18659870098.0" RS="HOKCF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-06-21"/></Shs>, 6/21/2021 12:00:00 AM, 18659870098, 18659870098, 18659870098, 18659870098, 0, 

0004.HK, 4, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 3056027327, 7/6/2021 12:00:00 AM, OUT, Outstanding, , 3056027327, <Shs><I PILC="525997" ST="DEF" SHSSPE="3056027327.0" RS="WARFF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-07-06"/></Shs>, 7/6/2021 12:00:00 AM, 3056027327, <Shs><I PILC="525997" ST="ISS" SHSSPE="3056027327.0" RS="WARFF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-07-06"/></Shs>, 7/6/2021 12:00:00 AM, 3056027327, <Shs><I PILC="525997" ST="LIS" SHSSPE="3056027327.0" RS="WARFF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-07-06"/></Shs>, 7/6/2021 12:00:00 AM, 3056027327, <Shs><I PILC="525997" ST="OUT" SHSSPE="3056027327.0" RS="WARFF.PK" ShsF="1.000000000000000e+000" SHSDT="2021-07-06"/></Shs>, 7/6/2021 12:00:00 AM, 3056027327, 3056027327, 3056027327, 3056027327, 0, 

0005.HK, 5, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 19968003046, 8/4/2022 12:00:00 AM, OUT, Outstanding, , 19968003046, <Shs><I PILC="701494" ST="DEF" SHSSPE="19968003046.0" RS="HSBA.L" ShsF="1.000000000000000e+000" SHSDT="2022-08-04"/></Shs>, 8/4/2022 12:00:00 AM, 20293276453, <Shs><I PILC="701494" ST="ISS" SHSSPE="20293276453.0" RS="HSBA.L" ShsF="1.000000000000000e+000" SHSDT="2022-08-04"/></Shs>, 8/4/2022 12:00:00 AM, 20049325983, <Shs><I PILC="701494" ST="LIS" SHSSPE="20049325983.0" RS="HSBA.L" ShsF="1.000000000000000e+000" SHSDT="2017-04-30"/></Shs>, 4/30/2017 12:00:00 AM, 19968003046, <Shs><I PILC="701494" ST="OUT" SHSSPE="19968003046.0" RS="HSBA.L" ShsF="1.000000000000000e+000" SHSDT="2022-08-04"/></Shs>, 8/4/2022 12:00:00 AM, 19968003046, 20293276453, 20049325983, 19968003046, 325273407, 

0006.HK, 6, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 2134261654, 10/31/2014 12:00:00 AM, OUT, Outstanding, , 2134261654, <Shs><I PILC="309611" ST="DEF" SHSSPE="2134261654.0" RS="HGKGF.PK" ShsF="1.000000000000000e+000" SHSDT="2014-10-31"/></Shs>, 10/31/2014 12:00:00 AM, 2134261654, <Shs><I PILC="309611" ST="ISS" SHSSPE="2134261654.0" RS="HGKGF.PK" ShsF="1.000000000000000e+000" SHSDT="2016-12-31"/></Shs>, 12/31/2016 12:00:00 AM, 2134261654, <Shs><I PILC="309611" ST="LIS" SHSSPE="2134261654.0" RS="HGKGF.PK" ShsF="1.000000000000000e+000" SHSDT="2014-10-31"/></Shs>, 10/31/2014 12:00:00 AM, 2134261654, <Shs><I PILC="309611" ST="OUT" SHSSPE="2134261654.0" RS="HGKGF.PK" ShsF="1.000000000000000e+000" SHSDT="2014-10-31"/></Shs>, 10/31/2014 12:00:00 AM, 2134261654, 2134261654, 2134261654, 2134261654, 0, 

0007.HK, 7, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 5804281394, 5/31/2022 12:00:00 AM, OUT, Outstanding, , 5804281394, <Shs><I PILC="8345910" ST="DEF" SHSSPE="5804281394.0" RS="0007.HK" ShsF="1.000000000000000e+000" SHSDT="2022-05-31"/></Shs>, 5/31/2022 12:00:00 AM, 5804281394, <Shs><I PILC="8345910" ST="ISS" SHSSPE="5804281394.0" RS="0007.HK" ShsF="1.000000000000000e+000" SHSDT="2022-05-31"/></Shs>, 5/31/2022 12:00:00 AM, 5804281394, <Shs><I PILC="8345910" ST="LIS" SHSSPE="5804281394.0" RS="0007.HK" ShsF="1.000000000000000e+000" SHSDT="2022-05-31"/></Shs>, 5/31/2022 12:00:00 AM, 5804281394, <Shs><I PILC="8345910" ST="OUT" SHSSPE="5804281394.0" RS="0007.HK" ShsF="1.000000000000000e+000" SHSDT="2022-05-31"/></Shs>, 5/31/2022 12:00:00 AM, 5804281394, 5804281394, 5804281394, 5804281394, 0, 

0008.HK, 8, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 7739638249, 4/28/2022 12:00:00 AM, OUT, Outstanding, , 7739638249, <Shs><I PILC="1544527" ST="DEF" SHSSPE="7739638249.0" RS="0008.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-28"/></Shs>, 4/28/2022 12:00:00 AM, 7739638249, <Shs><I PILC="1544527" ST="ISS" SHSSPE="7739638249.0" RS="0008.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-28"/></Shs>, 4/28/2022 12:00:00 AM, 7739638249, <Shs><I PILC="1544527" ST="LIS" SHSSPE="7739638249.0" RS="0008.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-28"/></Shs>, 4/28/2022 12:00:00 AM, 7739638249, <Shs><I PILC="1544527" ST="OUT" SHSSPE="7739638249.0" RS="0008.HK" ShsF="1.000000000000000e+000" SHSDT="2022-04-28"/></Shs>, 4/28/2022 12:00:00 AM, 7739638249, 7739638249, 7739638249, 7739638249, 0, 

0009.HK, 9, 1, HKG, ODSH, Ordinary shares, ORD, Ordinary Shares, 3568790629, 7/13/2018 12:00:00 AM, OUT, Outstanding, , 3568790629, <Shs><I PILC="10285919" ST="DEF" SHSSPE="3568790629.0" RS="0009.HK" ShsF="1.000000000000000e+000" SHSDT="2018-07-13"/></Shs>, 7/13/2018 12:00:00 AM, 3568790629, <Shs><I PILC="10285919" ST="ISS" SHSSPE="3568790629.0" RS="0009.HK" ShsF="1.000000000000000e+000" SHSDT="2018-07-13"/></Shs>, 7/13/2018 12:00:00 AM, 3568790629, <Shs><I PILC="10285919" ST="LIS" SHSSPE="3568790629.0" RS="0009.HK" ShsF="1.000000000000000e+000" SHSDT="2018-07-13"/></Shs>, 7/13/2018 12:00:00 AM, 3568790629, <Shs><I PILC="10285919" ST="OUT" SHSSPE="3568790629.0" RS="0009.HK" ShsF="1.000000000000000e+000" SHSDT="2018-07-13"/></Shs>, 7/13/2018 12:00:00 AM, 3568790629, 3568790629, 3568790629, 3568790629, 0, 

...

...

 

Extraction completed.

Number of data rows: 6381

Number of valid (non empty) data rows: 6381

 

Output was also written to file.

Press Enter to continue

 

Extraction Notes:

=================

Extraction Services Version 16.1.44123 (ed92f5e3e332), Built Aug 10 2022 01:59:20

Holiday Rollover of Universal Close Price waived.

Processing started at 08/31/2022 07:19:24.

User ID: 9008895

Extraction ID: 611725960

Correlation ID: CiD/9008895/wkB8Vw.082626ee94ee2a88/RA/EXT.611725960

Schedule: _OnD_0x082626ee94fe2a88 (ID = 0x082626ee97fe2a88)

Input List (3 items): _OnD_0x082626ee94fe2a88 (ID = 082626ee951e2a88) Created: 08/31/2022 07:19:21 Last Modified: 08/31/2022 07:19:22

Delisted RICs are not included in the file code expansion.

File code 1 expanded to 2885 RICS: 0001.HK to 9999.HK.

File code 81 expanded to 1554 RICS: AACG.O to ZYNE.O.

File code 1272 expanded to 1942 RICS: AAA to ZZV.

Total instruments after instrument expansion = 6381

Schedule Time: 08/31/2022 07:19:22

Report Template (37 fields): _OnD_0x082626ee94fe2a88 (ID = 0x082626ee950e2a88) Created: 08/31/2022 07:19:22 Last Modified: 08/31/2022 07:19:22

Column 'Shares Outstanding' suppressed for lack of 'Premium Reference' permission.

Processing completed successfully at 08/31/2022 07:21:14, taking 110 Secs.

Extraction finished at 08/31/2022 06:21:14 UTC, with servers: x03E03, QSDHA1 (0.0 secs), QSHC20 (21.4 secs), QSa01a (72.3 secs)

Usage Summary for User 9008895, Client 65507, Template Type Composite

Base Usage

        Instrument                          Instrument                   Terms          Price

  Count Type                                Subtype                      Source         Source

------- ----------------------------------- ---------------------------- -------------- ----------------------------------------

   6381 Equities                                                         N/A            N/A

-------

   6381 Total instruments charged.

      0 Instruments with no reported data.

=======

   6381 Instruments in the input list.

No Evaluated Pricing Service complex usage to report -- 6381 Instruments in the input list had no reported data.

Writing RIC maintenance report.

 

Identifier,IdentType,Source,RIC,RecordDate,MaintType,OldValue,NewValue,Factor,FactorType

0018.HK,RIC,HKG,0018.HK,08/23/2022,SPLT,,,.957746,

0077.HK,RIC,HKG,0077.HK,08/30/2022,SPLT,,,.954545,

0125.HK,RIC,HKG,0125.HK,08/24/2022,SPLT,,,.985849,

0151.HK,RIC,HKG,0151.HK,08/25/2022,SPLT,,,.961631,

0630.HK,RIC,HKG,0630.HK,08/22/2022,SPLT,,,5,

1170.HK,RIC,HKG,1170.HK,08/30/2022,SPLT,,,.980198,

3893.HK,RIC,HKG,3893.HK,08/23/2022,SPLT,,,10,

8193.HK,RIC,HKG,8193.HK,08/31/2022,SPLT,,,5,

9896.HK,RIC,HKG,9896.HK,08/30/2022,SPLT,,,.99663,

AIRS.O,RIC,NMQ,AIRS.O,08/25/2022,SPLT,,,.958544,

BTMD.O,RIC,NMQ,BTMD.O,08/27/2022,FLCH,1584,81,,

BTMD.O,RIC,NMQ,BTMD.O,08/27/2022,RENM,BTMD.PK,BTMD.O,,

NOGN.O,RIC,NMQ,NOGN.O,08/30/2022,FLCH,118,81,,

NOGN.O,RIC,NMQ,NOGN.O,08/30/2022,RENM,SWAG.O,NOGN.O,,

WEST.O,RIC,NMQ,WEST.O,08/27/2022,FLCH,118,81,,

WEST.O,RIC,NMQ,WEST.O,08/27/2022,RENM,RVAC.O,WEST.O,,

 

 

Press Enter to continue

Summary

DataScope Select can provide shareholding disclosure data through the Composite report template. The data can be extracted via DataScope Select Web GUI or DataScope Select REST API. This article explains the significance of shareholding disclosure data and how to retrieve the data via the DataScope Select REST API. It also provides the example that uses DataScope Select .NET SDK to extract this information from DataScope Select. 

References

  1. Reuters. 2020. French financial watchdog says Elliott 'obstructed' investigation that led to 20 million euro fine. [online] Available at: <https://www.reuters.com/article/us-france-elliott-regulator-idUSKCN2240R1> [Accessed 31 August 2022].
  2. LSEG.com. 2022. Shareholding Disclosure. [online] Available at: <https://www.lseg.com/en/data-analytics/market-data/data-analytics-pricing/shareholding-disclosure> [Accessed 31 August 2022].