10 Python Knižníc Pre Algorithmické Obchodovanie

10 Python knižníc bez ktorých sa nezaobídem

V tomto článku nájdeš niekoľko Python knižníc, resp. balíčkov, ktoré sú, pre mňa, ako kvantitatívneho analytika, dátového vedca a algoritmického tradera, denným chlebom. Python je úžasný nástroj v ktorom s nespočetným množstvo knižníc. Vysvetlím ti ich benefity a na čo dané knižnice používam.

1. Práca s dátami

Pandas je to, čo potrebuješ. Pandas (Python Data Analysis Library) je najužitočnejší balíček na prácu so štrukturovanými dátami.

Používam ho prakticky v každej úlohe. V porovnaní s Microsoft Excelom, ktorý pozná každý a používa ho na prácu s menšími databázami, aplikuje rôzne stĺpcové/riadkové operácie. Porovnávať Excel a Pandas je ako porovnať Ladu s Teslou. Skoro každú dátovu operáciu dokážeš urobiť v Pandas, s použitím DataFrames. Jedinou limitáciou je veľkosť RAM pamäte v tvojom počítači. Kvôli tomu Pandas nie je ideálny nástroj na prácu s Big Data (naozajstné big data sú v terabajtoch). Pre tie potrebuješ databázový systém, napr. Hadoop a v Pythone potom môžeš použiť pyspark , ktorý je naozaj rýchly, alebo výpočtové nastroje na grafickej karte od Nvidie, RAPIDS. Pandas používam denne odkedy som začal programovať v 2016 a vždy ma dokáže prekvapiť s nejakou užitočnou funkciou, ktorú som nepoznal.

2. Práca s číslami

V podstate všetku matematiku a vektorové operácie dokážeš robiť s NumPy. Pandas je postavený na tomto balíčku, takže spolu fungujú perfektne. NumPy je veľmi ľahký a intuitívny. Napríklad výpočet drawdownu tvojho backtestu môžeš vykonať na jednom riadku:

x - numpy.maximum.accumulate(x) 
kde x je vektor kumulatívna suma výnosov (NumPy array, resp. Pandas Series).

3. Prepojenie na brokera

Táto sekcia závisí od tvojho výberu brokera. Ja používam Interactive Brokers [IB] od roku 2015. Poskytujú profesionálne služby, majú nízke komisie, prístup ku skoro všetkým trhom, obchodujú všetky finančné inštrumenty a hlavne majú dobré API do viacero programovacích jazykov. Ja však používam ib_insync, čo je API postavená na originálnej TWS Python API (TWS je v tomto prípade Trader Workstation).

4. Grafy a vizualizácie

Pre lepší náhľad do dát a pochopenie širšieho obrazu často potrebujeme vizualizácie. 

Pre rýchle vizualizácie používam Matplotlib, ktorý dokáže vykresliť čokoľvek. Často používam aj Seaborn, ktorý je postavený na Matplotlib a obsahuje mnoho prednastavených grafov hlavne pre štatistické analýzi. Keď potrebujem prezentovať obrázok v lepšej forme (celková vizualizácia), resp. interaktívne obrázky, tak používam Plotly.

5. Štatistika

Veľmi často pri analyzovaní cenových dát alebo backtestov potrebuješ používať rôzne štatistické metódy, resp. Testy. Najlepšie knižnice na štatistickú analýzu sú SciPy a Statsmodels, ktoré sú tiež postavené na NumPy.

 

Tieto balíčky nepoužívam tak často ako Pandas, avšak keď robím rôzne štatistické testy, resp. potrebujem náhľad do dát s využitím štatistických modelov, tak vždy siahnem po týchto balíčkoch. Modely ktoré sú v týchto balíčkov nepoužívam v produkcii (v tradingu), na to mám inú knižnicu, avšak často potrebujem robiť hlbšie analýzy rôznych modelov. Statsmodels používam na štatistické testy, regresiu, modely pre časové rady alebo lineárne modely; SciPy používam hlavne pre špeciálne matematické funkcie, optimalizáciu, Fourierové transformácie a nejaký základný signal processing.

 

