Add a basket of price identifiers calculated by BITA (bitadata.com)

Headers

UMIP
UMIP Title Add CGLCAR, CKLCAR, and CNLCAR as supported price identifiers
Authors Jeffrey Bennett (endymionjkb@gmail.com)
Status Draft
Created 9/6/2021
Discourse Link

Summary

The DVM should support price requests from BITA (bitadata.com) that reflect the prices of a set of published fiat indices.

Motivation

ESG (Environmental, Social, Governance) funds are high performing and growing in popularity in the traditional finance world, but there is currently
no way to gain exposure to these types of funds in crypto.

The first price identifiers are: CGLCAR, CKLCAR, and CNLCAR, corresponding to the global and regional low carbon indices from Confluence Analytics.
Confluence Analytics proposes to create Perpetual Synthetics that track these indices, and then include them in liquidity pools.

Data Specifications

BITA is an EU-registered index administrator.
They calculate indices in both fiat and crypto, adjusting for corporate actions, stock splits, etc., and produce daily detailed files for all holdings,
which are also accessible through an API.

There is a rate-limited public API for current and historical index prices.


  • Price identifier name: CGLCAR (Confluence Global ESG Low Carbon Index)
  • Base Currency: - USD
  • Quote Currency: - USD
  • Markets & Pairs: USD/CGLCAR
  • Example data providers: BITA
  • Cost to use: Free, rate-limited
  • Real-time data update frequency: daily
  • Historical data update frequency: daily

  • Price identifier name: CKLCAR (Confluence Analytics Korea ESG Low Carbon Index)
  • Base Currency: - USD
  • Quote Currency: - USD
  • Markets & Pairs: USD/CKLCAR
  • Example data providers: BITA
  • Cost to use: Free, rate-limited
  • Real-time data update frequency: daily
  • Historical data update frequency: daily

  • Price identifier name: CNLCAR (Confluence Analytics Norway ESG Low Carbon Index)
  • Base Currency: - USD
  • Quote Currency: - USD
  • Markets & Pairs: USD/CGLCAR
  • Example data providers: BITA
  • Cost to use: Free, rate-limited
  • Real-time data update frequency: daily
  • Historical data update frequency: daily

Price Feed Implementation

The price feed is a REST API hosted at api.bitadata.com. Users first “log in” (with public credentials) to obtain a token, then use standard token authentication for subsequent requests.
The public credentials provide access to the three indices named above.

Rationale

These are proprietary indices, and a feed should also become available on the Confluence site. The founders have a great track record: one is co-founder of Etho Capital, which published the
best-performing ESG index in the US (ticker ETHO on NASDAQ), now with a 5+ year track record.

Nevertheless, a third party licensed entity (on a different continent), whose entire business is publishing indices, is an even more reliable and resilient data source.

Eventually these indices may be listed on a major stock exchange, such as NASDAQ, at which point there will be many additional data feeds.

Implementation

To retrieve index prices, first POST a Basic Authentication login with the following credentials to obtain an expiring access token:

curl --location --request POST 'https://api.bitadata.com/v1/login/' \
--header 'Content-Type: application/json' \
--data-raw '{
	"user": "confluence_public",
	"password": "P3AQ88Az$!CddnnY"
}'

This should return a token:

{
  "message": "Authenticated succesfully",
  "token": "eyJ0eXAiOiQiLCJhbGciOiJIUzI1NiJ9.eyJzd..."
}

This token grants access to the “indexes_eod” and “index_value” endpoints.

For the current price of one or more indices:

curl --location --request POST 'https://api.bitadata.com/v1/index_value/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}' \
--data-raw '{"indexes": ["CGLCAR","CNLCAR"]}'

Returns:

{
    "type":"index_value",
    "data":[
      {"time":"2021-09-03T22:10:15.896Z","index_id":"CGLCAR","value":1023.5248741978535},
      {"time":"2021-09-03T22:10:29.857Z","index_id":"CNLCAR","value":1011.3961111526498}
    ]
}                                                

For historical prices:

curl --location --request POST 'https://api-test.bitadata.com/v1/indexes_eod/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}' \
--data-raw '{
	"indexes": ["CGLCAR"],
	"start_date": "2021-08-01",
	"end_date": "2021-09-06"
}'

Returns:

{
    "type":"indexes_eod",
    "start_date":"2021-08-01",
    "end_date":"2021-09-06",
    "data":
      {"CGLCAR":[
          {"timestamp":"2021-08-01","value":"985.27"},
          {"timestamp":"2021-08-02","value":"990.15"},
          {"timestamp":"2021-08-03","value":"991.40"},
          ...
          {"timestamp":"2021-09-03","value":"1023.52"}
        ]
      }
    }                                                                                             

You can find full API documentation here.

Security Considerations

Adding this new identifier by itself poses a little security risk to the DVM or priceless financial contract users. However, anyone deploying a new priceless token contract referencing this identifier should take care to parameterize the contract appropriately to avoid the loss of funds for synthetic token holders. Additionally, the contract deployer should ensure that there is a network of liquidators and disputers ready to perform the services necessary to keep the contract solvent.

The global index has a large number of constituents (mostly large cap), and should be fairly stable. The country-based ones are potentially a bit more volatile - and could be influenced by local events in those countries (currently Korea and Norway). Also, these are fiat indices, so they only have prices on days when the traditional financial markets are open.

This means price discontinuities (like the infamous “CME” gaps of Bitcoin) are possible over weekends and holidays, and due to these gaps, a larger number of liquidations and disputes may arise. In order to mitigate this theoretical risk, a higher collateralization requirement (125%+) should be set, or a reserve fund mechanism should be implemented in order to automatically rebalance the collateralization ratio above 100%.

Hi,

This looks interesting - what are you planning to build andhave you submitted this as a proposal to our Github?

Next deadline for submission is Thurs 22nd Sept 00.00UTC

I can submit it before then (was waiting to see if there were any comments on the discourse posts). It should be just the same text, right?

The indices already exist (in fiat), and the API is live, so the synthetics could be deployed as soon as the price identifiers are approved.

It looks a lot more complicated now than it was when I was just approving rDAI for collateral though! I have a lot of technical questions about the DevOps support needed for this. It seems just having this API isn’t sufficient (except for humans to vote on disputes), and there also has to be a price identifier bot running that exposes it.

These should be perpetuals so that their tokens can be used in liquidity pools, and I’m also not clear on what I need to do for the funding rate.

If you are looking to use the perpetual you probably want to have a chat with the team about how to implement this and how the funding rate works. Will highlight this to @chandler (our growth specialist) who will be in touch.

Thanks for your response.