Robot care tranzacționeaza acțiuni și obligațiuni

Cu cât studiezi și înveți mai multe despre investiții cu atât realizezi cât de dificil e să ai profituri mari in mod consistent. Deși majoritatea investitorilor își dezvoltă strategii în funcție de tipare detectate în istorie, piețele financiare își schimbă în mod constant comportamentul și ies din aceste tipare.

Multe celebrități din mediul afacerilor și investițiilor le recomandă oamenilor obișnuiți să investească într-un ETF care urmărește piața de acțiuni și să lase banii acolo câteva zeci de ani. Ei spun că randamentul așteptat ar fi în jur de 10% pe an pentru că aproximativ aceasta e media anuală a creșterii indicelui S&P500 (care urmărește evoluția celor mai mari 500 de companii listate la bursele din SUA).

Problema cu strategia aceasta e că cei 10% pe an nu sunt garantați indiferent de momentul în care începi să investești și momentul în care vrei să-ți scoți banii din investiții. De fapt, au existat situații în care indicele a scăzut cu 50% sau mai mult și a durat ani buni până să revină.

De exemplu, daca ai fi investit in S&P500 in anul 2000 și ai fi păstrat poziția de atunci până astăzi, niciodată nu ai fi ajuns la o medie de 10% pe an, iar timp de 15 ani investiția ta ar fi fost în pierdere. 15 ani!

Și încă ceva… După prăbușirea bursei din anul 2000 (după ce atinsese un ATH de 1520), în 2002 a atins pragul minim de 800.

Dacă ai fi cumpărat chiar în acel moment (lucru foarte greu) și ai fi vândut în 2021 când S&P500 a atins un ATH de 4818 ai fi obtinut un randament anual de aproape 10%.

Dacă nu ai fi vândut la 4818, astăzi randamentul mediu anual ar fi 8.93%.

Câți investitori crezi că reușesc să cumpere în  momentul în care prețul e minim și să vândă când e maxim?

Așadar, nu prea ține chestia asta cu investitul în S&P500 e egal cu profit de 10% pe an și îți recomand să fugi cât mai departe de cei care-ți spun asta (din păcate și eu o luam de bună acum câțiva ani 🙂 ).

Nici eu nu știu prea multe, dar am învățat că probabil cel mai important lucru în investiții e să ai un drawdown cât mai mic. Am vorbit despre drawdown în acest articol.

Cine reușește asta, are șanse foarte mari să aibă profituri mult peste medie.

Există un mod (care nu e deloc simplu) de a reduce drawdown-ul. Din cauza schimbării continue a comportamentelor piețelor financiare, nu există o strategie care să funcționeze la infinit.

De aceea e o idee bună să folosești diversificare la nivel de clasă de active (acțiuni, obligațiuni, mărfuri, cripto, cash), la nivel de strategii de tranzacționare și la frecvența de tranzacționare.

Mai departe îți povestesc despre o mică mică mică bucățică ce poate fi adăugată la un complex puzzle care ar însemna un sistem de tranzacționare ce îndeplinește criteriile de diversificare menționate mai sus.

Algoritmul Paired Switching Strategy

Am povestit despre aceasta strategie în primul episod al serialului despre lucrări de cercetare despre bursă.

Strategia analizeaza în mod periodic două clase de active, acțiunile (ETF-ul SPY) și obligațiunile guvernamentale din SUA (ETF-ul TLT) și alocă bugetul de investiții în activul cu trendul de creștere cel mai puternic, determinat conform unei formule proprii.

Testele efectuate de autorii lucrării pe date istorice au arătat că această strategie ar fi dat randamente mai bune decât invetiția in SPY.

Face testul la începutul fiecărei luni și formula e una simplă. Pentru fiecare tip de active calculează raportul dintre prețul curent și prețul din urmă cu 3 luni, apoi compară cele două rezultate și investește capitalul în activul cu raportul mai mare.

În articolul precedent am inclus un simplu robotel de tranzactionare în care am explicat câțiva pași despre procesul de a dezvolta asemenea progrămele: conectarea la platforma de tranzacționare, logica sau algoritmul roboțelului, plus crearea și plasarea ordinelor de tranzacționare.

