Archiv štítku: investice

Jak například využít API COINBASE PRO

Co je to vlastně to API?
Jednoduše řečeno jedná se o způsob jakým vykonávat (v případě Coinbase) operace nad portfoliem vzdáleně z prostředí své aplikace, případně svého scriptu.

Co konkrétně můžu dělat?
Vše co se dá dělat je zdokumentováno, ale abych vás čtenáře takto neodbyl, tak příkladem jsou metody (funkce) pro získání přehledů produktů, za kolik se aktuálně obchodují, data k vykreslení candle grafů, správa objednávek a mnoho dalších.

Co konkrétně používám?
Na API jsem se napojil, abych si v budoucnu mohl vytvořit (naprogramovat) svoji investiční strategii a tu automatizovat. Protože, jak jsem dříve psal, je třeba sledovat výkyvy ceny, ty analyzovat a na základě toho nakupovat a prodávat. A když to nějak svedu já, tak v případě dostatku dat a možnosti algoritmizace, může počítač vyhodnocovat situaci například co pět sekund včetně noci a ne jako já jen několikrát denně. Ale aktuálně je to velké sousto, protože jsem se nad tím zamyslel a uvědomil si s čím vším podvědomě pracuji a jak na to nahlížím. A to co se dá nazvat intuicí by bylo potřeba nahradit velkým množstvím matematiky, kterou bych si musel osvěžit, případně nastudovat (o tom snad jindy :-))…
Takže jsem si aktuálně zvolil menší konkrétní cíl, který mi ale usnadní usnadnit jeden konkrétní případ užití (anglicky „Use case“, takže budu používat jen zkratku UC)…

Můj případ užití
Pokud vidíte v grafu několik opakujících se vlnek, které mají maximum někde kolem 1,3 EUR (pro kryptoměnu Ox (ZRX)) a minimum klesá někde k hodnotě 1,2 EUR, tak je fajn si nastavit nákup v režimu LIMIT a nemuset to stále sledovat. Můj návyk je, že si určuji, jaký chci mít náklad na jeden obchod, abych diverzifikoval riziko a následně si určím jaký chci mít výnos při prodeji. Takže například chci nakoupit přesně za 500 EUR a následně nastavit prodej na 510 EUR, zde již po odečtení FEE, takže čistý výnos 10 EUR. O tom jsem více psal v dříve publikovaném článku. Problém je ten, že v režimu LIMIT se takto naplánovat transakce nedá. Jako vstupní pole jsou „jednotková cena za kryptoměnu“ a „počet jednotek, které chci koupit“. No a nyní se dostávám k té pointě, že si tento jednoduchý formulář mohu přetvořit k obrazu svému a na pozadí si dopočítat počet kupovaných jednotek tak, abych se dostal na těch kýžených 500 EUR.

Objednávkový formulkář v režimu LIMIT
Objednávkový formulář v režimu LIMIT – zadána cena 1,2 EUR/ks a počet 400 ks, ale cena je 481,68 EUR. A takto bych musel iterovat nebo na kalkulačce počítat tak dlouho, dokud bych se nedostal na 500 EUR.

Můj formulář je ale přesně takový, jaký vyhovuje mému UC.
Vlastní formulář
Vlastní formulář, kde zadám přesně co chci a na pozadí se mi provede výpočet a založí daná objednávka.

Co je na pozadí?
Základem je jednoduchá třída pro komunikaci s Coinbase API:

<?php
 
class CoinbaseExchange {
	protected $key;
	protected $secret;
	protected $passphrase;
 
	protected $endpoint = 'https://api.pro.coinbase.com';
	protected $timestamp;
 
	public function __construct($key, $secret, $passphrase) {
		$this->key = $key;
		$this->secret = $secret;
		$this->passphrase = $passphrase;
		$this->timestamp = time();
	}
 
	private function signature($request='', $body='', $method='GET') {
		$body = is_array($body) ? json_encode($body) : $body;
		$what = $this->timestamp.$method.$request.$body;
 
		return base64_encode(hash_hmac("sha256", $what, base64_decode($this->secret), true));
	}
 
