Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implement GEMA smoothing, where increases in the current price are "smoothed" based on the previous price. The window we're using is 10 rounds, we can change that in configuration later.
The output of the current round of signature aggregation depends on the output of older rounds. This required some other changes:
/payload
endpoint includes the latest feed for everything.BigRational
s (infinite-precision rational numbers). Price sources such as sundaeswap and bybit still report prices withDecimal
s (which have finite precision), but we convert that toBigRational
before doing the math.BigRational
can get arbitrarily large after many cycles of GEMA, we round prices in the final payload to take at most 1024 bits (128 bytes). This should be more than enough precision for what we need. We also round the older prices used for the EMA calculation to 512 bits (64 bytes).