Čtvrtek, 7 listopadu, 2024

Alpha Vantage. Demokratizace finančních dat, s kterými můžete pracovat za pár minut

Sdílet

Úvod

V počátcích, kdy Aplha Vantage vznikala, byla dotováná Y Combinator. Tato společnost se zabívá financováním startupových ideí, tedy financují jedince, kteří mají dobré nápady. Dle jejich slov, společnost Y Combinator poskytuje tzv. seed funding, což je menší objem financování za očekávání menších výnosů.

Idea, která stála u vzniku společnosti Alpha Vantage, byla prostá. Vytvořit rozhraní, které zdemokratizuje finanční data. Realizací této ideji bylo rozhraní, tzv. Application Programable Interface, API, které by poskytovalo různá data z tržního prostředí. Výhodou tohoto rozhraní je, že pro technicky zdatné uživatele je připravené ihned k použití. Na druhou stranu Alpha Vantage poskytuje rozhraní pro stažení finančních dat přímo do tabulkového procesoru. V dalších částí tohoto článku se popíše podrobný postup pro napojení se na rozhraní pomocí pythonu.

Obr.1. Hlavní stránka webové stránky společnosti Alpha Vantage. Zdroj: Autor

Přehled poskytovaných dat

Dokumentace Alpha Vantage rozhraní obsahuje veškeré informace potřebné pro práci daty. Je tam uveden i způsob získání API klíče, který souží k získání přístupu k datům. Získání klíče bude popsáno v další části textu, spolu s ukázkou napojení na rozhraní. Nicméně pro nedočkavé existuje možnost okamžitého otestování tohoto rozhraní pomocí předem připravených dotazů na jednotlivá rozhraní, dostupných přímo v dokumentaci. Pro zobrazení dat z těchto příkladů stačí klinout na jednotlivé dotazy a během okamžiku se v prohlížeči zobrazí nové okno s výsledky.

V této kapitole budou prezentovány jednotlivé druhy dat. Vzhledem k tomu, že jednotlivé druhy dat poskytují řadu metrik v tomto článku se popíšou nevyužívanější metriky v rámci jednotlivých druhů dat, které Alpha Vantage má v samotné dokumentaci označené jako nejvyúžívanější.

Základní druhy poskytovaných dat jsou…

  • Časové řady a historická data, až 20 let do minulosti
  • Základní data o společnostech
  • Data o měnových kurzích z ForEx a jejich časové řady
  • Data o měnových kurzích různých kryptoměn včetně jejich časových řad
  • Data technických indikátorů pro realizaci technické analýzy trhu

V rámci časových řad jsou dostupné intradenní, denní, týdenní a měsíční data ohledně akcií, o které má uživatel zájem, zjistit informace. V rámci tohoto druhu dat jsou dostupné dvě dodatečné metriky. První metrika s názvem „Quoted Endpoint“ poskytuje lehké rozhraní, které poskytuje pouze cenu a objem vybraného kapitálu, narozdíl od ostatních metrik časových řad. Druhá dodatečná metrika má název „Search Endpoint“ a jedná se o rozhraní, které poskytuje data potřebná pro různé našeptávače do textových polí pro funkcionalitu vyhledávání.

Skupina metrik ohledně základních dat o společnostech nabízí uživatelům možnost získat rychle data ohledně subjektech, který svoje akcie vystavěli na trhu. Pomocí těchto dat může obchodník ověřit základní údaje těchto subjektů, jako jsou příjmy, cashflow, rozvahy a mnohé další. Jako nejvyužívanější metrikou v této skupině dat je rozhraní pro získání přehledu o společnosti.

V další skupině metrik jsou dostupné data ohledně ForEx trhů. Nejdůležitější metrikou z této skupiny jsou měnové kurzy, které jsou i zde dostupné ve formě intradenní denní, týdenní a měsíční data. Nejvýužívanější metriky v rámci ForEx rozhraní jsou měnové kurzy a intradenní data.

Obdobná je situace metrik i v rámci rozhraní pro kryptoměny. V rámci kryptoměn jsou nejvýužívanějšími metriky opět měnové kurzy a pak ještě zdravotní index kryptoměny. Tato metrika má za cíl svým uživatelům poskytnout hodnocení samotného projektu, který dodává danou kryptoměnu. Díky této hodnotě uživatel tohoto rozhraní může zjistit, jak moc se krypotoměna využívá, chování vývojářů a zralost měny na trhu.

Poslední skupinou nabízeních metrik v dokumentaci jsou technické indikátory. Tyto indikátory slouží jako vstup do pokročilejší technické analýzy trhu, která poskytne svým uživatelům predikce vývoje na trhu. V této skupině existuje řada metrik. Nejvýuživanější jsou SMA, EMA, VWAP, MACD, STOCH, RSI, ADX, CCI, AROON, BBANDS, AD a OBV. Bohužel v tomto článku nebude možné pokrýt vlastnosti těchto metrik a jejich využití, protože tato oblast již jde mimo rozsah tématu. Nicméně odkazy na zdroje popisující tyto metriky jsou dostupné přímo v dokumentaci Alpha Vantage. V další kapitole bude uveden postup k získání samotných dat z jednotlivých rozhraní.

