Dengan menganalisis Ethereum, Bitcoin dan lebih dari 1200 cryptocurrency lainnya menggunakan PostgreSQL

Cryptocurrency adalah kekuatan pendorong di belakang demam emas baru. Penulis menyarankan menggunakan analisis data untuk lebih memahami pasar yang berkembang ini.

Baru-baru ini, ada perasaan bahwa uang tumbuh di pohon.

gambar

Volume perdagangan pertukaran mencapai jutaan dolar, dan kapitalisasi pasar - miliaran . Tepat untuk membicarakan tentang demam emas, yang dipicu oleh semakin banyaknya cryptocurrency baru.

Kita hidup di era mata uang digital. Setelah muncul kurang dari 10 tahun yang lalu, konsep cryptocurrency telah menjadi luas saat ini. Meskipun waktu yang singkat, sudah ada lebih dari seribu cryptocurrency yang berbeda di pasaran, dan ICO terjadi hampir setiap hari .

Saat kita terbiasa dengan pasar baru yang tumbuh cepat, penting untuk mencoba memahami apa yang terjadi padanya. Ada banyak risiko, baik di tingkat mikro (misalnya, investasi pribadi) dan di tingkat makro (misalnya, pencegahan keruntuhan pasar atau kerugian besar modal). Di sinilah kita memasuki permainan.

Kami berurusan dengan data, atau lebih tepatnya, saya mewakili tim pengembangan TimescaleDB , sebuah database open source PostgreSQL baru untuk bekerja dengan deret waktu. Kami pikir akan bermanfaat dan menarik untuk menganalisis pasar cryptocurrency menggunakan PostgreSQL dan TimescaleDB (dan R untuk memvisualisasikan data yang diterima).

Dalam perjalanannya, kami menganalisis data historis pada grafik OHLC untuk lebih dari 1.200 cryptocurrency, diberikan kepada kami oleh CryptoCompare (tanggal pengambilan sampel terakhir adalah 26 Juni tahun ini). Langkah dalam kumpulan data khusus ini adalah 24 jam, namun, perlu dicatat bahwa TimescaleDB mudah terukur untuk bekerja dengan periode waktu yang jauh lebih pendek. Produk kami, khususnya, sangat cocok dengan peran alat dasar untuk bekerja dengan aliran data yang berkembang pada koin dan pertukaran baru.

Inilah yang dapat Anda ambil sendiri dari pos ini:

  • Beberapa kesimpulan umum yang berharga tentang situasi di pasar cryptocurrency.
  • Pemahaman yang lebih baik tentang bagaimana TimescaleDB + PostgreSQL dapat menyederhanakan analisis data deret waktu.
  • Dapatkan instruksi untuk mengunduh sendiri data ini, temukan tren baru (dan mungkin bahkan menggunakannya untuk membuat strategi Anda sendiri untuk memasuki pasar!).

Penafian: analisis di atas tidak boleh dianggap sebagai rekomendasi untuk melakukan transaksi keuangan tertentu. Jika Anda ingin melakukan analisis sendiri, perhatikan instruksi yang menjelaskan cara menginstal TimescaleDB dan unduh data CryptoCompare .

Jadi, jika Anda menginvestasikan $ 100 dalam Bitcoin 7 tahun yang lalu, sekarang harganya ...


Mari kita mulai dengan Sindrom Kehilangan Hilang yang bagus . Jika Anda bahkan sedikit mengenal cryptocurrency, Anda mungkin pernah mendengar tentang Bitcoin, "kakek buyut" dari semua cryptocurrency. Ternyata jika pada bulan Juli 2010 Anda menginvestasikan $ 100 di dalamnya, hari ini jumlah ini akan tumbuh menjadi $ 5 juta.

Selama waktu ini, Bitcoin menunjukkan dinamika yang agak menyenangkan (bahkan dengan memperhitungkan keruntuhan yang relatif kecil yang terjadi relatif baru-baru ini):

-- BTC USD prices by two week intervals SELECT time_bucket('14 days', time) as period, last(closing_price, time) AS last_closing_price FROM btc_prices WHERE currency_code = 'USD' GROUP BY currency_code, period ORDER BY period; 


gambar

BTC ke dolar AS pada penutupan bursa selama 7 tahun terakhir