Ak potrebujem rôzne finančné štatistiky, resp. využívam nové metodológie v algoritmickom obchodovaní tak siahnem po mlfinlab. Balíček je založený na jednej z najlepších kníh o algo-obchodovaní, ktorá bola v dobe písania článku dostupná, je však nadčasová a obsahuje mnoho úplne nových metodológií (len pre pokročilých algo traderov). Marcos Lopez de Prado: Advances in Financial Machine Learning.

6. Strojové učenie (MACHINE LEARNING)

Verím tomu, že každý dátovy vedec ktorí sa dostal k strojovému učeniu počul o scikit-learn alebo sk-learn. Tento balíček obsahuje skoro všetky modely strojového učenia ktoré si dokážeš predstaviť. Môžeš to použiť na hocijakú úlohu strojového učenia, od spracovania dát, cez prípravu vstupov, až po samotné fitovanie modelu a následné analýzy výsledkov daného modelu. Táto knižnica, podobne ako Pandas a Numpy, obsahuje obrovské množstvo rôznych funkcií.

7. Neurónové siete & DEEP LEARNING

Na umelé neurónové siete (Artificial Neural Networks ANN) používam PyTorch (fungujúce na procesore alebo grafickej karte). Pomocou spomínaného balíčka scikit-learn môžeš urobiť tiež nejaké základne ANN. Ak však chceš ísť hlbšie, potrebuješ TensorFlow alebo PyTorch (resp. Keras, ktorý je užívaťelský prístupnejšia verzia TensorFlow). Osobne preferujem PyTorch, s ktorým mám skúsenosti aj s aplikovaním na algoritmické obchodovanie. Napríklad úspešne som aplikoval convolutional autoencoders, rekurentné neurónové siete a niekoľko ďalších metodológií. Táto téma je veľmi pokročilá, mnohé články ktoré sú k pokročilým metodológia budú dostupné len v angličtine. Ak si začiatočník, tak nemá žiaden zmysel aby si sa tejto téme začal venovať (nechaj si to na neskôr, keď budeš mať viac skúseností).

8. GRADIENT BOOSTING

Gradient boosting je metodológia strojového učenia, avšak zaslúži si špeciálnu pozornosť. XGBoost je jeden z mojich obľúbených modelov strojového učenia (tiež je použiteľný na grafickej karte, čo výrazne zrýchli trénovací čas). Spolu s náhodnými lesmi ho používam veľmi často. Každý model strojového učenia je dobrý na špecifické úlohy, väčšinou z mojej osobnej skúsenosti (ale aj z analýz, ktoré algoritmy sú najpoužívanejšie v Kaggle) má XGBoost najlepšie výsledky pre štruktúrované dáta (nie video, text, zvuk). Je však veľmi jednoduché overfitovať tento model na dáta. Podobne ako s ostatnými modelmi, nikdy nepoužívaj model keď nerozumieš myšlienke modelu, ako funguje a čo vlastne robí. Veľakrát je výstup z modelu pre človeka black-box, ak je aj samotný model pre teba black-box, radšej ho v algoritmickom obchodovaní nepoužívaj.

9. Výpočty na grafickej karte

Vďaka alternatívnym dátam a Big Data je potrebné v tomto zozname zahrnúť aj prácu na grafickej karte, ide o využitie hlavne pre neurónové siete. Nvidia vytvorila veľmi užitočné balíčky, ktoré plne fungujú na grafických kartách, ide o projekt Nvidia RAPIDS. 

Obsahuje to DataFrames na štýl Pandas, avšak plne funkčné na grafickej karte – cuDF. A tiež niečo ako scikit-learn na grafickej karte – cuML. V dobe písania tohto článku s týmito balíčkami zatiaľ nemám veľa skúseností.

10. OTHERS

Python obsahuje obrovské množstvo balíčkov a veľmi závisí od úlohy, ktorú chceš riešiť. V tomto zozname som spomenul pre mňa tie najdôležitejšie. Často používam aj iné balíčky, avšak mimo danej úlohy sa k nim už nevrátim. Celkom užitočné balíčky: 

beautifulsoup4 – web scraping, 

empyrical – na výpočty finančných metrík, 

feather-format – na rýchle ukladanie-načítanie väčších dát a tiež v rozumnej veľkosti, 

arch – autoregressive conditional heteroskedasticity

Leave a comment