Návod pro práci s rozhraní Alpha Vantage

Jak bylo uvedeno v úvodu, Aplha Vantage je tu pro demokratizaci finanční dat. Dále je misí tohoto projektu poskytovat tato data flexibilně jak pro technicky zdatné, ale i pro „normální“ uživatele. V následujcím textu bude popsán postup, kde na jeho konci bude čtenář, pokud průběžně prováděl popsané kroky, mít k dispozici data o trhu.

Vzhledem k tomu, že rozhraní Alpha Vantage poskytuje pro jednotlivé metriky většinou dva formáty – JSON a CSV – je možné jejich rozhraní použít v rámci široké škály případů užití. Pro účely tohoto návodu se budou data obou dvou formátů zpracovávat pomocí python jazyka. Dále pro účely tohoto návodu byl použit python verze 3.8.5 (odkaz pro jeho stažení a instalaci).

Získání přístupu

K tomuto skvělému rozhraní je možné získat zdarma přístup vyplněním následujícího formuláře na tomto odkazu.

Obr.2. Formulář pro získání zdarma klíče pro přístup k rozhraní Alpha Vantage. Zdroj: Autor

Po odeslání formuláře stránka poskytne uživateli jeho klíč pod formulářem. V případě, že uživatel z nějakého důvodu nestihne klíč ze stránky opsat, je možné zadat stejné údaje do výše uvedeného formuláře a tím zobrazit api klíč znovu. Klíč má podobu textového řetězce a je třeba jej uložit ideálně do skrytého souboru (postup pro vytvoření skrytého souboru na jakémkoliv operačním systému zde).

Zdarma přístup umožňuje svým uživatelém provádět až 5 dotazů za minutu a celkem 500 dotazů za den.

Volání rozhraní z příkazové řádky pythonu

V této části návodu se popíše způsob volání rozhraní přímo z pythonu, za využití právě získaného api klíče. Kromě api klíče bude třeba pro práci s python příkazovou řádkou nainstalovat knihovnu alpha_vantage pomocí balíčkového manažera pythonu. V tomto návodu byl použit pip3. Repozitář kódu výše zmíněné knihovny, obsahující i dokumentaci, je k dispozici zde.

Prvním krokem bude připravit si prostředí pro práci s pythonem. Příprava prostředí je nutností pokud uživatel má na svém počítači i jiné python projekty a nechce ovlivnit jejich prostředí. Pokud uživatel není python vývojář i tak doporučuji vytvořit toto prostředí, protože po skončení práce je možné celé prostředí jednoduše smazat a neovlivnit tím zbytek systému. Nejdříve je třeba vytvořit novou složku a zkopírovat do schránky absolutní cestu k této složce. Poté do příkazové řádky stačí zadat následující příkaz.

python3 -m venv /absolutni/cesta/k/vasi/slozce

Tímto se vytvoří prostředí pro práci s pythonem, kde pokud se něco pokazí, nebude problém celou složku smazat a výše uvedený postup znovu zopakovat. Nicméně pro aktivaci tohoto prostředí je nutné nejdřív přejít do složky obsahující prostředí a v příkazové řádce zadat následující příkaz.

pro linux (bash, shell): source bin/activate

pro windows (cmd.exe, powershell): activate

V této chvíli se v rámci příkazové řádky odstíní veškerá aktivitia s pythonem od globálního prostředí pythonu. Jakékoliv balíčky, které si uživatel nainstaluje v rámci tohoto prostředí neovlivní ostatní balíčky v systému, což je obecně dobrá ochrana proti znehodnocení své python instalace. Nyní je možné nainstalovat knihovnu pro práci s rozhraním Alpha Vantage a to pomocí tohoto příkazu.

pip3 install alpha_vantage

Nyní je prostředí připraveno pro práci s rozhraním. Python umožňuje svým uživatelům pracovat ve dvou režimech. Jeden režim je příkazová řádka, kde pomocí příkazu python3 se načte jednak příkazová řádka pythonu a jednak python interpret. Tento interpret pak bere jako vstup každou řádku od uživatele a ihned vykonává příkazy. Druhým režimem je spouštění celých skryptů, které je možné psát i v prostém poznámkovém bloku, za předpokladu, že soubor bude posléze uložen s koncovkou „.py„. Pro účely tohoto návodu budeme používat první režim, tedy režim příkazové řádky python. Pro její spuštění stačí zadat v rámci připraveného prostředí pomocí tohoto příkazu.

python3

V této chvíli jediné, co je nutné udělat předtím, než se provede první požadavek o data z rozhraní Alpha Vantage, je nahrát knihovnu do příkazové řádky, aby bylo možné využívat její funkce, a zároveň bude potřeba nahrát api klíč, který je nutný pro autorizaci každého požadavku vůči rozhraní.

