NetworkX ve Python PlatoBlockchain Veri Zekası ile Kripto Arbitrajı. Dikey Arama. Ai.

NetworkX ve Python ile Kripto Arbitrajı

Python'da bir kripto arbitraj tarayıcısı oluşturmak için Coingecko API'sinden kripto verilerini analiz etme

McKlayne Marshall

Birlikte yazılanlar Isaac Rhea

Fotoğraf Alina Grubnyak on Unsplash

Dünya çapındaki para birimlerine yönelik piyasalar, günün 24 saati tahvil, hisse senedi veya vadeli işlemlerden çok daha yüksek hacimlerde işlem görüyor piyasalar. Döviz piyasalarındaki katılımcılar riskten korunmak veya para birimi değerlerinde gelecekteki değişiklikler hakkında spekülasyon yapmaktır.

Bir başka kâr kaynağı da para birimi değerlemelerindeki kısa vadeli dengesizliklerden yararlanmaktır. Yüksek frekanslı yatırımcılar, ışık hızında algoritmalar kullanarak arbitraj fırsatlarını belirler ve küçük bir kârla sonuçlanan bir dizi değişimi hızla gerçekleştirir. Bunu gör göre Daha ayrıntılı bir açıklama ve örnekler için Kurumsal Finans Enstitüsü'nden.

Kurumsal Finans Enstitüsü

Döviz piyasalarındaki yüksek rekabet ve işlem hacmi nedeniyle bu fırsatlar kısa ömürlüdür ve kârlar çok azdır. Her ne kadar döviz arbitrajı yoluyla kazançlar yüksek sayıda alım satımla zaman içinde gerçekleşse de, kripto para piyasalarında da benzer bir fırsat mevcut ve bu da daha karlı olabilir.

Ticareti yapılacak çok sayıda kripto olduğundan, arbitraj fırsatlarını kontrol etmek için birçok olası kombinasyon vardır. Grafik (Ağ) veri yapısı, madeni paralar arasındaki farklı döviz kurlarını takip etmek ve yararlanabileceğimiz dengesizlik örneklerini hızlı bir şekilde belirlemek için idealdir. Grafikler/Ağlar ve bunlarla çalışacak Python paketleri hakkında daha fazla bilgi için buna göz atın kitap içinde Pragmatik Programcılar serisi.

Kripto para birimleri için bir Grafik oluşturmak amacıyla NetworkX paketinden yararlanacağız. Bu, ilgilendiğimiz kripto paraları analiz etmeyi ve ticaret fırsatlarını bulmayı kolaylaştıran güçlü bir araçtır. İlk olarak CoinGecko API'sinden kripto döviz kurlarını alacağız. Daha sonra Grafiği başlatacağız ve ilgilendiğimiz her bir koin arasındaki ilişkileri (döviz kurları) tanımlayacağız. Son olarak, arbitraj fırsatlarını belirlemek için bir koinden diğerine ve geriye giden tüm yollardan geçeceğiz.

JSON API'leriyle deneyiminiz varsa CoinGecko API'nin kullanımı nispeten basittir. Bu kod parçacığıyla beş farklı coinin (Bitcoin, Bitcoin Cash, Ethereum, Litecoin ve EOS) güncel döviz kurlarını çektim.

API çağrısının URL'si, verilerini çekmek istediğiniz paralara bağlı olarak şuna benzer:

https://api.coingecko.com/api/v3/simple/price?ids=bitcoin-cash,ethereum,bitcoin,litecoin,eos&vs_currencies=bch,eth,btc,ltc,eos

Python için request ve JSON paketlerini kullanarak bu verileri listemize dahil ettiğimiz her kripto için anahtarların bulunduğu bir sözlük olarak yükleyebiliriz. Bu anahtarların her biriyle ilişkili değer, o döviz çiftinin döviz kurlarına ilişkin girişleri içeren başka bir sözlüktür. Örneğin Bitcoin Cash için aşağıdaki sonucu elde ederiz:

Bu da 0.25 Bitcoin Cash ile 0.16 Ethereum veya 1 Bitcoin satın alınabileceğini gösteriyor. Her bir kripto için bu sonuçlarla Grafiği tanımlamaya hazırız.

Grafikte her bir madeni para bir 'tepe noktasını' temsil eder ve iki madeni para arasındaki döviz kuru bir 'kenar'dır. Boş bir Graph nesnesini başlattıktan sonra, her bir madeni para çifti için bir dizi listesi ve bunların her iki yöndeki döviz kurunu tanımlarız.

Kenarların listesi şuna benzer:

