Commit Graph

4427 Commits (cbe274089e071df32478c58be0139ebd6b1fd4ba)

Author SHA1 Message Date
Tyler Goodlet cbe274089e Ignore non-`.parquet` (suffixed) paths for now during tsdb fs-indexing 2025-01-29 15:47:29 -03:00
Tyler Goodlet 879cf3a9f3 Mask `ruff` config and pin `websockets=0.12`
- the `ruff` section in the `pyproject.toml` is somehow borked? (even
  though it def was working a while back..)
- `websockets` is completely broken in latest version since it's using
  old-ass `asyncio` APIs of some sort i think??
2025-01-29 15:47:29 -03:00
Tyler Goodlet ece32f8ed0 `.deribit.feed`: get live quotes workin (again)
The quote-msg `'topic'` field was being set and sent as the
`OptionPair.symbol: str` value instead of as the `MktPair.bs_fqme: str`
as is required for matching on the `piker.data.feed` side. So change to
that and simplify the actual `.bs_fqme: str` value to NOT include the
ISO-format time (for now) since it's a big ugly and longer term we need
a `piker`-fqme friendly-on-ze-eyes format/style anyway..
2025-01-29 15:47:29 -03:00
Tyler Goodlet f3735dd712 Bit more `cryptofeed` adapter formatting and typing for clarity.. 2025-01-29 15:47:29 -03:00
Tyler Goodlet 39542fdb50 .deribit.venues: add todo for an ideal `OptionPair.expiry` fmt/value 2025-01-29 15:47:29 -03:00
Tyler Goodlet a75cfbb124 `.data._sampling`: warn about subscriber-less msgs
Since it usually means the data-provider backend is keying the msgs
incorrectly (not using the equivalent `MktPair.bs_fqme` which as
would be rendered from the delivered `FeedInit.mkt` instance..) and
reporting the subs list should make it clear how the fqme matching is
off.

Deats,
- use the new `.log.mk_repr()` for a formatter.
- add a commented info emission that can be unmasked to help debug any
  such cases as mentioned in the summary ^^.
2025-01-29 15:47:29 -03:00
Tyler Goodlet 7b6410c535 Add `.log.mk_repr()` to create `reprlib.Repr`s 2025-01-29 15:47:29 -03:00
Tyler Goodlet 23e4f74c7a Report the closest (via fuzzy match) pairs on unmatched input 2025-01-29 15:47:29 -03:00
Tyler Goodlet c32d79f04b Signal hist start using `OptionPair.creation_timestamp`
Such that the `get_hist()` query func raises `DataUnavailable` with an
explicit message regarding the start of the (option) contract's
lifetime.

Other,
- mask some unused imports (for now?)
- drop a duplicate `tractor.get_console_log()` call which was causing
  duplicate console emits (it's already setup by brokerd init now).
- comment various unused code bits i found.
- add a info log around live quotes so we can see for the moment when
  they actually occur.. XD
2025-01-29 15:47:29 -03:00
Tyler Goodlet b560319043 `.deribit.api` bit of tidying/typing
There were some imports missing or unused as well as a variety of spots
that had grokability issues due to missing type hints.

Other tweaks as part some more thorough manual testing:
- always raise when not `brokers.toml` section since the API can never
  work (no free data without keys).
- inline the `Asset.atype='crypto_currency` field despite it maybe not
  being the best value for `OptionPair` instruments..
- tossed in a now-masked pause block for debugging history queries in
  `Client.bars()`.
- commented out all the live order ctl (internal) endpoints for now
  since they're unused.
2025-01-29 15:47:29 -03:00
Tyler Goodlet a06e7784f1 'Fix `Optional` and use `'linear/reverse'` in `OptionPair.venue`' 2025-01-29 15:47:29 -03:00
Tyler Goodlet 12a13768bf Mk jsronrpc's underlying ws timeout `float('inf')`
Since currently we're only using this IPC subsys for `deribit`, and
generally speaking we're primarly supporting options markets (which are
fairly "slow moving"), flip to a default of NOT resetting the `NoBsWs`
on timeout since doing so normally breaks the jsron-rpc IPC session.
Without a proper `fixture` passed to `open_autorecon_ws()` (which we
should eventually implement!!) relying on a timeout-to-reset more or
less will just cause breakage issues - a proper reconnect sequence must
be implemented before using that feature.

Deats,
- expose and proxy through the `msg_recv_timeout` from
  `open_jsonrpc_session()` into the underlying `open_autorecon_ws()`
  call.
2025-01-29 15:47:29 -03:00
Tyler Goodlet 73ef2afe30 Refine history gap/termination signalling
Namely handling backends which do not provide a default "frame
size-duration" in their init-config by making the backfiller guess the
value based on the first frame received.

Deats,
- adjust `start_backfill()` to take a more explicit
  `def_frame_duration: Duration` expected to be unpacked from any
  backend hist init-config by the `tsdb_backfill()` caller which now
  also computes a value from the first received frame when the config
  section isn't provided.
- in `start_backfill()` we now always expect the `def_frame_duration`
  input and always decrement the query range by this value whenever
  a `NoData` is raised by the provider-backend paired with an explicit
  `log.warning()` about the handling.
- also relay any `DataUnavailable.args[0]` message from the provider
  in the handler.
- repair "gap reporting" which checks for expected frame duration vs.
  that received with much better humanized logging on the missing
  segment using `pendulum.Interval/Duration.in_words()` output.