Co se týče nahrávání knihovny, alphva_vantage knihovna pro python poskytuje moduly, které odpovídají jednotlivým druhým poskytovaných dat, které jsou popsané v kapitole Přehled poskytovaných dat. V následujících řádcích jsou uvedené jednotlivé druhy poskytovaných dat jako balíčky v pythonu

  • časové řady: from alpha_vantage.timeseries import TimeSeries
  • základní data: from alpha_vantage.fundamentaldata import FundamentalData
  • měnové kurzy: from alpha_vantage.foreignexchange import ForeignExchange
  • krypto měn. kurzy: from alpha_vantage.cryptocurrencies import CryptoCurrencies
  • technické indikátory: from alpha_vantage.techindicators import TechIndicators

Pro nahrání klíče bohatě postačí, když klíč uživatel zkopíruje přímo do příkazové řádky. Nicméně z hlediska informační bezpečnosti je tento způsob zacházení s klíči velmi nezodpovědný. Mnohem vhodnější postup je možné realizovat, jen pokud uživatel na začátku tohoto návodu si dal práci s tím uložit klíč do skrytého souboru. Zkopíruje li uživatel tento skrytý soubor do složky, kde má připravené prostředí pro práci s pythonem, je možné načíst api klíč do proměnné bez nutnosti soubor otevírat kopírovat samotný klíč. Příkaz pro tento úkon je zde.

proměnná_s_api_klíčem = open(‚název_skrytého_souboru‘, ‚r‘).readline()

Parametr ‚r‘ zajišťuje, že skrytý soubor je jen otevřen pro čtení a není možné nijak klíč změnit. Nyní je možné inicializovat rozhraní, dle přání. Dejme tomu, že nás zajímají časové řady. Pro incializaci rozhraní pro časové řady je nutné nejdříve mít a) nahranou knihovnu, za b) nahraný klíč do proměnně a poté stačí zadat následující příkaz.

rozhraní = TimeSeries(key=proměnná_s_api_klíčem,output_format=‚json‘)

Pro získání konkrétních dat, stačí podle dokumentace vybrat jaký typ nás zajímá a poté zavolat příslušnou metodu objektu rozhraní, které se právě inicializovalo. například, pokud chceme vidět denní data ohledně společnosti Amazon stačí zadat následující příkaz.

data = rozhraní.get_daily(‚AMZN‘)

Kde ‚AMZN‘ je symbol Amazon akcií. Po provedení tohoto příkazu jsou v proměnné data uvedeny námy požadované data ve formátu JSON. Pro zobrazení dat stačí jen zopakovat název proměnné v příkazové řádce pythonu.

data

Po zadání výše uvedeného příkazu se ve zbytku příkazového řádku vypíšou data v JSON formátu. Pro zopakování všech předchozích kroků a zobrazení výsledku je níže uveden screenshot z terminálu (použitý operační system je z řad linuxových distribucí).

Obr.3. Shrnutí postupu pro získání dat z jednoho z rozhraní nabízených společnosti Alpha Vantage a prezentace výsledků po zavolání požadavku vůči tomuto rozhraní. Zdroj: Autor

Závěr

Ačkoliv se dnešní svět pokročilých technologií zdá být velmi komplexní, je možné s vynaloženým malého úsilí uchopit tuto technologii a dokonce z ní těžit úžitek. Firma Alpha Vantage měla skvělý nápad poskytnout data z různých trhů obyčejným lidem, kteří teď s vlastním počítačem mohou obchodovat obdobnými metodami, jako větší podílové fondy.

Svět API rozhraní je mnohem větší, než to, co bylo prezentováno v tomto článku. Zkrátka se jedná o URL adresy, které jako všechny jiné, jsou dostupné z internetu, ale místo toho, aby vraceli stránky, vrací data ve formátech, které se dají použít v rámci jakékoliv jiné aplikace. Nejlepší na tom je to, že opravdu stačí URL adresu zadat do prohlížeče a ty data se stáhnou. Pokud by pak uživatel měl zajem přejít od čtení zdlouhavých článků, jejichž text je spíše pohled jeho autora, ke čtení dat a vyvozování vlastních závěrů, stačí vytvořit soubor, který obsahuje téměř stejný počet řádků, jako výše uvedený příklad a ty data bude mít k dispozici ihned.

ZDROJE: https://www.alphavantage.co/documentation/ | https://www.ycombinator.com/about/ | https://docs.python.org/3.8/ | https://github.com/RomelTorres/alpha_vantage |

OBRÁZKY:
Obr.1. Hlavní stránka webové stránky společnosti Alpha Vantage. [Zdroj: Autor]
Obr.2. Formulář pro získání zdarma klíče pro přístup k rozhraní Alpha Vantage. [Zdroj: Autor]
Obr.3. Shrnutí postupu pro získání dat z jednoho z rozhraní nabízených společnosti Alpha Vantage a prezentace výsledků po zavolání požadavku vůči tomuto rozhraní. [Zdroj: Autor]

Číst více

Další články