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
- 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].
- 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].