We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 138a220 commit 27d7ccbCopy full SHA for 27d7ccb
program/src/oracle/upd_aggregate.h
@@ -108,16 +108,23 @@ static void upd_ema(
108
pd_load( denom, ptr->denom_ );
109
}
110
else {
111
- /* temporary upgrade code */
+ // temporary upgrade code
112
pd_new_scale( numer, ptr->numer_, PD_EMA_EXPO );
113
pd_new_scale( denom, ptr->denom_, PD_EMA_EXPO );
114
115
- pd_mul( numer, numer, decay );
116
- pd_mul( wval, val, cwgt );
117
- pd_add( numer, numer, wval, qs->fact_ );
118
- pd_mul( denom, denom, decay );
119
- pd_add( denom, denom, cwgt, qs->fact_ );
120
- pd_div( val, numer, denom );
+ if ( numer->v_ < 0 || denom->v_ < 0 ) {
+ // temporary reset twap on negative value
+ pd_set( numer, val );
+ pd_set( denom, one );
+ }
+ else {
121
+ pd_mul( numer, numer, decay );
122
+ pd_mul( wval, val, cwgt );
123
+ pd_add( numer, numer, wval, qs->fact_ );
124
+ pd_mul( denom, denom, decay );
125
+ pd_add( denom, denom, cwgt, qs->fact_ );
126
+ pd_div( val, numer, denom );
127
128
129
130
// adjust and store results
0 commit comments