2025-01-29 15:47:29 -03:00
Tyler Goodlet d425d36fc3 Only use `frame_types` if delivered during enter
The `open_history_client()` provider endpoint can *optionally*
deliver a `frame_types: dict[int, pendulum.Duration]` subsection in its
`config: dict[str, dict]` (as was implemented with the `ib` backend).
This allows the `tsp` backfilling machinery to use this "recommended
frame duration" to subtract from the `last_start_dt` any time a `NoData`
gap is signalled by the `get_hist()` call allowing gaps to be ignored
safely without missing history by knowing the next earliest dt we can
query from using the `end_dt`. However, currently all crypto$ providers
haven't implemented this feat yet..

As such only try to use the `frame_types` feature if provided when
handling `NoData` conditions inside `tsp.start_backfill()` and otherwise
raise as normal.
2025-01-29 15:47:29 -03:00
Nelson Torres 4e963e27d0 tractor branch updated, msgspec version upgraded, cython and greenback dependencies moved under dev group 2025-01-29 15:47:29 -03:00
Nelson Torres 3dcee16bf6 config refactor
only one get_config method for api class and cryptofeed feed handler
2025-01-29 15:44:33 -03:00
Nelson Torres 1f41b151d7 move constants to venue 2025-01-29 15:44:33 -03:00
Nelson Torres e8c196fd88 refactor redundant code 2025-01-29 15:44:33 -03:00
Nelson Torres 7cefb202fb name formatting fixes 2025-01-29 15:44:33 -03:00
Nelson Torres ddb4c0269f get_mkt_info cleanup 2025-01-29 15:44:33 -03:00
Nelson Torres 139f62f4de cache_symbols refactor 2025-01-29 15:44:33 -03:00
Nelson Torres 338e292002 json_rpc_auth_wrapper 2025-01-29 15:44:33 -03:00
Nelson Torres 13af0a90eb move object classes to venue 2025-01-29 15:44:33 -03:00
Nelson Torres e84781ca1e Added options symbols to get_assets 2025-01-29 15:44:33 -03:00
Nelson Torres 576b15e2c6 get_assets now uses public endpoint
It's better if the data is available through a public endpoint.
2025-01-29 15:44:33 -03:00
Nelson Torres b7e54571ea now using exch_info in search_symbols 2025-01-29 15:44:33 -03:00
Nelson Torres 1a295c0c21 Fix bs_fqme using venue and expiry 2025-01-29 15:44:33 -03:00
Nelson Torres f057a20bfa Added expiry property for OptionPair 2025-01-29 15:44:33 -03:00
Nelson Torres 9dba47902e No longer needed 2025-01-29 15:44:33 -03:00
Nelson Torres e0ecef04bb bs_mktid instead bs_fqme for deribits options 2025-01-29 15:44:33 -03:00
Nelson Torres 266347bcdb Fixed pair instrument name in search_symbols endpoint.
Fixed instrument in bars endpoint, for options in deribits bs_mktid instead bs_fqme.
Fixed the id is in msg.
2025-01-29 15:44:33 -03:00
Tyler Goodlet 051d43b559 data._web_bs: try to raise jsonrpc errors in parent task 2025-01-29 15:44:33 -03:00
Nelson Torres ac3ea5d960 Add necessary classes in init file for deribit 2025-01-29 15:44:33 -03:00
Nelson Torres cd1ad13720 Minor refactor in open_symbol_search 2025-01-29 15:44:33 -03:00
Nelson Torres 941340f853 stream_quotes now using FeedInit 2025-01-29 15:44:33 -03:00
Nelson Torres b046151464 symbol_info refactor 2025-01-29 15:44:33 -03:00
Nelson Torres f3d810f3ef search_symbols output type fix 2025-01-29 15:44:33 -03:00
Nelson Torres 1c433e7bda add get_mkt_pairs method 2025-01-29 15:44:33 -03:00
Nelson Torres af0bba5667 get_assets refactor 2025-01-29 15:44:33 -03:00
Nelson Torres 28bbf11484 formatting 2025-01-29 15:44:33 -03:00
Nelson Torres d1c00de05b created exch_info in api class 2025-01-29 15:44:33 -03:00
Nelson Torres 30caac4c27 modify self_pairs type to ChainMap 2025-01-29 15:44:33 -03:00
Nelson Torres 3de985d3cd Necessary imports 2025-01-29 15:44:33 -03:00
Nelson Torres cf46671e4b add get_market_info 2025-01-29 15:44:33 -03:00
Nelson Torres 87b0ac2331 Necessary imports 2025-01-29 15:44:33 -03:00
Nelson Torres d014f6f37d minor fixes in venues 2025-01-29 15:44:33 -03:00
Nelson Torres f50e7ad5f0 add class Pair in venues, PAIRTYPES for future uses 2025-01-29 15:44:33 -03:00
Nelson Torres de55fbd44a fix syms for venues.
little refactor in get_config, and created get_fh_config for cryptofeed.
2025-01-29 15:44:33 -03:00
Nelson Torres e941afc491 venues for deribit 2025-01-29 15:44:33 -03:00
Nelson Torres 2ed8b47883 Added cryptofeed and pyarrow necessary for the feed, enable deribit
in the brokers init file, at this point the feed is working, to check
the tables use vd tool.
2025-01-29 15:44:33 -03:00