Menggunakan PostgreSQL, kami meminta pembacaan harga BTC pada interval dua minggu, menganalisis nilai tukar terhadap dolar AS di bursa. Catatan: time_bucket dan yang terakhir dalam kueri ini adalah fungsi asli TimescaleDB (absen dalam PostgreSQL) yang digunakan untuk analisis deret waktu.

Kami harap Anda tidak membeli bitcoin pada Februari 2014 ...


Tidak bisa dikatakan, bahwa semuanya selalu lancar dengan BTC. Mari kita melihat lebih dekat volatilitas harian dari kursus dan melakukan perhitungan menggunakan fungsi jendela PostgreSQL yang kuat:

 -- Daily BTC returns by day SELECT time, closing_price / lead(closing_price) over prices AS daily_factor FROM ( SELECT time, closing_price FROM btc_prices WHERE currency_code = 'USD' GROUP BY 1,2 ) sub window prices AS (ORDER BY time DESC); 


gambar

Rasio membagi tingkat BTC / USD hari ini dengan tingkat sebelumnya (periode 7 tahun)

Karena ketidakmatangan pasar yang relatif, nilai tukar Bitcoin dapat berubah secara signifikan. Peningkatan nilai yang stabil secara umum menunjukkan keberhasilan cryptocurrency, tetapi ada satu periode pertumbuhan tajam yang jelas di luar gambaran dalam sejarahnya, yang diamati pada awal 2014. Setelah memeriksa periode ini secara lebih rinci, kami melihat lompatan besar di Februari-Maret 2014. Investor yang berinvestasi di BTC di puncak pasar harus menunggu cukup lama, karena kursnya segera stabil, dan segera mencapai indikator di mana penjualan bitcoin yang dibeli pada waktu itu menjadi bisnis yang menguntungkan.

gambar

Koefisien membagi tingkat BTC / USD hari ini pada kurs sebelumnya (2014)

Selamat tinggal China, Halo Jepang


Pasar cryptocurrency adalah fenomena internasional. Mempelajari volume perdagangan dalam hal mata uang, kami melihat sesuatu yang menarik:

 -- BTC trading volumes by currency SELECT time_bucket('14 days', time) as period, currency_code, sum(volume_btc) FROM btc_prices GROUP BY currency_code, period ORDER BY period; 


gambar

Volume perdagangan BTC dalam berbagai mata uang fiat selama 7 tahun terakhir (interval dua minggu, bar komposit)

Pada tahun 2014, ada lompatan kecil dalam nilai Bitcoin di Tiongkok, yang disebabkan oleh dugaan devaluasi renminbi dan melemahnya pasar saham domestik negara itu. Ini diikuti oleh ledakan pada 2016 dan awal 2017: mata uang Cina mendominasi perdagangan bitcoin.

gambar

Pangsa RMB dalam perdagangan bitcoin selama setahun terakhir (interval dua minggu)

Selama hanya beberapa bulan, angka ini anjlok.

Apa alasannya Di sinilah saatnya untuk melampaui analisis data numerik dan melakukan penelitian lama yang baik. Kesimpulan kami dengan baik menggambarkan fakta bahwa tidak mungkin untuk hanya mengandalkan data kuantitatif untuk riset pasar.

Pada awal 2017, People's Bank of China memberlakukan peraturan yang membatasi aktivitas pertukaran cryptocurrency. Pada bulan Februari, dua pertukaran terbesar di negara itu (OKCoin dan Huobi.com) menghentikan penarikan cryptocurrency dalam pertukaran untuk mata uang asing, dan pada pertengahan tahun ini aliran transaksi Cina telah berkurang. Pada saat yang sama, Jepang menjadi pemimpin dalam hal volume operasi dengan bitcoin. Bahkan sampai pada titik bahwa Bitcoin diakui sebagai mata uang hukum pada bulan April 2017.

gambar

Volume BTC dalam berbagai mata uang setelah penurunan tajam dalam pangsa transaksi BTC / CNY pada 2017. BTC / JPY - pemimpin baru dalam hal volume (interval dua minggu)

Dan sekarang mari kita pikirkan apa yang akan terjadi jika Anda menginvestasikan $ 100 dalam ETH pada Januari 2017 ...