Grafiğe kenarlar eklendiğinde arbitraj fırsatlarını taramaya hazırız. itertools paketindeki kombinasyon fonksiyonunu kullanarak tüm olası madeni para çiftlerini tanımlarız. Daha sonra, ilk coinden ikinciye kadar olası tüm yolları tanımlamak için NetworkX'in all_simple_paths fonksiyonunu kullanıyoruz.

Örneğin Litecoin ve Bitcoin Cash'e bakıyorsak, düşündüğümüz kripto paralar göz önüne alındığında birçok olası yol var. Bitcoin Cash'i Litecoin ile satın alabiliriz veya Bitcoin'i Litecoin ile satın alabilir ve ardından Bitcoin Cash'i satın almak için Bitcoin'i kullanabiliriz.

Her yolda döngü yapıyoruz ve her adımda aşağıdaki hesaplamaları gerçekleştiriyoruz. Öncelikle ilk paralardan biriyle başladığımızı varsayıyoruz. Yolun sonuna gelene kadar bunu bir coinin diğerine döviz kuruyla çarpıyoruz.

Örneğin, bir Bitcoin Cash ile başlarsak 0.24 Ethereum satın alabiliriz, dolayısıyla 1 x 0.24197529 = 0.24197529'u çarparız. Ethereum'dan Bitcoin'e döviz kuru 0.06 olduğundan 0.24197529 x 0.06484324 = 0.0156904618035396'yı çarpıyoruz. Bu değer Bitcoin Cash ile Bitcoin arasındaki döviz kuruna çok yakın ancak tam olarak aynısı değil.

Bu noktada Bitcoin'den Ethereum'a Bitcoin Cash'e giden yolun tersini 1 x 15.414849 x 4.132739 = 63.705547641411 ile çarparak kontrol ediyoruz. Yolun son değerlendirmesini yapmak için bu iki sonucu çarpıyoruz (0.0156904618035396 x 63.705547641411 = 0.9995694619411315). Bildiğim kadarıyla bu değer için tanımlanmış bir terim yoktur. Buna Arbitraj Faktörü diyebiliriz.

Döviz kurları senkronize olsaydı Arbitraj Faktörü tam olarak bir olurdu. Birden küçük bir değer, bir dizi değişimden geçtiğimizi ve başladığımızdan daha azıyla bitirdiğimizi gösterir. Dolayısıyla takasın kârla sonuçlanacağından bu değerin birden büyük olmasını arıyoruz. Önceki örneğimizde Arbitraj Faktörünü 1.005 olarak bulsaydık, bu, bir kriptodan diğerine gidiş dönüş yolunu takip ederek 0.005 Bitcoin Cash (yaklaşık 3 $ değerinde) kazanabileceğimizi gösterirdi.

Arbitraj fırsatları gün boyunca farklı kriptolar için gelir ve gider ve birden fazla kripto paranın tüm kombinasyonlarını birden fazla Arbitraj Faktörü bulmadan kontrol etmek mümkündür. Bununla birlikte, Arbitraj Faktörlerinin 1.01'in üzerinde olduğunu gördüm; bu, basit kripto para birimi alışverişi yoluyla birkaç dakika içinde %1'lik bir getiri elde edilebileceğini gösteriyor.

Yukarıda açıklanan üç işlevi bir araya getirerek bir kripto arbitraj tarayıcısı oluşturabiliyoruz.

Döviz arbitrajı köklü ve düşük riskli bir ticaret yöntemidir, ancak geleneksel para birimlerine yönelik piyasa oldukça verimli ve rekabetçidir. Kripto para birimlerinde daha büyük bir fırsat var ve birkaç basit Python aracı stratejiyi kolaylaştırmaya yardımcı olabilir. NetworkX, bir Grafik oluşturmak ve arbitraj fırsatlarını hızlı bir şekilde aramak için kullanılabilir.

Ancak hâlâ aşılması gereken zorluklar var. İlk olarak, kripto para ticareti ücretleri çok yüksek olabilir. Bu, kârlı olabilmek için kriptolar arasındaki herhangi bir dengesizliğin önemli olması gerektiği anlamına gelir. Aynı zamanda, strateji otomatikleştirilirse ve periyodik olarak veya günün her saati çalışacak şekilde ayarlanırsa en etkili olacaktır. AWS EC2 bulut sunucuları veya Lambda işlevleriyle kripto ticaret stratejilerini uygulamaya ilişkin gelecekteki makaleleri izleyin.

Daha fazla içerik düzenglish.io

Kaynak: https://python.plainenglish.io/crypto-arbitrage-with-networkx-and-python-638166e5a947?source=rss——-8—————–cryptocurrency

Zaman Damgası:

Den fazla Orta