Ariticle

Crypto-Asset & Blockchain Flags - Introduction to Regulatory Compliance for Digital assets & Cryptos in DataScope Suite of Products

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

The Securities and Futures Commission (SFC) and the Hong Kong Monetary Authority (HKMA) have received an increasing number of enquiries from intermediaries about distributing virtual asset1 -related products2 (VA-related products) to investors. Intermediaries are also interested in providing virtual asset dealing services3 to their clients.

The Hong Kong Securities and Futures Commission (SFC) issued a statement drawing attention to the risks associated with investing in non-fungible tokens (NFTs) and summarizing the legal and regulatory requirements applicable to NFTs.

This follows recent guidance from Hong Kong’s banking, securities, and insurance regulators to financial institutions looking to undertake virtual asset activities

In this article we would like to briefly explain the details about the Joint circular on intermediaries’ virtual asset-related activities and the DataScope Solutions that we offer.

On January 28, 2022, the Securities and Futures Commission (“SFC”) and the Hong Kong Monetary Authority (“HKMA”) issued a “Joint Circular on Intermediaries’ Virtual Asset Related Activities” (“2022 Crypto Regulation Circular”). This circular sets out the approach to regulating the distribution of crypto assets, comprising of what the circular calls “virtual assets” and “virtual asset related products”, as well as the provision of dealing and advisory services in respect of such assets. In this article, we provide an overview of the updated requirements and the data offerings that we provide in DataScope.

Read more: Joint circular on intermediaries’ virtual asset-related activities

“Virtual assets” refers to digital representations of value which may be in the form of digital tokens (such as utility tokens, stablecoins or security- or asset-backed tokens) or any other virtual commodities, crypto assets or other assets of essentially the same nature, irrespective of whether or not they amount to “securities” or “futures contracts” as defined under the Securities and Futures Ordinance (SFO), but excludes digital representations of fiat currencies issued by central banks.

Newer digital assets are based on blockchain or similar technologies:

  • Nonfungible tokens
  • Cryptocurrency
  • Tokens
  • Crypto Assets
  • Tokenized Assets
  • Security Tokens
  • Central Bank Digital Currencies

 

Regulatory Requirement & End User Impact:

Complex product regime:

  • Sustainability
  • Information &
  • Warning statement.

Additional investor protection measure under circular:

  • Selling restrictions.
  • Virtual asset knowledge.

Clients impacted:

  • Retain investors.
  • Intermediaries like private banks & equity brokers.
  • Global / regional remit

 

The LSEG DataScope Solutions

  1. A list of securities with Virtual Assets as underlying will be provided.
  2. The below mentioned solutions will scan your complete portfolio / instrument lists through data source for funds as well as exchange traded products
  3. Global exchanges or custom list of exchanges based on clients’ requirements.

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: 

    	
            

RIC,0863.HK

RIC,FDIG.O

RIC,3171.HK

RIC,BITS.O

RIC,BTCR.K

IPC,1

IPC,81

IPC,1272

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

  • RBC Classification.
  • Security Description.
  • Blockchain Flag (For Funds)
  • Cryptoasset Indicator Flag
  • Cryptocurrency Flag (For Funds)
Fields Asset Description
Blockchain Flag
  • Mutual Funds
y/n/null flag that indicates if fund assets are linked to blockchain technologies.
Cryptoasset Flag
  • Equities
  • Futures and Options
  • Commodities
y/null flag. Indicates whether the instruments is related to cryptocurrencies. For example, equities issued by companies in the crypto industry, derivatives with cryptocurrencies as underlying’s, exchange-traded products/funds invested in or tracks the performance of the cryptocurrencies.
Cryptocurrency Flag
  • Mutual Funds
y/n/null flag that indicates if fund assets are linked to cryptocurrencies directly or indirectly (companies involved in servicing crypto-asset markets, including crypto mining firms, crypto mining equipment suppliers, crypto financial services companies, or other financial institutions servicing primarily crypto-related clients).

We are going to use the following DataScope Select templates:

  • Terms and Conditions

Thus, we are going to establish a connection to DataScope Select, read the companies.csv input file, then extract these fields from terms and conditions report 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 Terms And Conditions report template.

  • RIC
  • Ticker
  • File Code
  • Exchange Code
  • Blockchain Flag
  • Cryptoasset Flag
  • Cryptocurrency Flag
  • Asset SubType
  • Asset SubType Description
  • Refinitiv Classification Scheme
  • Refinitiv Classification Scheme Description

Thus, we create an array of these field names.

    	
            

...

string[] requestedFieldNames = CreateRequestedFieldNames();

...

...

private string[] CreateRequestedFieldNames()