Astăzi mergem mai departe ca să-ți mai arăt două chestii esențiale pentru dezvoltarea roboțeilor și pentru a demonstra acești pași am ales să implementez strategia descrisă mai sus, Paired Switching Strategy (PSS).

Apropo de construirea unui sistem complex cu diversificare în cele 3 direcții pomenite mai sus: clasa de active, frecvență și strategie cred că o versiune îmbunătățită a acestui algoritm și-ar găsi locul în sistem.

Strategia e simplă, folosește 2 clase de active și are o frecvență pe termen lung.

Înainte să includ codul o să explic pe scurt ce chestii noi conține față de roboțelul prezentat în articolul precedent.

1. Actualizare date istorice

Pentru a implementa logica acestui robotel e nevoie de date despre preturile ETF-urilor SPY si TLT. Acestea se pot obtine de la Interactive Brokers, dar e nevoie de două abonamente pentru date de piață care costă $14.5.

Pentru activarea acestora intri in contul tau la Settings /  Market Data Subscriptions și activezi US Equity and Options Add-On Streaming Bundle plus US Securities Snapshot and Futures Value Bundle. 

Pentru activare trebuie sa faci click pe rotița Configure, apoi pe Tab-ul Quote Bundles și să bifezi cele două opțiuni de mai sus.

Acum poți apela API-ul Interactive Brokers pentru a face cereri de date despre prețuri.

Toate optiunile de interfețe puse la dispozitie de IB API se gasesc documentate pe aceasta pagina: https://interactivebrokers.github.io/tws-api/market_data.html.

Eu am folosit reqHistoricalData(). Acestei functii ii spui pentru ce activ vrei sa-ti returneze preturile, la ce interval de timp și câte „bars” dorești.

Un bar e un set de date specific unui interval de timp definit care poate fi de ordinul secundelor, minutelor, orelor, zilelor sau lunilor.

Pentru robotelul nostru e nevoie de „bars” lunare care contin data, pretul de deschidere pentru luna respectiva, pretul de închidere, prețul maxim și prețul minim.

Apelul din exemplul meu arata asa: reqHistoricalData(str(index),c,””,”3 M”,”1 month”,”TRADES”,1,1,True,[])

Îi cer un total de 3 „bars” pentru lunile din urmă, îi spun că e vorba despre bars lunare și îi mai spun că vreau să-mi dea și prețurile în timp real după ce termină cu cele istorice.

În urma acestui apel, IB Api va apela funcția de callback historicalData(self, reqId, bar) pentru fiecare bar cerut și apoi va continua cu apelul funcției de callback historicalDataUpdate(self, reqId, bar) pentru a-mi trimite datele de preț în timp real.

Datele de preț în timp real vin la fiecare 5 secunde atunci când bursa e deschisă.

2. Actualizare date legate de contul de tranzacționare

Pentru a gestiona fondurile din contul tău, a închide și deschide poziții roboțelul are nevoie să știe câte fonduri disponibile ai în cont și ce poziții sunt deschise.

Pentru a obține aceste informații am folosit metodele reqPositions() si reqAccountSummary(). Acestea sunt incluse într-un fișier separat (găsit pe internet) pe care o să-l pot folosi și la alți roboți.

Poti folosi linistit codul, dar trebuie revizuit, testat și adaugata o bucata care gestioneaza intreruperea conexiunii intre robot si IBAPI.

Poti vedea si descarca cele doua fisiere aici: https://github.com/bogdanswp/ib-bot-pss-strategy/tree/main

Acest cod relativ simplu poate fi adaptat sa tranzactioneze perechi de active în piața forex sau in piata cripto, un exemplu evident fiind perechea BTC/ETH.

Cum probabil știi criptomonedele reprezintă o clasă de active relativ nouă. Mulți investitori experimentați spun că niciodată nu ar tranzacționa așa ceva pe când fanaticii cripto sunt convinși că tehnologia lor e răspunsul la orice problemă din Univers.

În materialul următor o să-ți spun dacă partea de diversificare după clasa de active merită să aloce o bucățică și în piața cripto.

Pe curând,

Bogdan Popescu – Clubul Investitorilor

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.