Terlepas dari kenyataan bahwa "kereta bitcoin pergi" kembali pada tahun 2010, tidak ada alasan untuk khawatir. Banyak pengamat setuju bahwa bahkan di tengah volatilitasnya yang besar, perubahan harga Ethereum terlihat lebih mengesankan (dan "koreksi" baru - baru ini hanyalah konfirmasi lain). Mari kita lihat harga Ethereum dalam setara bitcoin (seperti biasanya dikutip):

 -- ETH prices in BTC by two week intervals SELECT time_bucket('14 days', c.time) as period, last(c.closing_price, c.time) AS last_closing_price_in_btc FROM crypto_prices c WHERE c.currency_code = 'ETH' GROUP BY period ORDER BY period; 


gambar

Kurs ETH ke BTC pada penutupan hari perdagangan selama 3 tahun terakhir

Namun, seperti yang kita tahu, Bitcoin sendiri tidak berbeda stabilitas yang terlihat, yang mengurangi kegunaan grafik di atas. Mari kita lihat harga ETH dalam mata uang fiat menggunakan kutipan BTC harian untuk mata uang fiat. (Untuk ini, kami akan menggunakan properti berguna dari Postgres BERGABUNG dan beberapa filter canggih):

 -- ETH prices in BTC, USD, EUR, and CNY by two week intervals SELECT time_bucket('14 days', c.time) as period, last(c.closing_price, c.time) AS last_closing_price_in_btc, last(c.closing_price, c.time) * last(b.closing_price, c.time) filter (WHERE b.currency_code = 'USD') AS last_closing_price_in_usd, last(c.closing_price, c.time) * last(b.closing_price, c.time) filter (WHERE b.currency_code = 'EUR') AS last_closing_price_in_eur, last(c.closing_price, c.time) * last(b.closing_price, c.time) filter (WHERE b.currency_code = 'CNY') AS last_closing_price_in_cny FROM crypto_prices c JOIN btc_prices b ON time_bucket('1 day', c.time) = time_bucket('1 day', b.time) WHERE c.currency_code = 'ETH' GROUP BY period ORDER BY period; 


gambar

ETH ke tiga mata uang fiat pada penutupan hari perdagangan selama 3 tahun terakhir

Pada tahun pertama keberadaannya, ETH melebihi salah satu indikator pertumbuhan BTC tahunan dalam sejarah yang terakhir. Kenaikan harga penutupan rata-rata 530% yang mengesankan dari tahun sebelumnya adalah awal yang baik. Secara umum, pada 2017, tingkat pertumbuhan agregat untuk semua tahun ini turun pada 2017 dibandingkan 2016 menjadi 200%. Namun, bahkan hasil seperti itu tetap terlihat mengesankan untuk aset lainnya. Adapun enam bulan terakhir, sekarang harga ETH telah meningkat sebesar 3000%. Karena itu, jika Anda menginvestasikan $ 100 dalam ETH pada bulan Januari tahun ini (hampir 7 bulan yang lalu), hari ini nilainya adalah $ 3 ribu.

Mengekspresikan nilai ETH dalam mata uang stabil (USD, EUR, CNY), kita melihat bahwa ketiga grafik memiliki bentuk yang sama. Selama enam bulan terakhir, pertumbuhan cepat telah diamati dengan jelas di semua ekuivalen mata uang, kecuali untuk BTC. Grafik tingkat ETH / BTC, yang mirip dengan grafik mata uang fiat, jauh lebih rentan terhadap fluktuasi nilai BTC. Akibatnya, upaya untuk mengekspresikan harga ETH dalam BTC menciptakan kesan tidak masuk akal dari ketidakstabilan yang pertama. Jelas, BTC masih terlalu muda untuk dianggap sebagai mata uang.

Bagaimana dengan 1.200 cryptocurrency lainnya?


Kami berharap bahwa tinjauan singkat tentang tren BTC dan ETH ini memungkinkan Anda untuk lebih memahami dunia cryptocurrency yang kacau. Jadi apa yang akan kita lakukan dengan 1.200 cryptocurrency lainnya?

Pertama, mari kita gunakan dataset kami untuk melacak asalnya:

