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

feat: Full chain streaming prototypes #1092

Merged
merged 140 commits into from
Oct 27, 2024
Merged

feat: Full chain streaming prototypes #1092

merged 140 commits into from
Oct 27, 2024

Conversation

DaveSkender
Copy link
Owner

@DaveSkender DaveSkender commented Oct 12, 2023

Description

As the next step in our v3 preview release plan, this implements:

Problems to resolve

  • get full chain observation to work in isolated EMA/SMA base cases, proof of concept for stream through full chains #1096
  • refactor to obviate dual cache, and other EMA/SMA performance tuning
    • refactor performance tests to group Static or Stream, remove redundant series tests from stream grouping
    • abstract QuoteObserver, ChainObserver, and generic Cache methods with generic <T> result storage
  • handle out-of-sequence late-arrival quotes #1094 - add missing use cases for dispositions Acts, rebuild / cache busting scenarios
    • or, at a minimum, address incomplete OnNext() scenarios and possible allow virtual overriding
  • allow non-chainable IResult to be an observable » all result forms should be observable, even if they're not chainable (for comprehensive end-use streaming).
  • consider: forcing concrete types for observables, cached quotes; I don't think record struct is going to work well with larger types, and has too many stack copies (stack overflow risks). Allowing TQuote is only problematic on observing and caching; maybe just do a quick transform OnArrival();
    • » KEPT generic TQuote, found most issues were with index lookups; fixed in:
    • feat: Restack stream base classes, fix stack overflow scenarios #1208
    • change forward-cascading updates to use iterative Resend() instead of recursive OnNext()
    • one QuoteProvider with all indicators subscribed (massive parallel)
    • one QuoteProvider with max possible chain depth (massive serial)

Refactor interfaces

  • remove all forms to Tuple interfaces. These are no longer needed due to wider use and compatibility to the IReusable interface; further reducing re-writing transforms and memory utilization.
  • convert all public class types to record ~struct~ and remove unneeded AbstractResult class. Use of struct type and IObservable has largely limited inheritance options.
    • refactor all uses to "write once", since these are now immutable value types.

Documentation

@DaveSkender DaveSkender added this to the v3 milestone Oct 12, 2023
@DaveSkender DaveSkender changed the title update alpaca package isolated increment methods Oct 12, 2023
@DaveSkender DaveSkender linked an issue Oct 12, 2023 that may be closed by this pull request
2 tasks
@DaveSkender

This comment was marked as outdated.

@DaveSkender

This comment was marked as resolved.

@DaveSkender DaveSkender linked an issue Oct 27, 2024 that may be closed by this pull request
1 task
@DaveSkender DaveSkender marked this pull request as ready for review October 27, 2024 23:28
@DaveSkender DaveSkender enabled auto-merge (squash) October 27, 2024 23:28
@DaveSkender DaveSkender merged commit 0605107 into v3 Oct 27, 2024
16 checks passed
@DaveSkender DaveSkender deleted the v3-increments branch October 27, 2024 23:32
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 1, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

stream through full chains handle out-of-sequence late-arrival quotes
1 participant