The main goal of this computational Markdown document is to provide some basic views and insights into the landscape of cryptocurrencies. The “landscape” we consider consists of price action and trading volume time series for cryptocurrencies found in Yahoo Finance.
In this document we compute and plot with Raku the statistics in [AA1].
The Raku package used for data retrieval is "Data::Cryptocurrencies", [AAp1]. The JavaScript D3 plots are made via "JavaScript::D3", [AAp2].
This Markdown document is converted to its woven Markdown version with "Text::CodeProcessing", [AAp3]. The woven Markdown document is converted to an HTML document with "Markdown::Grammar", [AAp4].
Here is the corresponding shell command:
file-code-chunks-eval Cryptocurrencies-explorations.md &&
from-markdown Cryptocurrencies-explorations_woven.md -t html -o Cryptocurrencies-explorations.html &&
open Cryptocurrencies-explorations.html
Here we load the packages used below:
use Data::Cryptocurrencies;
use Data::Reshapers;
use Data::Summarizers;
use Text::Plot;
use JavaScript::D3;
# (Any)
Here we get Bitcoin (BTC) data from 1/1/2020 until now:
my %ccTS = cryptocurrency-data(<BTC ETH>, dates => (DateTime.new(2020,1,1,0,0,0), now), props => <DateTime Close>, format => 'hash'):cache-all;
say %ccTS.elems;
# 2
Here is a summary:
records-summary(%ccTS);
# summary of ETH =>
# +--------------------------------+--------------------------+
# | DateTime | Close |
# +--------------------------------+--------------------------+
# | Min => 2020-01-01T00:00:37Z | Min => 110.605873 |
# | 1st-Qu => 2020-10-16T12:00:37Z | 1st-Qu => 401.866287 |
# | Mean => 2021-08-03T00:00:37Z | Mean => 1681.823401621 |
# | Median => 2021-08-03T00:00:37Z | Median => 1562.740112 |
# | 3rd-Qu => 2022-05-20T12:00:37Z | 3rd-Qu => 2614.046387 |
# | Max => 2023-03-06T00:00:37Z | Max => 4812.087402 |
# +--------------------------------+--------------------------+
# summary of BTC =>
# +---------------------------+--------------------------------+
# | Close | DateTime |
# +---------------------------+--------------------------------+
# | Min => 4970.788086 | Min => 2020-01-01T00:00:37Z |
# | 1st-Qu => 11904.569336 | 1st-Qu => 2020-10-16T12:00:37Z |
# | Mean => 28503.208946593 | Mean => 2021-08-03T00:00:37Z |
# | Median => 23164.628906 | Median => 2021-08-03T00:00:37Z |
# | 3rd-Qu => 42247.5097655 | 3rd-Qu => 2022-05-20T12:00:37Z |
# | Max => 67566.828125 | Max => 2023-03-06T00:00:37Z |
# +---------------------------+--------------------------------+
Here are D3.js plots:
my %ts4 = %ccTS.map({ $_.key => $_.value.map(-> %r { %( date => %r<DateTime>.Str.substr(0,10), value => %r<Close>.Numeric, group => $_.key ) }).grep({ $_.<value> ~~ Numeric }) });
say %ts4>>.elems;
# {BTC => 1161, ETH => 1161}
deduce-type(%ts4<BTC>)
# Vector(Struct([date, group, value], [Str, Str, Rat]), 1161)
js-d3-date-list-plot(%ts4<BTC>, plot-label => 'BTC', width => 800, height => 400, format => 'html', div-id => 'BTC');
js-d3-date-list-plot(%ts4<ETH>, plot-label => 'ETH', width => 800, height => 400, format => 'html', div-id => 'ETH');
Get data for all cryptocurrencies:
my @dsData = cryptocurrency-data('all', dates => (now - 14 * 24 * 3600, now), props => <Symbol DateTime Close Volume>, format => 'dataset');
say "Dimensions : {dimensions(@dsData)}.";
# Dimensions : 307 4.
Clean data and show summary:
@dsData = @dsData.grep({ $_<Close> ~~ Numeric });
#records-summary(@dsData);
# [{Close => 1.000064, DateTime => 2023-02-21T00:00:00Z, Symbol => USDC, Volume => 4145675499} {Close => 1.000145, DateTime => 2023-02-22T00:00:00Z, Symbol => USDC, Volume => 4388750217} {Close => 1.000083, DateTime => 2023-02-23T00:00:00Z, Symbol => USDC, Volume => 4056250193} {Close => 1.000045, DateTime => 2023-02-24T00:00:00Z, Symbol => USDC, Volume => 4261268706} {Close => 1.000287, DateTime => 2023-02-25T00:00:00Z, Symbol => USDC, Volume => 2686817523} {Close => 1.000136, DateTime => 2023-02-26T00:00:00Z, Symbol => USDC, Volume => 2507543870} {Close => 1.000075, DateTime => 2023-02-27T00:00:00Z, Symbol => USDC, Volume => 3267016287} {Close => 0.999876, DateTime => 2023-02-28T00:00:00Z, Symbol => USDC, Volume => 3109767982} {Close => 1.000146, DateTime => 2023-03-01T00:00:00Z, Symbol => USDC, Volume => 3676550737} {Close => 1.000295, DateTime => 2023-03-02T00:00:00Z, Symbol => USDC, Volume => 3569810686} {Close => 1, DateTime => 2023-03-03T00:00:00Z, Symbol => USDC, Volume => 4111203947} {Close => 1.000048, DateTime => 2023-03-04T00:00:00Z, Symbol => USDC, Volume => 2215392974} {Close => 1.00001, DateTime => 2023-03-05T00:00:00Z, Symbol => USDC, Volume => 2396832193} {Close => 0.999973, DateTime => 2023-03-06T00:00:00Z, Symbol => USDC, Volume => 2342324224} {Close => 311.472015, DateTime => 2023-02-21T00:00:00Z, Symbol => BNB, Volume => 579359973} {Close => 312.781128, DateTime => 2023-02-22T00:00:00Z, Symbol => BNB, Volume => 549179249} {Close => 308.533936, DateTime => 2023-02-23T00:00:00Z, Symbol => BNB, Volume => 472852406} {Close => 302.053711, DateTime => 2023-02-24T00:00:00Z, Symbol => BNB, Volume => 479926281} {Close => 302.384613, DateTime => 2023-02-25T00:00:00Z, Symbol => BNB, Volume => 310503640} {Close => 308.99707, DateTime => 2023-02-26T00:00:00Z, Symbol => BNB, Volume => 312320211} {Close => 304.855804, DateTime => 2023-02-27T00:00:00Z, Symbol => BNB, Volume => 404806423} {Close => 301.474823, DateTime => 2023-02-28T00:00:00Z, Symbol => BNB, Volume => 337673265} {Close => 302.907471, DateTime => 2023-03-01T00:00:00Z, Symbol => BNB, Volume => 377974810} {Close => 299.946167, DateTime => 2023-03-02T00:00:00Z, Symbol => BNB, Volume => 370516889} {Close => 290.282837, DateTime => 2023-03-03T00:00:00Z, Symbol => BNB, Volume => 450262903} {Close => 289.503876, DateTime => 2023-03-04T00:00:00Z, Symbol => BNB, Volume => 289197235} {Close => 288.699707, DateTime => 2023-03-05T00:00:00Z, Symbol => BNB, Volume => 287599378} {Close => 286.984833, DateTime => 2023-03-06T00:00:00Z, Symbol => BNB, Volume => 298994720} {Close => 0.030167, DateTime => 2023-02-21T00:00:00Z, Symbol => VET, Volume => 143220635} {Close => 0.029536, DateTime => 2023-02-22T00:00:00Z, Symbol => VET, Volume => 86850448} {Close => 0.029758, DateTime => 2023-02-23T00:00:00Z, Symbol => VET, Volume => 90913172} {Close => 0.02773, DateTime => 2023-02-24T00:00:00Z, Symbol => VET, Volume => 71576059} {Close => 0.026944, DateTime => 2023-02-25T00:00:00Z, Symbol => VET, Volume => 58270972} {Close => 0.028221, DateTime => 2023-02-26T00:00:00Z, Symbol => VET, Volume => 57252864} {Close => 0.028122, DateTime => 2023-02-27T00:00:00Z, Symbol => VET, Volume => 76821909} {Close => 0.026925, DateTime => 2023-02-28T00:00:00Z, Symbol => VET, Volume => 48728423} {Close => 0.02812, DateTime => 2023-03-01T00:00:00Z, Symbol => VET, Volume => 52073675} {Close => 0.027232, DateTime => 2023-03-02T00:00:00Z, Symbol => VET, Volume => 53803384} {Close => 0.0254, DateTime => 2023-03-03T00:00:00Z, Symbol => VET, Volume => 64888608} {Close => 0.024432, DateTime => 2023-03-04T00:00:00Z, Symbol => VET, Volume => 43858630} {Close => 0.024345, DateTime => 2023-03-05T00:00:00Z, Symbol => VET, Volume => 39850799} {Close => 0.023923, DateTime => 2023-03-06T00:00:00Z, Symbol => VET, Volume => 38454408} {Close => 1658.036377, DateTime => 2023-02-21T00:00:00Z, Symbol => ETH, Volume => 8721608198} {Close => 1643.231689, DateTime => 2023-02-22T00:00:00Z, Symbol => ETH, Volume => 9189387004} {Close => 1651.073853, DateTime => 2023-02-23T00:00:00Z, Symbol => ETH, Volume => 9013236167} {Close => 1608.373169, DateTime => 2023-02-24T00:00:00Z, Symbol => ETH, Volume => 8909129423} {Close => 1594.914917, DateTime => 2023-02-25T00:00:00Z, Symbol => ETH, Volume => 5657686235} {Close => 1640.817139, DateTime => 2023-02-26T00:00:00Z, Symbol => ETH, Volume => 5727967432} {Close => 1634.326416, DateTime => 2023-02-27T00:00:00Z, Symbol => ETH, Volume => 7239824677} {Close => 1605.895142, DateTime => 2023-02-28T00:00:00Z, Symbol => ETH, Volume => 6323676957} {Close => 1663.433716, DateTime => 2023-03-01T00:00:00Z, Symbol => ETH, Volume => 7701847224} {Close => 1647.319336, DateTime => 2023-03-02T00:00:00Z, Symbol => ETH, Volume => 7080950926} {Close => 1569.167603, DateTime => 2023-03-03T00:00:00Z, Symbol => ETH, Volume => 9922240199} {Close => 1566.92395, DateTime => 2023-03-04T00:00:00Z, Symbol => ETH, Volume => 4389045367} {Close => 1564.46875, DateTime => 2023-03-05T00:00:00Z, Symbol => ETH, Volume => 5020886238} {Close => 1562.740112, DateTime => 2023-03-06T00:00:00Z, Symbol => ETH, Volume => 4631576576} {Close => 24436.353516, DateTime => 2023-02-21T00:00:00Z, Symbol => BTC, Volume => 31252098714} {Close => 24188.84375, DateTime => 2023-02-22T00:00:00Z, Symbol => BTC, Volume => 30199996781} {Close => 23947.492188, DateTime => 2023-02-23T00:00:00Z, Symbol => BTC, Volume => 30476264066} {Close => 23198.126953, DateTime => 2023-02-24T00:00:00Z, Symbol => BTC, Volume => 26811744928} {Close => 23175.375, DateTime => 2023-02-25T00:00:00Z, Symbol => BTC, Volume => 16100721565} {Close => 23561.212891, DateTime => 2023-02-26T00:00:00Z, Symbol => BTC, Volume => 16644534842} {Close => 23522.871094, DateTime => 2023-02-27T00:00:00Z, Symbol => BTC, Volume => 22660763494} {Close => 23147.353516, DateTime => 2023-02-28T00:00:00Z, Symbol => BTC, Volume => 20535363434} {Close => 23646.550781, DateTime => 2023-03-01T00:00:00Z, Symbol => BTC, Volume => 24662841200} {Close => 23475.466797, DateTime => 2023-03-02T00:00:00Z, Symbol => BTC, Volume => 20386398516} {Close => 22362.679688, DateTime => 2023-03-03T00:00:00Z, Symbol => BTC, Volume => 26062404610} {Close => 22353.349609, DateTime => 2023-03-04T00:00:00Z, Symbol => BTC, Volume => 11166012913} {Close => 22435.513672, DateTime => 2023-03-05T00:00:00Z, Symbol => BTC, Volume => 13317001733} {Close => 22397.871094, DateTime => 2023-03-06T00:00:00Z, Symbol => BTC, Volume => 12874779648} {Close => 0.069467, DateTime => 2023-02-21T00:00:00Z, Symbol => TRX, Volume => 303772124} {Close => 0.069434, DateTime => 2023-02-22T00:00:00Z, Symbol => TRX, Volume => 240981973} {Close => 0.069594, DateTime => 2023-02-23T00:00:00Z, Symbol => TRX, Volume => 216718423} {Close => 0.067852, DateTime => 2023-02-24T00:00:00Z, Symbol => TRX, Volume => 216581383} {Close => 0.067834, DateTime => 2023-02-25T00:00:00Z, Symbol => TRX, Volume => 206862281} {Close => 0.069513, DateTime => 2023-02-26T00:00:00Z, Symbol => TRX, Volume => 191149284} {Close => 0.069397, DateTime => 2023-02-27T00:00:00Z, Symbol => TRX, Volume => 219217373} {Close => 0.069011, DateTime => 2023-02-28T00:00:00Z, Symbol => TRX, Volume => 206608576} {Close => 0.069878, DateTime => 2023-03-01T00:00:00Z, Symbol => TRX, Volume => 213887807} {Close => 0.069651, DateTime => 2023-03-02T00:00:00Z, Symbol => TRX, Volume => 208539788} {Close => 0.067159, DateTime => 2023-03-03T00:00:00Z, Symbol => TRX, Volume => 262446714} {Close => 0.066684, DateTime => 2023-03-04T00:00:00Z, Symbol => TRX, Volume => 183966665} {Close => 0.067256, DateTime => 2023-03-05T00:00:00Z, Symbol => TRX, Volume => 164056033} {Close => 0.067298, DateTime => 2023-03-06T00:00:00Z, Symbol => TRX, Volume => 164108896} {Close => 0.060324, DateTime => 2023-02-21T00:00:00Z, Symbol => HEX, Volume => 18127708} {Close => 0.063153, DateTime => 2023-02-22T00:00:00Z, Symbol => HEX, Volume => 12446245} {Close => 0.062753, DateTime => 2023-02-23T00:00:00Z, Symbol => HEX, Volume => 11686696} {Close => 0.059827, DateTime => 2023-02-24T00:00:00Z, Symbol => HEX, Volume => 16771854} {Close => 0.059095, DateTime => 2023-02-25T00:00:00Z, Symbol => HEX, Volume => 10200068} {Close => 0.058933, DateTime => 2023-02-26T00:00:00Z, Symbol => HEX, Volume => 16100174} {Close => 0.062798, DateTime => 2023-02-27T00:00:00Z, Symbol => HEX, Volume => 23176573} {Close => 0.067485, DateTime => 2023-02-28T00:00:00Z, Symbol => HEX, Volume => 13030154} {Close => 0.076588, DateTime => 2023-03-01T00:00:00Z, Symbol => HEX, Volume => 28116820} {Close => 0.075001, DateTime => 2023-03-02T00:00:00Z, Symbol => HEX, Volume => 15219769} {Close => 0.069856, DateTime => 2023-03-03T00:00:00Z, Symbol => HEX, Volume => 13800161} {Close => 0.065747, DateTime => 2023-03-04T00:00:00Z, Symbol => HEX, Volume => 14667304} {Close => 0.068898, DateTime => 2023-03-05T00:00:00Z, Symbol => HEX, Volume => 11025352} {Close => 0.068038, DateTime => 2023-03-06T00:00:00Z, Symbol => HEX, Volume => 10633119} {Close => 8.18041, DateTime => 2023-02-21T00:00:00Z, Symbol => FIL, Volume => 742714288} {Close => 8.040988, DateTime => 2023-02-22T00:00:00Z, Symbol => FIL, Volume => 1332875372} ...]
Group by "Symbol" and find price- and volume totals per group:
my %groups = group-by(@dsData, "Symbol");
my %prices = %groups.map({ $_.key => $_.value.map(*<Close>).sum });
my %volumes = %groups.map({ $_.key => $_.value.map(*<Volume>).sum });
say %volumes.sort({ -$_.value }).head(5);
# (USDT => 435663711429 BTC => 303150926444 ETH => 99529062623 USDC => 46735205038 XRP => 11755312022)
say text-pareto-principle-plot(%prices.values.List, title => 'Prices');
say text-pareto-principle-plot(%volumes.values.List, title => 'Volumes');
Here is the Pareto plot for closing prices:
js-d3-list-plot(pareto-principle-statistic(%prices)>>.value,
plot-label => 'Pareto principle adherence for closing prices',
width => 400, height => 300,
format => 'html', div-id => 'pareto-prices'):grid-lines;
Here is the Pareto plot for trading volumes:
js-d3-list-plot(pareto-principle-statistic(%volumes)>>.value,
plot-label => 'Pareto principle adherence for trading volumes',
width => 400, height => 300,
format => 'html', div-id => 'pareto-volumes'):grid-lines;
[AA1] Anton Antonov "Crypto-currencies data acquisition with visualization", (2021), MathematicaForPrediction at WordPress.
[AA2] Anton Antonov "Cryptocurrencies data explorations", (2021), MathematicaForPrediction at WordPress.
[AAf1] Anton Antonov, CryptocurrencyData Mathematica resource function, (2021). WolframCloud/antononcube.
[AAp1] Anton Antonov, Data::Cryptocurrencies Raku package, (2023). GitHub/antononcube.
[AAp2] Anton Antonov, JavaScript::D3 Raku package, (2022). GitHub/antononcube.
[AAp3] Anton Antonov, Text::CodeProcessing Raku package, (2021). GitHub/antononcube.
[AAp4] Anton Antonov, Markdown::Grammar, (2022). GitHub/antononcube.