Catatan Penting: Kumpulan data kami berisi informasi pada saat pengumpulannya, yang mungkin terjadi setelah ICO.

 -- Currencies sorted by first time we have data for them SELECT ci.currency_code, min(c.time) FROM currency_info ci JOIN crypto_prices c ON ci.currency_code = c.currency_code AND c.closing_price > 0 GROUP BY ci.currency_code ORDER BY min(c.time) DESC; 

  currency_code | min ---------------+------------------------ CIR | 2017-06-26 20:00:00+00 MDC | 2017-06-26 20:00:00+00 WBTC | 2017-06-26 20:00:00+00 NET | 2017-06-26 20:00:00+00 NAS2 | 2017-06-26 20:00:00+00 TPAY | 2017-06-26 20:00:00+00 MRSA | 2017-06-26 20:00:00+00 XCI | 2017-06-26 20:00:00+00 PAY | 2017-06-19 20:00:00+00 SNM | 2017-06-18 20:00:00+00 LGD | 2017-06-17 20:00:00+00 SNT | 2017-06-16 20:00:00+00 IOT | 2017-06-12 20:00:00+00 QRL | 2017-06-09 20:00:00+00 MGO | 2017-06-09 20:00:00+00 CFI | 2017-06-08 20:00:00+00 VERI | 2017-06-07 20:00:00+00 EQT | 2017-06-07 20:00:00+00 ZEN | 2017-06-05 20:00:00+00 BAT | 2017-05-31 20:00:00+00 

Stempel waktu dari catatan pertama untuk setiap cryptocurrency (menurun)

Pasar terus berkembang, dan di samping itu, dilihat dari pertumbuhan harian cryptocurrency baru, ia juga terus berkembang. Daftar yang diterbitkan di atas hanya berisi 20 token terbaru pada tanggal 26 Juni, dan memungkinkan Anda mendapatkan gambaran tentang berapa banyak cryptocurrency baru yang muncul setiap minggu.

Mari kita hitung jumlah cryptocurrency baru yang muncul setiap hari berdasarkan tanggal pertama kemunculan informasi harga pada mereka:

 -- Number of new currencies with data sorted by day SELECT day, COUNT(code) FROM ( SELECT min(c.time) AS day, ci.currency_code AS code FROM currency_info ci JOIN crypto_prices c ON ci.currency_code = c.currency_code AND c.closing_price > 0 GROUP BY ci.currency_code ORDER BY min(c.time) )a GROUP BY day ORDER BY day DESC; 


gambar

Jumlah cryptocurrency baru per hari selama 4 tahun terakhir

gambar

Jumlah cryptocurrency baru per hari untuk tahun berjalan

  day | count ------------------------+------- 2017-06-26 20:00:00+00 | 8 2017-06-19 20:00:00+00 | 1 2017-06-18 20:00:00+00 | 1 2017-06-17 20:00:00+00 | 1 2017-06-16 20:00:00+00 | 1 2017-06-12 20:00:00+00 | 1 2017-06-09 20:00:00+00 | 2 2017-06-08 20:00:00+00 | 1 2017-06-07 20:00:00+00 | 2 2017-06-05 20:00:00+00 | 1 2017-05-31 20:00:00+00 | 5 2017-05-28 20:00:00+00 | 29 2017-05-27 20:00:00+00 | 13 2017-05-26 20:00:00+00 | 32 2017-05-25 20:00:00+00 | 303 2017-05-16 20:00:00+00 | 1 2017-05-15 20:00:00+00 | 7 

Jumlah cryptocurrency baru berdasarkan tanggal, statistik harian (turun)

Ketika kami meminta informasi tentang penampilan pertama dari data cryptocurrency (untuk melacak "usia" mereka), menjadi nyata bahwa pasar tidak hanya sekelompok investor, ada kategori lain dari pesertanya - pencipta aset digital. Baru-baru ini, pada 25-28 Mei, menurut data rekrutmen kami, ada gelombang besar koin baru - lebih dari 300 token baru dalam waktu kurang dari seminggu. (Karena perangkat kami hanya mencatat informasi harga pada cryptocurrency, informasi tentang penampilannya mungkin tidak sesuai dengan tanggal ICO.)

Pemimpin Cryptocurrency dan Catching Worlds


