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

S
Description
No description provided
Readme
1.9 MiB
Languages
Python 100%