	public function sendRequest($request, $body='', $method='GET', $auth=false) {
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $this->endpoint.$request);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		if (strcasecmp($method, 'POST') === 0) {
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
		}
		curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
 
		if ($auth) {
			$headers = array();
			$headers[] = "Content-Type: application/json";
			$headers[] = "CB-ACCESS-KEY: " . $this->key;
			$headers[] = "CB-ACCESS-SIGN: " . $this->signature($request, $body, $method);
			$headers[] = "CB-ACCESS-TIMESTAMP: " . $this->timestamp;
			$headers[] = "CB-ACCESS-PASSPHRASE: " . $this->passphrase;
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
		}
 
		$output = curl_exec($ch);
 
		if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
			return $output;
		}
 
		curl_close($ch);
		return $output;
	}
}
?>

A pak implementace volání konkrétního requestu, dle dokumentace:

$cb = new CoinbaseExchange(KEY, SECRET, PASSPHRASE); // získáte při registraci
 
$totalPrice = (int)$_POST['totalPrice'];
$fee = 0.0035;
$price = (double)$_POST['price'];
$size = round(($totalPrice - ($totalPrice * $fee)) / $price, 2);
 
$request = '/orders';
$body = array(
    "size" => "$size",
    "price" => "$price",
    "side" => "buy",
    "product_id" => "ZRX-EUR"
);
 
$response = $cb->sendRequest($request, $body, 'POST', true);
 
echo $response; // json message, dá se dále zpracovat

Záměrně jsem kód hodně zjednodušil, aby z něho bylo patrné to podstatné. Například $fee, se dá také načítat aktuálně pomocí API, ale další řádky by zápis jen učinily nepřehledným.

Ta kouzelná formule, kterou „aplikace“ dělá za mě je tento řádek,

$size = round(($totalPrice - ($totalPrice * $fee)) / $price, 2);

kde vycházím z cílové investice např. 500 EUR ($totalPrice), odečtu fee a ze zbytku zjistím, kolik mohu koupit jednotek.

Doufám, že jsem vysvětlil význam API a nastínil základ pro implementaci pro službu COINBASE PRO.

Jako obvykle, kdyby byl jakýkoliv dotaz nebo připomínka, tak komentáře jsou vám k dispozici.

Jak vydělávat na kryptoměnách – od teorie k praxi

Včera jsem psal jak si hlídat kdy nakoupit a kdy prodat. Zní to jednoduše, ale dneska znázorním, jak jsem obchody realizoval reálně.

Znázornění průběhu ceny BTC během dne
Znázornění průběhu ceny BTC během dne

Když to člověk vidí zpětně, tak si odvodí, že ideální by bylo nakoupit v cca 15:45 za cca 24 300 € a prodat v cca 21:50 za cca 26 200 €. Při investici 1 000 € bych získal 0,04100893 BTC (poplatek za transakci 0,35 %, tedy 3,5 €) a při prodeji bych získal 1 070,67 € (3,5% poplatek ve výši 3,76 € je již odečten). Vydělal bych 70,67 €, což je cca 1 840 Kč (přepočteno na REVOLUTu). Pěkně!

Realita ale není tak růžová. Pojďme ale postupně…

Je úterý 27. 1. 2021 cca 13:00 a vývoj BTC vypadá následovně (jedná se o výřez prvního grafu).

Vývoj BTC 27. 1. 2021 cca 13:00
Vývoj BTC 27. 1. 2021 cca 13:00

Co asi tak si řekl můj investorský úsudek? Kupuj!
V 13:04:37 jsem za cenu 25 327.28 € nakoupil 0,01967270 BTC. Jak jsem popisoval včera, okamžitě jsem nastavil prodej na LIMIT za 26 015,05 €, tedy tak, abych na tom vydělal 10 € po odečtení poplatků.

Prvních pět minut situace vypadala tak, že jsem odhadl minimum a brzy budu mít peníze zpět. Ale za dalších pět byla situace následující (jedná se o výřez prvního grafu).

Vývoj BTC 27. 1. 2021 cca 13:15
Vývoj BTC 27. 1. 2021 cca 13:15