Ada begitu banyak cryptocurrency hari ini sehingga menjadi sulit untuk membedakan yang masuk akal dari yang meragukan. Bagaimana Anda bisa menentukan mana yang layak diperhatikan? Ini adalah salah satu metriknya: total volume transaksi pertukaran selama seminggu terakhir.

 -- 1200+ crypto currencies by total transaction volume (in btc) over the last month SELECT 'BTC' as currency_code, sum(b.volume_currency) as total_volume_in_usd FROM btc_prices b WHERE b.currency_code = 'USD' AND now() - date(b.time) < INTERVAL '8 day' GROUP BY b.currency_code UNION SELECT c.currency_code as currency_code, sum(c.volume_btc) * avg(b.closing_price) as total_volume_in_usd FROM crypto_prices c JOIN btc_prices b ON date(c.time) = date(b.time) WHERE c.volume_btc > 0 AND b.currency_code = 'USD' AND now() - date(b.time) < INTERVAL '8 day' AND now() - date(c.time) < INTERVAL '8 day' GROUP BY c.currency_code ORDER BY total_volume_in_usd DESC; 

  currency_code | total_volume_in_usd ---------------+--------------------- BTC | 2040879023.54 ETH | 1617388472.94011 LTC | 287613541.293571 XRP | 269417667.514443 ETC | 165712729.612886 ANS | 126377042.5269 SC | 111623857.796786 DASH | 86875922.3588143 ZEC | 78836728.2129428 BTS | 69459051.5958428 

Total volume transaksi 10 cryptocurrency utama dalam dolar AS selama seminggu terakhir (turun)

gambar

Total volume transaksi 10 cryptocurrency utama dalam dolar AS selama seminggu terakhir (turun)

Klarifikasi kecil untuk permintaan ini: data tentang BTC dan cryptocurrency lainnya hidup dalam tabel yang berbeda. Oleh karena itu, kita harus menggabungkan dua pertanyaan ini dengan UNION. Sebelumnya, kami juga memutuskan bahwa kami ingin menerima penawaran dalam mata uang fiat (misalnya, dalam dolar), dan bukan dalam BTC. Oleh karena itu, bagian kedua dari permintaan menggabungkan data dengan tabel BTC untuk mengkonversi BTC ke USD.

Anehnya, Bitcoin dan Ethereum ternyata menjadi pemimpin dalam hal volume operasi. Tetapi peserta berikut dalam parade hit - Litecoin (LTC) , Ripple (XRP) , dan Ethereum Classic (ETC) , hampir sama. Hadir di pasar selama lima tahun, Litecoin hampir identik dengan Bitcoin dan sering dianggap sebagai pemain kunci di pasar. Ripple, yang diposisikan sebagai koin perbankan untuk perwakilan pasar komersial internasional dan berfungsi untuk audiens yang lebih spesifik, juga dianggap sebagai koin yang menjanjikan dan terus berkembang. Menarik juga bahwa lima besar tidak hanya memiliki ETH, tetapi juga ETC, yang menunjukkan bahwa pasar saat ini sangat berfokus pada Ethereum.

Cryptocurrency paling menguntungkan


