We wpisie sprzed kilku miesięcy sprawdziłem wpływ szerokości rynku na prawdopodobieństwo kontynuacji hossy. W dużym skrócie: jeśli większość akcji jest w trendzie rosnącym, to trzymamy WIG. Jeśli nie, wychodzimy z "pozycji" (w cudzysłowie, bo WIG-u nie da się kupić; bardziej chodzi o prognozę, czy hossa będzie trwała). Dla ułatwienia, tutaj jeszcze raz wykres:
Test jest bardzo prosty - mierzymy szerokość rynku tylko na podstawie ilości akcji, bez względu na wolumen, wagę w indeksie czy cokolwiek innego. To oznacza, że każda akcja ma taką samą wagę.
Ciekawość kazała mi sprawdzić, co by się stało, gdybyśmy mierzyli szerokość rynku z uwzględnieniem wolumenu. Łatwiej to wyjaśnić kodem. Zamieniamy:
double minMaxNow = minMax.calculate(marketData);
if (minMaxNow > 0) {
ups++;
}
if (minMaxNow < 0) {
downs++;
}
na:
double minMaxNow = minMax.calculate(marketData);
if (minMaxNow > 0) {
ups += marketData.getData(TURNOVER, 0);
}
if (minMaxNow < 0) {
downs += marketData.getData(TURNOVER, 0);
}
Czyli zamiast zwiększać zmienne o jeden (operator "++" przy ups i downs), dodajemy obroty (operator "+= getData(TURNOVER, 0))". Potem porównujemy 'ups' i 'downs' tak samo jak wcześniej.
Ku mojemu zaskoczeniu, wykres wygląda tak:
Taki wskaźnik ciągle daje minimalną przewagę (w szczególności pomaga ominąć kilka głębokich bess), ale już nie tak dużą. Wygląda więc na to, że w tym przypadku wolumen nie ma znaczenia. Wydaje się, że dla prognozowania większą wartość ma to, czy jest zainteresowanie małymi spółkami. Kolejny szczegół: gdy bierzemy pod uwagę obroty, to dostajemy dużo więcej "transakcji" (197 zamiast 23, gdy każda spółka ma taką samą wagę).
Do sprawdzenia pozostaje, dlaczego tak się dzieje i jak to wykorzystać. Jeśli macie jakieś pomysły, dajcie znać na Twitter / X.
Kod źródłowy użyty do testów znajduje się tutaj.
Następny wpis
Pytania lub uwagi? Twitter / X: Łukasz
Wojtów
Software do testowania rynków finansowych: Alis