Takže v 13:17:30 jsem přikoupil dalších 0,01976658 BTC za jednotkovou cenu 25 206,99 €. Opět jsem nastavil na prodej za cenu 25 891,50 € se stejnou strategií, tedy abych vydělal 10 €.

A nyní bylo nutno jen čekat…

Dočkal jsem se (nebo snad ?) v 21:18:37 pro druhou transakci a v 21:26:41 pro transakci první a vydělal jsem 20 €.

Všechny tři transakce jsem zanesl do denního průběhu pro lepší orientaci.

  • zelená je hypotetická transakce, při které bych vydělal přes 70 € (viz popis výše)
  • červená je první reálná transakce
  • žlutá je druhá reálná transakce

Znázornění průběhu ceny BTC během dne s vyznačením transakcí
Znázornění průběhu ceny BTC během dne s vyznačením transakcí

Co vy na to?

Jak vydělávat na kryptoměnách – třeba na Bitcoinu (BTC)

Nejsem žádný krypto-investiční specialista a popíšu jen způsob, který sám aplikuji. Stejně tak nejspíše nepoužiji 100% správné názvosloví, ale myslím, že pro pochopení bude moje terminologie dostatečná a hlavně jasná.
Tento text volně navazuje na předchozí článek o investování pomocí burzy COINBASE PRO.

Jak vydělávat na kryptoměnách?

  1. Investice do nenápadných altcoinů (někdy se také nazývají shitcoiny) – investice spočívá v tom, že zainvestujete do nějakého levného COINu a doufáte, že vystřelí vzhůru. K tomuto jen takto ve zkratce. Tím se nechci zabývat.
  2. Dlouhodobé držení kryptoměny (tzv. HODLování). – ti co HODLují (zkomolenina slova HOLD (držet)), tak jen nakupují a neprodávají ve vidině, že v budoucnu vydělají balík. Tímto se taky dneska nechci zabývat.
  3. Čekání na prudký vzestup. – toto je oblíbená strategie. Čekat, až začne nějaká profláknutá kryptoměna (např. Bitcoin (BTC), Ethereum (ETH), …) prudce růst, nakoupit a pak na vrcholu prodat. Je to způsob, na kterém se dá relativně bezpečně vydělat velká spousta peněz za krátkou dobu.
    BTC vzestup červenec 2020 - leden 2021
    Růst ceny BTC červenec 2020 – leden 2021

    Tímto se ale taky dneska nebudu zabývat.

  4. Vychytávání „lokálních“ poklesů a následných vzestupů. – Je to způsob, kdy i ve chvíli, kdy dlouhodobě cena kryptoměny klesá, se dá stále vydělávat. ANO, toto chci dneska popsat.

Vychytávání „lokálních“ poklesů a následných vzestupů
I v případě, kdy cena kryptoměna ustavičně klesá, tak je možné na takové měně vydělávat.
BTC - pád mezi 20. 1. 2021 a 27. 1. 2021
Pád ceny BTC mezi 20. 1. 2021 a 27. 1. 2021

Stačí dostatečně zvětšit výřez a jde vidět, že například dneska mezi dvacátou a dvacátoudruhou hodinou stoupla cena za 1 BTC z 24 500 € na 26 000 €.
Růst ceny BTC mezi 20:00 a 22:00
Růst ceny BTC mezi 20:00 a 22:00

To by si ale každý řekl: „A jak jsem to měl vědět.“. Ano to by byla správná úvaha, ale co bylo důležitější, byl vývoj před dvacátou hodinou.
Ten vypadal následovně.
Vývoj kurzu BTC mezi 17:30 a 20:00
Vývoj ceny BTC mezi 17:30 a 20:00

Takže pokud si předchozí dva vývoje spojíme, tak dostaneme…
Vývoj ceny BTC mezi 17:30 a 22:00
Vývoj ceny BTC mezi 17:30 a 22:00