Cara lain untuk "menggaruk" daftar panjang cryptocurrency adalah dengan menganalisis profitabilitas mereka, misalnya, indikator total laba harian. Perangkat kami berisi data harga untuk lebih dari 1.200 cryptocurrency. Jika Anda melihat dengan cermat kenaikan tarif terbesar per hari, Anda dapat mengidentifikasi para pemimpin perdagangan intraday.

 -- Top crypto by daily return, by day SELECT time, last(currency_code,daily_factor), max(daily_factor) FROM ( SELECT currency_code, time, closing_price, lead(closing_price) over (partition BY currency_code ORDER BY time DESC) AS prev_day_closing_price, closing_price / lead(closing_price) over (partition BY currency_code ORDER BY time DESC) AS daily_factor FROM crypto_prices) q GROUP BY time ORDER BY time DESC; 

  time | last | daily_return ------------------------+--------+------------------ 2017-06-26 20:00:00+00 | CIN | 40.1428571428571 2017-06-25 20:00:00+00 | KC | 38 2017-06-24 20:00:00+00 | VOYA | 14.2747252747253 2017-06-23 20:00:00+00 | PAY | 3.18506315211422 2017-06-22 20:00:00+00 | YOVI | 119.607843137255 2017-06-21 20:00:00+00 | ION | 7.97665369649805 2017-06-20 20:00:00+00 | TES | 5.25157232704403 2017-06-19 20:00:00+00 | KNC | 150000 2017-06-18 20:00:00+00 | ZNY | 22.5217391304348 2017-06-17 20:00:00+00 | YOVI | 22.0590746115759 2017-06-16 20:00:00+00 | LTD | 9.50207468879668 2017-06-15 20:00:00+00 | AMIS | 168758.782201405 2017-06-14 20:00:00+00 | JANE | 6 2017-06-13 20:00:00+00 | YOVI | 690.636254501801 2017-06-12 20:00:00+00 | U | 5.21452145214522 2017-06-11 20:00:00+00 | JANE | 6 2017-06-10 20:00:00+00 | WGO | 3.58744394618834 2017-06-09 20:00:00+00 | BNT | 5000 2017-06-08 20:00:00+00 | XNC | 52.7704485488127 2017-06-07 20:00:00+00 | CBD | 14.3243243243243 2017-06-06 20:00:00+00 | CC | 72 2017-06-05 20:00:00+00 | BLAZR | 7.38461538461538 2017-06-04 20:00:00+00 | GREXIT | 13.0833333333333 2017-06-03 20:00:00+00 | EPY | 4.29880478087649 2017-06-02 20:00:00+00 | YOVI | 1257.67790262172 2017-06-01 20:00:00+00 | FCN | 8.57142857142857 2017-05-31 20:00:00+00 | EPY | 348.611111111111 2017-05-30 20:00:00+00 | BST | 14.1441860465116 2017-05-29 20:00:00+00 | FCN | 45.3086419753086 2017-05-28 20:00:00+00 | NOO | 56536.231884058 

Nilai tertinggi perbedaan nilai cryptocurrency intraday (tanggal turun)

Mari kita mendefinisikan cryptocurrency dengan indikator profitabilitas harian terbesar. Untuk menghitung laba harian, kami kembali menggunakan fungsi jendela , dan untuk mencari cryptocurrency yang menghasilkan pendapatan paling banyak setiap hari, kami menggunakan fungsi terakhir dari set TimescaleDB.

Kesimpulan untuk tiga bulan terakhir menunjukkan keunggulan kuantitatif AMIS (peningkatan nilai 168 kali lipat pada 15 Juni). Cryptocurrency ini menunjukkan peningkatan terbesar dalam 15 hari yang berbeda. Namun, dengan melihat lebih dekat, kami mencatat bahwa pertumbuhan yang tinggi disebabkan oleh fluktuasi harga yang sama tingginya: harga AMIS sering bergulir kembali ke nol setelah setiap kenaikan.

gambar

Harga penutupan AMIS selama lima bulan terakhir

Pemimpin lain dari sampel ini, YOVI, menunjukkan hasil terbaik 3 kali, tetapi juga tunduk pada tren serupa yang tidak dapat diandalkan seperti AMIS:

gambar

Harga penutupan hari untuk YOVI dalam lima bulan terakhir

Terlepas dari ketidakstabilan dari pasangan tren ini, mereka tetap terlihat lebih menjanjikan dibandingkan dengan ETH, nilai yang terus turun di tahun pertama keberadaannya (2015):

gambar

Harga penutupan hari untuk ETH pada tahun 2015

(Penafian berulang: TimescaleDB tidak mendukung cryptocurrency ini dan tidak bertanggung jawab atas investasi Anda di dalamnya dan kemungkinan kerugian yang terkait dengannya.)

Jadi ternyata uang tumbuh ... di pohon Merkle ?


Pada artikel ini, kami membuat beberapa kesimpulan dari kumpulan data cryptocurrency terbuka, menunjukkan kekuatan PostgreSQL dan TimescaleDB. Namun demikian, harus diingat bahwa pasar mata uang cryptocurrency pasti akan berubah bulan depan, minggu depan atau bahkan besok.

Namun, jika Anda ingin mempelajari set ini secara independen dan melakukan analisis Anda, instruksi yang tepat untuk mengunduh data dan menginstal TimescaleDB tersedia di layanan Anda.

Jika Anda ingin tahu lebih banyak tentang TimescaleDB dan bagaimana hal itu dapat meningkatkan efisiensi PostgreSQL untuk bekerja dengan deret waktu, kami sarankan Anda membiasakan diri dengan pos teknis .

gambar

Source: https://habr.com/ru/post/id404547/


All Articles