{

 

    string[] requestedFieldNames = { 

        "RIC", 

        "Ticker", 

        "File Code",

        "Exchange Code",

        "Blockchain Flag",

        "Cryptoasset Flag",

        "Cryptocurrency Flag",

        "Asset SubType",

        "Asset SubType Description",

        "Refinitiv Classification Scheme",

        "Refinitiv Classification Scheme Description"

    };

    return requestedFieldNames;

}

Extracting Data

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

    	
            

...

ExtractionResult extractionResult =

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

...

 

class DssClient

{

...

    public ExtractionResult CreateAndRunTandCExtraction(

        InstrumentIdentifier[] instrumentIdentifiers, string[] contentFieldNames)

    {

        TermsAndConditionsExtractionRequest extractionTandC = new TermsAndConditionsExtractionRequest

        {

            IdentifierList = InstrumentIdentifierList.Create(instrumentIdentifiers),

            ContentFieldNames = contentFieldNames,

        };

        return extractionsContext.ExtractWithNotes(extractionTandC);

    }

...

}

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.

    	
            

{

    "ExtractionRequest": {

        "@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.TermsAndConditionsExtractionRequest",

        "ContentFieldNames": [

            "RIC",

            "Ticker",

            "File Code",

            "Exchange Code",

            "Blockchain Flag",

            "Cryptoasset Flag",

            "Cryptocurrency Flag",

            "Asset SubType",

            "Asset SubType Description",

            "Refinitiv Classification Scheme",

            "Refinitiv Classification Scheme Description"

        ],

        "IdentifierList": {

            "@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.InstrumentIdentifierList",

            "InstrumentIdentifiers": [

                {

                    "Identifier": "0863.HK",

                    "IdentifierType": "Ric"

                },

                {

                    "Identifier": "FDIG.O",

                    "IdentifierType": "Ric"

                },

                {

                    "Identifier": "3171.HK",

                    "IdentifierType": "Ric"

                },

                {

                    "Identifier": "BITS.O",

                    "IdentifierType": "Ric"

                },

                {

                    "Identifier": "BTCR.K",

                    "IdentifierType": "Ric"

                },

                {

                    "Identifier": "1",

                    "IdentifierType": "FileCode"

                },

                {

                    "Identifier": "81",

                    "IdentifierType": "FileCode"

                },

                {

                    "Identifier": "1272",

                    "IdentifierType": "FileCode"

                }

            ]

        }

    }

}

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

    	
            

