5.4 KiB
DLOB Retention And Feature Store Plan
Status na 2026-03-29.
Ten dokument zapisuje robocze ustalenia o:
- retencji danych DLOB na
mevnode_bot - ryzyku zajetosci dysku
- tym, co warto trzymac dlugo pod modele / "economic transformers"
Aktualny stan operacyjny
Dysk
- root
/namevnode_bot:3.6T - zajete: ok.
471G - wolne: ok.
3.0T - biezace uzycie: ok.
14%
Najwiekszy konsument miejsca:
- PostgreSQL / TimescaleDB na local volume poda
postgres-0 - rozmiar bazy
crypto: ok.457 GB
Najwieksze hypertable:
public.dlob_all_derived_ts: ok.260 GBpublic.dlob_hot_snapshot_ts: ok.177 GBpublic.dlob_hot_derived_ts: ok.19 GB
Wniosek:
- miejsca nie brakuje teraz
- ale storage DLOB jest juz na tyle duzy, ze trzeba nim zarzadzac swiadomie
Od kiedy sa dane
dlob_hot_snapshot_ts: od2026-03-17 00:23:36.013+00dlob_hot_derived_ts: od2026-03-17 00:23:36.013+00dlob_all_derived_ts: od2026-03-17 00:44:42.386+00
Aktualna retencja TimescaleDB
Na 2026-03-29 retencja jest juz ustawiona i joby sa
Success.
dlob_hot_snapshot_ts:30 daysdlob_all_derived_ts:30 daysdlob_hot_derived_ts:180 days- legacy
dlob_stats_ts/dlob_depth_bps_ts/dlob_slippage_ts*:7 days
Wazne doprecyzowanie:
- stare rekordy nie beda "nadpisywane"
- stare chunki beda usuwane przez polityki retencji
Praktycznie:
- tabele
30-dayzaczna byc realnie przycinane okolo2026-04-16 dlob_hot_derived_tszacznie byc realnie przycinane dopiero po osiagnieciu ok.180 days
Czy trzeba juz robic ring buffer
Nie pilnie.
Lepsza kolejnosc:
- Zostawic obecna retencje.
- Sprawdzic po
2026-04-16, czy30-daytabele rzeczywiscie zaczely sie wyplaszczac rozmiarowo. - Wlaczyc kompresje TimescaleDB dla duzych hypertabli.
- Dopiero potem decydowac, czy potrzebny jest dodatkowy custom ring buffer.
Powod:
- miejsca jest duzo
- retencja juz istnieje
- najwiekszy zysk teraz da kompresja, nie customowa logika bufora
Wazna obserwacja
Na 2026-03-29 kompresja TimescaleDB dla tabel
dlob_* jest wylaczona:
public.dlob_all_derived_ts:compression_enabled = falsepublic.dlob_hot_snapshot_ts:compression_enabled = falsepublic.dlob_hot_derived_ts:compression_enabled = false
To jest najprostszy kandydat na kolejny krok oszczedzania miejsca.
Co warto trzymac dlugo dla modeli
Nie warto trzymac wszystkiego w raw snapshotach.
Do treningu modeli bardziej oplacalne jest trzymanie:
- stalych cech numerycznych
- etykiet future outcome
- kilku skal czasowych
Zamiast:
- pelnego
payload JSON - wszystkich poziomow
bids/asksdla kazdego ticka - duplikowania raw i derived w dlugim horyzoncie
Rekomendowana piramida danych
Warstwa 1. Short-term raw
Przechowywac krotko jako source of truth:
dlob_hot_snapshot_tsdlob_all_derived_ts
Cel:
- debugging
- replay
- reprocessing
- walidacja feature engineering
Warstwa 2. Feature bars
Z raw / derived budowac stale, numeryczne wektory cech:
1sfeature bars na180d+5salbo15sfeature bars na1y+1mregime bars bardzo dlugo
To powinno byc glownym wejsciem do modeli.
Warstwa 3. Labels
Osobno trzymac etykiety przyszlego wyniku:
fwd_ret_1sfwd_ret_5sfwd_ret_30sfwd_ret_5mmax_upmax_down- adverse selection
- fill probability proxy
- edge net of fees / funding / slippage
Jakie cechy warto trzymac
Mikrostruktura
midmicropricespread_bpsmark - oraclemid - oracle- basis
Plynnosc i ksiega
best_bid_sizebest_ask_size- imbalance
- depth w koszykach
1/2/5/10/20/50 bps - slope / curvature booka
Aktywnosc i jakosc feedu
- liczba update'ow w bucketcie
- udział
indicativevs normalnych snapshotow - staleness feedu
- luki czasowe
Statystyki krotkoterminowe
- realized vol
5s - realized vol
30s - realized vol
5m - momentum score
- mean reversion score
- spread capture proxy
- slippage dla stalych notionals
Proponowane tabele docelowe
Minimalny zestaw:
dlob_features_1sdlob_features_5sdlob_regime_1mbot_labels_horizons
Kazda z tych tabel powinna miec:
event_tssourcemarket_typemarket_index- zestaw cech numerycznych
- opcjonalnie
meta
To da:
- staly rozmiar rekordu
- tansze trenowanie
- latwiejsze sample / batch / join
- mniej miejsca niz raw JSON
Dlaczego to jest lepsze od trzymania wszystkiego
Bo modele nie potrzebuja pelnego surowego payloadu do kazdego kroku.
Dla modeli wazniejsze sa:
- stabilne, stale-wymiarowe wejscia
- konsekwentne etykiety
- latwe agregowanie po oknach czasu
Raw trzeba trzymac krotko. Feature store i labels trzeba trzymac dlugo.
Rekomendacja na kolejny tydzien
- Nie wdrazac jeszcze custom ring buffer.
- Zweryfikowac po
2026-04-16, czy30-dayretencja rzeczywiscie przycinahot_snapshotiall_derived. - Przygotowac plan wlaczenia kompresji TimescaleDB dla:
dlob_all_derived_tsdlob_hot_snapshot_tsdlob_hot_derived_ts
- Zaprojektowac schemat
dlob_features_1s,dlob_features_5s,dlob_regime_1m,bot_labels_horizons. - Uznac raw DLOB za short-term storage, a feature bars + labels za long-term storage pod modele.
Decyzja robocza
Obecny kierunek:
- retencja raw zostaje
- kompresja powinna byc kolejnym krokiem
- dlugoterminowo nie trzymac wszystkiego jako raw snapshots
- dla modeli przejsc na warstwy cech i etykiet o nizszej skali