Nyní si asi každý položí otázku jak bezpečně investovat
Není nic jako 100% bezpečná investice. Vždy to je „hra“ a to u kryptoměn to platí mnohonásobně více než u jiné komodity. Pokud toto riziko akceptujete, tak je dobré si stanovit určitou míru rizika, které chcete při obchodování podstoupit.
Osobně investuji ve stejných blocích, aby se mi v tom dobře orientovalo. Tento blok může být třeba 100 €.

Konkrétní příklad z investice na COINBASE PRO:
Pokud bych dokázal nakoupit ve chvíli, kdy byl bitcoin z příkladu výše nejlevnější (20:00 za 24 500 €), tak za 100 € nakoupím 0,00406760 BTC a za poplatky burze zaplatím 0,35 € (aktuálně můj poplatek je 0,35 % při nákupu i prodeji). Z toho jasně plyne, že abych okamžitě neprodělal, tak musím stejné množství BTC prodat za 100,70 €, což znamená, že cena za 1 BTC musí stoupnout na minimálně 24 670 €. Tedy o 170 € oproti nákupu (24 500 €). Ale moje strategie není jen nakupovat a prodávat, ale vydělávat! A vydělávám tak, že nakoupené BTC okamžitě nastavím do automatické fronty, kde předem vypočtu za jakou cenu je musím prodat, abych vydělal 2 % (tedy 2 €). Ve zmíněném příkladu to je hodnota 25 165 €, tedy o 665 € více než cena za kterou jsem nakupoval (24 500 €). A v tuto chvíli se o daný obchod nemusím starat. Pokud ale mám čas a všimnu si tohoto vzestupu (nemusí být okamžitý), tak transakci mohu stáhnout z automatu a ručně si počkat na maximum (které samozřejmě musím odhadnout). Kdybych prodal nakoupených 0,00406760 BTC v 22:00 za maximálních 26 000 €, tak z prodeje získám 105,39 €, což je výdělek 5,39 € (tedy 5,39 % za dvě hodiny).

Je to směšně málo? Cca 5 % za dvě hodiny? A co když nebudete investovat po 100 € blocích, ale po 1000 € blocích? A co když taková příležitost nebude jedna denně, ale třeba tři denně? Tedy budete schopni s jednou „tisícieurovkou“, kterou otočím za den 3x, vydělat více než 150 €? Hmm…

Není všechno zlato co se třpytí
Abych byl férový, tak nutno podotknout i úskalí:

  • Je třeba mít na to čas a hlídat vývoj. Osobně se mi zdaleka nepodaří odchytit všechny tyto výkyvy během dne.
  • Je třeba mít dostatečný kapitál. Stává se, že si myslím, že daný pokles je TEN, který zapříčiní následný vzestup a následně cena klesne ještě níže. Možnost je dále nakupovat, případně čekat až se první obchod dokončí. K jakým různým situacím tu může dojít je asi zřejmé.
  • Ne vždy vychytáte nejnižší hodnotu a na druhé straně tu nejvyšší. Takto zpětně se o tom píše pěkně, ale je to trochu ruleta. Já ve většině případů jsem na sebe přísný a nastavím prodej do automatu tak, abych měl konstantní výdělek (zmíněné 2 %). Samozřejmě by byla jiná situace, kdyby byla daná kryptoměna dlouhodobě na vzestupu.
  • Dokonce se může stát, že vám některá investice dlouhodobě uvízne v „drahém pásmu“. Možnosti jsou buď prodat se ztrátou, pokud si myslíte, že reinvesticí daných prostředků ztrátu budete schopni pokrýt. Nebo na tuto částku nasadíte 2. strategii zmíněnou v úvodu článku. Případně se tu opět dají vymyslet další reálně situace a stejně tak jejich řešení…
  • Pokud to myslíte vážně, tak nemá cenu toto provádět s kapitálem 100 Kč. Sice výdělek bude procentuálně stejný, ale stojí ta ztráta času za to, abyste za den vydělali 6 Kč? Pokud to budete mít jen jako hru, tak prosím…

Jako obvykle se budu těšit na jakékoliv podněty či dotazy v diskuzi. Toto téma vnímám jako velice široké a naopak záběr v tomto článků je velice úzký.

Příště zkusím popsat prostředí COINBASE PRO