Poradie obchodov
Maximálny drawdown (realizovaná krivka kapitálu), série výhier a prehier aj priebežný kumulatívny výnos sledujú poradie, v akom sa obchody uzatvárajú. Kým beží ktorýkoľvek z nich — predvolene bežia všetky —, realizované obchody musia prichádzať v poradí podľa času zatvorenia: prvý obchod uzavretý skôr ako obchod prečítaný pred ním vyhodí UnorderedTradeSourceException, namiesto toho, aby engine vrátil čísla pre postupnosť, ktorá sa nikdy nestala. Zoradenie vo vnútri enginu by znamenalo držať v pamäti celú históriu, čo jediný prechod nikdy nerobí.
- Otvorené obchody (bez času zatvorenia) a obchody s rovnakým časom zatvorenia môžu prísť v ľubovoľnom poradí.
- Dopyt zoraďte cez ->orderBy('close_time')->orderBy('id'); kolekciu v pamäti najprv zoraďte cez ->sortBy('close_time')->values().
- Beh bez týchto kalkulátorov — except() s MaxDrawdown, Streaks, GrossCumulativeReturn a NetCumulativeReturn alebo only() bez nich — prijme ľubovoľné poradie. Všetky ostatné metriky vrátane frekvencie obchodovania od poradia nezávisia.
use RoundlyConsulting\TradingAnalytics\Analytics\GrossCumulativeReturn;
use RoundlyConsulting\TradingAnalytics\Analytics\MaxDrawdown;
use RoundlyConsulting\TradingAnalytics\Analytics\NetCumulativeReturn;
use RoundlyConsulting\TradingAnalytics\Analytics\Streaks;
// An in-memory collection: sort it by close time first
TradingAnalytics::calculate(collect($rows)->sortBy('close_time')->values());
// Out of order? The first trade that closed before the one read ahead of it throws:
// UnorderedTradeSourceException: Trade analytics follow the order trades close in, but a trade
// closed at [2024-03-02 12:00:00] arrived after one closed at [2024-03-05 08:00:00]. …
// Without the order-sensitive calculators, any order is accepted
TradingAnalytics::for($rows)
->except([MaxDrawdown::class, Streaks::class, GrossCumulativeReturn::class, NetCumulativeReturn::class])
->calculate();Kalkulátory citlivé na poradie implementujú značkovacie rozhranie SequentialAnalyticsInterface; engine kontroluje poradie len vtedy, keď je niektorý z nich aktívny.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.