Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FQME: fully qualified market endpoint, (or f#$% me) the thing no suit could imagine.. #467

Open
goodboy opened this issue Feb 24, 2023 · 2 comments
Labels
data-layer real-time and historical data processing and storage nomenclature cross broker/venue/asset symbology, syntax and acronyms

Comments

@goodboy
Copy link
Contributor

goodboy commented Feb 24, 2023

This is a major design decision that seems to have not been solved yet by any other platform (which is frankly baffling):

what does a fully qualified market addressing scheme look like?


technical jargon/terminology

Here are 2 options (please add more) for the acronym which describes the url-like address:

  • fqme: fully qualified market endpoint <-- prolly what we're going with 🏄🏼
  • fqsn: fully qualified symbol name
  • fqmn: fully qualified market name (my preference i think?)
  • fqan: .. auction name
  • fqma: .. market address
    ...

Syntax, labelling and semantics:

There are generally 2 ordering schemes we're thinking are best, both somewhat based on tree-like hierarchical design of DNS and more generally on URL style syntax.

resolver op char:

  • . seems like the most obvious but i think we should be open to :
  • are there any better chars that are less susceptible to the parsers of shells and other copy/paste from/to envs that will likely be used for passing around the address strings?

current hierarchy-label order:

  • <marketpairname>.<venue>.<suffix(es) with metadata>.brokerbackendname>
    • eg. mnqusd.cme.20230317.ib
    • this obviously becomes more confusing/cumbersome with option market addresses and any other or future added derivs market meta-info.

preferred non-reverse hierarchy syntax:

  • ib.cme.mnqusd.20230317.<further option mkt address labels>
  • <broker>.<venue>.<underlying market pair>.<expiry info label (derivs only)>.<strike price info (opts only)>.<more?>

I personally much prefer this second (order) style due to it looking more like attribute access* and will make a UI representation in the search results tree orient from left-to-right exactly the same as scoped search results:

ib
|_ cme
     |_ mnqusd
         |_20230317  (expiry price)
             |_1200c

which also makes showing the specificity of the market graphically somewhat intuitive?


Previous work, research, and lead-up to this:

From our original MVP PR #295:

Basically the idea here is for all client-ish code (aka programs/actors that ask the provider agnostic layers in the stack for data) should be able to tell which backend / venue / derivative each data feed/flow is from by an explicit string key of the current form ....

I have thoughts that we should actually change this to be more like an "attr lookup" (like how the web should have done urls, but marketting peeps ruined it etc. etc.):

<broker>.<venue>.<instrumentname>.<suffixwithmetadata>

Existing standards:

Probably more we'll add..

@goodboy goodboy added data-layer real-time and historical data processing and storage nomenclature cross broker/venue/asset symbology, syntax and acronyms labels Feb 24, 2023
@wygud
Copy link
Contributor

wygud commented Feb 25, 2023

I think its mostly arbitrary so my advice would be to just pick something and make it the standard. For me, 3 of those would be automatic in almost all use cases. If I had to pick an order it would be the direction of the decision tree in the most frequent use case.
so probs this:
mnqusd->1200c->20230317(automatic selection to most recent contract)->cme(aggregate feed or "smart")->ib(depends on use case but would have a default broker for each use case)

goodboy added a commit that referenced this issue Mar 3, 2023
In order to support existing `pps.toml` files in the wild which don't
have the `asset_type, price_tick_size, lot_tick_size` fields, we need to
only optionally read them and instead expect that backends will write
the fields going forward (coming in follow patches).

Further this makes some small asset-size (vlm accounting) quantization
related adjustments:
- rename `Symbol.decimal_quant()` -> `.quantize_size()` since that is
  explicitly what this method is doing.
- and expect an input `size: float` which we cast to decimal instead of
  doing it inside the `.calc_size()` caller code.
- drop `Symbol.iterfqsns()` which wasn't being used anywhere at all..

Additionally, this drafts out a new replacement market-trading-pair data
type to eventually replace `.data._source.Symbol` -> `MktPair` which we
aren't using yet, but serves as the documentation-driven motivator ;)
and, it relates to #467.
@goodboy
Copy link
Contributor Author

goodboy commented Mar 23, 2023

Linking #489 since we'll be addressing a couple initial decision on this topic there 🏄🏼

@goodboy goodboy changed the title FQM[N/S]: 'fully qualified market name's, the thing no suit could imagine.. FQME: 'fully qualified market endpoint, the thing no suit could imagine.. Jun 8, 2023
@goodboy goodboy changed the title FQME: 'fully qualified market endpoint, the thing no suit could imagine.. FQME: fully qualified market endpoint, (or f#$% me) the thing no suit could imagine.. Jun 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
data-layer real-time and historical data processing and storage nomenclature cross broker/venue/asset symbology, syntax and acronyms
Projects
None yet
Development

No branches or pull requests

2 participants