{

    "@odata.context": "https://selectapi.datascope.refinitiv.com/RestApi/v1/$metadata#DataScope.Select.Api.Extractions.ExtractionRequests.ExtractionResult",

    "Contents": [

        {

            "IdentifierType": "Ric",

            "Identifier": "0863.HK",

            "RIC": "0863.HK",

            "Ticker": "863",

            "File Code": "1",

            "Exchange Code": "HKG",

            "Blockchain Flag": null,

            "Cryptoasset Flag": "Y",

            "Cryptocurrency Flag": null,

            "Asset SubType": "ODSH",

            "Asset SubType Description": "Ordinary shares",

            "Refinitiv Classification Scheme": "ORD",

            "Refinitiv Classification Scheme Description": "Ordinary Shares"

        },

        {

            "IdentifierType": "Ric",

            "Identifier": "FDIG.O",

            "RIC": "FDIG.O",

            "Ticker": "FDIG",

            "File Code": "81",

            "Exchange Code": "NMQ",

            "Blockchain Flag": null,

            "Cryptoasset Flag": "Y",

            "Cryptocurrency Flag": null,

            "Asset SubType": "CDFN",

            "Asset SubType Description": "Closed Fund",

            "Refinitiv Classification Scheme": "ETFE",

            "Refinitiv Classification Scheme Description": "Equity ETFs"

        },

        {

            "IdentifierType": "Ric",

            "Identifier": "3171.HK",

            "RIC": "3171.HK",

            "Ticker": "3171",

            "File Code": "1",

            "Exchange Code": "HKG",

            "Blockchain Flag": null,

            "Cryptoasset Flag": "Y",

            "Cryptocurrency Flag": null,

            "Asset SubType": "CDFN",

            "Asset SubType Description": "Closed Fund",

            "Refinitiv Classification Scheme": "ETFE",

            "Refinitiv Classification Scheme Description": "Equity ETFs"

        },

        {

            "IdentifierType": "Ric",

            "Identifier": "BITS.O",

            "RIC": "BITS.O",

            "Ticker": "BITS",

            "File Code": "81",

            "Exchange Code": "NMQ",

            "Blockchain Flag": null,

            "Cryptoasset Flag": "Y",

            "Cryptocurrency Flag": null,

            "Asset SubType": "CDFN",

            "Asset SubType Description": "Closed Fund",

            "Refinitiv Classification Scheme": "ETFE",

            "Refinitiv Classification Scheme Description": "Equity ETFs"

        },

...

...

    ],

    "Notes": [

        "Extraction Services Version 16.1.44123 (ed92f5e3e332), Built Aug 10 2022 01:59:20\r\nProcessing started at 08/25/2022 08:35:42.\r\nUser ID: 9008895\r\nExtraction ID: 609753892\r\nCorrelation ID: CiD/9008895/AAAAAA.082474c88f3e280b/RA/EXT.609753892\r\nSchedule: _OnD_0x082474c88f4e280b (ID = 0x082474c8917e280b)\r\nInput List (8 items): _OnD_0x082474c88f4e280b (ID = 082474c88fee280b) Created: 08/25/2022 08:35:40 Last Modified: 08/25/2022 08:35:41\r\nDelisted RICs are not included in the file code expansion.\r\nDuplicate RIC 3171.HK         for file code 1 ignored.\r\nDuplicate RIC 0863.HK         for file code 1 ignored.\r\nFile code 1 expanded to 2882 RICS: 0001.HK to 9999.HK.\r\nDuplicate RIC FDIG.O          for file code 81 ignored.\r\nDuplicate RIC BITS.O          for file code 81 ignored.\r\nFile code 81 expanded to 1553 RICS: AACG.O to ZYNE.O.\r\nDuplicate RIC BTCR.K          for file code 1272 ignored.\r\nFile code 1272 expanded to 1944 RICS: AAA to ZZV.\r\nTotal instruments after instrument expansion = 6379\r\nSchedule Time: 08/25/2022 08:35:41\r\nReport Template (17 fields): _OnD_0x082474c88f4e280b (ID = 0x082474c88f5e280b) Created: 08/25/2022 08:35:40 Last Modified: 08/25/2022 08:35:40\r\nProcessing completed successfully at 08/25/2022 08:35:55, taking 13.9 Secs.\r\nExtraction finished at 08/25/2022 07:35:55 UTC, with servers: x01E04, QSDHA1 (0.0 secs), QSHC19 (1.6 secs)\r\nUsage Summary for User 9008895, Client 65507, Template Type Terms and Conditions\r\nBase Usage\r\n        Instrument                          Instrument                   Terms          Price\r\n  Count Type                                Subtype                      Source         Source\r\n------- ----------------------------------- ---------------------------- -------------- ----------------------------------------\r\n   6379 Equities                                                         N/A            N/A\r\n-------\r\n   6379 Total instruments charged.\r\n      0 Instruments with no reported data.\r\n=======\r\n   6379 Instruments in the input list.\r\nWriting RIC maintenance report.\r\n",

        "Identifier,IdentType,Source,RIC,RecordDate,MaintType,OldValue,NewValue,Factor,FactorType\r\n0018.HK,RIC,HKG,0018.HK,08/23/2022,SPLT,,,.957746,\r\n0125.HK,RIC,HKG,0125.HK,08/24/2022,SPLT,,,.985849,\r\n0151.HK,RIC,HKG,0151.HK,08/25/2022,SPLT,,,.961631,\r\n0630.HK,RIC,HKG,0630.HK,08/22/2022,SPLT,,,5,\r\n0880.HK,RIC,HKG,0880.HK,08/19/2022,SPLT,,,.937294,\r\n1559.HK,RIC,HKG,1559.HK,08/17/2022,SPLT,,,.981818,\r\n3893.HK,RIC,HKG,3893.HK,08/23/2022,SPLT,,,10,\r\n8079.HK,RIC,HKG,8079.HK,08/18/2022,SPLT,,,.830601,\r\nEMBK.O,RIC,NMQ,EMBK.O,08/17/2022,SPLT,,,20,\r\nGCT.O,RIC,NMQ,GCT.O,08/18/2022,FLCH,118,81,,\r\nPFIN.O,RIC,NMQ,PFIN.O,08/19/2022,SPLT,,,.991438,\r\n"

    ]

}

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

 

Line 1: RIC 0863.HK loaded into array [0]

Line 2: RIC FDIG.O loaded into array [1]

Line 3: RIC 3171.HK loaded into array [2]

Line 4: RIC BITS.O loaded into array [3]

Line 5: RIC BTCR.K loaded into array [4]

Line 6: IPC 1 loaded into array [5]

Line 7: IPC 81 loaded into array [6]

Line 8: IPC 1272 loaded into array [7]

 

Extract the following fields:

RIC

Ticker

File Code

Exchange Code

Blockchain Flag

Cryptoasset Flag

Cryptocurrency Flag

Asset SubType

Asset SubType Description

Refinitiv Classification Scheme

Refinitiv Classification Scheme Description

 

Extracting TermsAndConditionsExtractionRequest...

 

Extraction Completed:

 

Returned list of field names:

