Files
crypto_portfolio/README.md

4.3 KiB

CryptoPortfolio

pequena aplicação para ir acompanhando a evolução de um portfolio de activos de criptomoedas

"historico_preco.csv" -> ficheiro CSV com dados historicos diarizados de um activo.

data,moeda,simbolo,preco_abertura,preco_maximo,preco_minimo,preco_fecho

<data>              -   data a que se referem os dados. formato: dd-mm-aaaa
<moeda>             -   nome do activo (ex: bitcoin)
<simbolo>           -   simbolo do activo (ex: btc)
<preco_abertura>    -   preco de abertura do activo para esse dia (em EUR)
<preco_maximo>      -   preco máximo atingido pelo activo nesse dia (em EUR)
<preco_minimo>      -   preco minimo atingido pelo activo nesse dia (em EUR)
<preco_fecho>       -   preco de fecho do activo nesse dia (em EUR)

"portfolio.csv" - ficheiro CSV com informação sobre os movimentos de um activo.

data,moeda,tipo_movimento,quantidade,preco_movimento

<data>              -   data a que se refere o movimento
<moeda>             -   activo a que se refere o movimento
<tipo_movimento>    -   tipo do movimento ("compra", "venda")
<quantidade>        -   quantidade do activo a que se refere o movimento
<preco_movimento>   -   preco a que foi efectuado o movimento (preco activo * quantidade comprada)

exemplo: 02-03-2024,bitcoin,compra,0.05,2978.024

este exemplo indica-nos que no dia 02-03-2024 foi comprado 0.05BTC com um custo total de 2978.024EUR

de notar que o preco do movimento é o valor pago por 0.05BTC, não o preco de mercado de 1un de BTC nesta data.

podemos calcular qual o preco de compra por unidade de BTC deste movimento simplesmente:

<preco_movimento> / <quantidade> = 59560.48EUR

consultando na coingecko o preco de mercado de bitcoin à data de 02-03-2024 (cerca de 57560.483EUR), vemos que foi pago um premium de: ( ( 59560.48 / 57560.483 ) - 1 ) * 100 = 3.47%

Documentação API

https://docs.coingecko.com/reference/introduction

API_KEY = "CG-K5RS5VXsdFDip2UvY3z8VjQP"

Obter preço de fecho dos ultimos 365 dias

https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=eur&days=365&interval=daily

  • 365 dias é o maximo que podemos obter com demo API_KEY da CoinGecko (as of May '24)

Obter OHLC dos ultimos 2 dias

https://api.coingecko.com/api/v3/coins/bitcoin/ohlc?vs_currency=eur&days=365&precision=3

Sidequest - criação de wrapper para a API Coingecko

sim sim, já existe uma (muito bem feita, por sinal!) que pode ser descarregada aqui: https://github.com/khooihzhz/coingecko-python

esta é a minha tentativa! :D

endpoints Public API V3

  • ping

    check api server status

  • simple

    coin price by ids

    coin price by token addresses

    supported currencies list

  • coins

    coins list (id map)

    coins list with market data

    coin data by id

    coin tickers by id

    coin historical data by id

    coin historical chart data by id

    coin historical chart data within time range by id

    coin ohlc chart by id

  • contract

    coin data by token address

    coin historical chart data by token address

    coin historical chart data within time range by token address

  • asset platforms

    assets platforms list (id map)

  • categories

    coins categories list (id map)

    coins categories list with market data

  • exchanges

    exchanges list with data

    exchanges list (id map)

    exchange data by id

    exchange tickers by id

    exchange volume chart by id

  • derivatives

    derivatives tickers list

    derivatives exchange list with data

    derivatives exchange data by id

    derivatives exchanges list (id map)

  • NFTs (beta)

    nfts list (id map)

    nfts collection data by id

    nfts collection data by contract address

  • exchange rates

    btc-to-currency exchange rates

  • search

    search queries

  • trending

    trending search list

  • global

    crypto global market data

    global de-fi market data

  • companies (beta)

    public companies holdings