RIC,Ticker,File Code,Exchange Code,Blockchain Flag,Cryptoasset Flag,Cryptocurrency Flag,Asset SubType,Asset SubType De

scription,Refinitiv Classification Scheme,Refinitiv Classification Scheme Description,

Press Enter to continue

 

Returned field values:

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

0863.HK, 863, 1, HKG, , Y, , ODSH, Ordinary shares, ORD, Ordinary Shares

FDIG.O, FDIG, 81, NMQ, , Y, , CDFN, Closed Fund, ETFE, Equity ETFs

3171.HK, 3171, 1, HKG, , Y, , CDFN, Closed Fund, ETFE, Equity ETFs

BITS.O, BITS, 81, NMQ, , Y, , CDFN, Closed Fund, ETFE, Equity ETFs

BTCR.K, BTCR, 1272, PCQ, , Y, , CDFN, Closed Fund, ETFE, Equity ETFs

0001.HK, 1, 1, HKG, , , , ODSH, Ordinary shares, ORD, Ordinary Shares

0002.HK, 2, 1, HKG, , , , ODSH, Ordinary shares, ORD, Ordinary Shares

...

...

Extraction completed.

Number of data rows: 6379

Number of valid (non empty) data rows: 6379

 

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

Processing started at 08/25/2022 10:02:39.

User ID: 9008895

Extraction ID: 609768162

Correlation ID: CiD/9008895/p8oikQ.082448de0ace27ed/RA/EXT.609768162

Schedule: _OnD_0x082448de0ade27ed (ID = 0x082448de0d1e27ed)

Input List (8 items): _OnD_0x082448de0ade27ed (ID = 082448de0b7e27ed) Created: 08/25/2022 10:02:37 Last Modified: 08/2

5/2022 10:02:37

Delisted RICs are not included in the file code expansion.

Duplicate RIC 3171.HK         for file code 1 ignored.

Duplicate RIC 0863.HK         for file code 1 ignored.

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

Duplicate RIC FDIG.O          for file code 81 ignored.

Duplicate RIC BITS.O          for file code 81 ignored.

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

Duplicate RIC BTCR.K          for file code 1272 ignored.

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

Total instruments after instrument expansion = 6379

Schedule Time: 08/25/2022 10:02:38

Report Template (17 fields): _OnD_0x082448de0ade27ed (ID = 0x082448de0afe27ed) Created: 08/25/2022 10:02:37 Last Modif

ied: 08/25/2022 10:02:37

Processing completed successfully at 08/25/2022 10:02:49, taking 10.2 Secs.

Extraction finished at 08/25/2022 09:02:49 UTC, with servers: x04t02, QSDHA1 (0.0 secs), QSHC15 (0.5 secs)

Usage Summary for User 9008895, Client 65507, Template Type Terms and Conditions

Base Usage

        Instrument                          Instrument                   Terms          Price

  Count Type                                Subtype                      Source         Source

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

----------

   6379 Equities                                                         N/A            N/A

-------

   6379 Total instruments charged.

      0 Instruments with no reported data.

=======

   6379 Instruments in the input list.

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,

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,

0880.HK,RIC,HKG,0880.HK,08/19/2022,SPLT,,,.937294,

1559.HK,RIC,HKG,1559.HK,08/17/2022,SPLT,,,.981818,

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

8079.HK,RIC,HKG,8079.HK,08/18/2022,SPLT,,,.830601,

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

EMBK.O,RIC,NMQ,EMBK.O,08/17/2022,SPLT,,,20,

GCT.O,RIC,NMQ,GCT.O,08/18/2022,FLCH,118,81,,

PFIN.O,RIC,NMQ,PFIN.O,08/19/2022,SPLT,,,.991438,

 

 

Press Enter to continue

 

Press any key to continue . . .

Summary

DataScope Select provides fields that indicate if the instruments are related or linked to cryptocurrencies or blockchain technologies. These fields are available in the Terms And Conditions report template which can be extracted via DataScope Select Web GUI and DataScope Select REST API. This article explains the details of the Joint circular on intermediaries’ virtual asset-related activities and the DataScope Solutions that we offer. It also provides the example that uses DataScope Select .NET SDK to extract this information from DataScope Select. 

References

  1. Apps.sfc.hk. 2022. Joint circular on intermediaries’ virtual asset-related activities. [online] Available at: <https://apps.sfc.hk/edistributionWeb/gateway/EN/circular/doc?refNo=22EC9> [Accessed 31 August 2022].
  2. Apps.sfc.hk. 2022. SFC reminds investors of risks associated with non-fungible tokens. [online] Available at: <https://apps.sfc.hk/edistributionWeb/gateway/EN/news-and-announcements/news/doc?refNo=22PR34> [Accessed 31 August 2022].