Try   HackMD

Questions regarding the RBS simulation

tags: olympus
  • AMM k: is it a constant (if so, what value) or is it updating every step?

    • Seems like it's changing with this updating function
      self.k = prev_day.price and ((prev_day.liq_usd - self.reserves_in)**2 / prev_day.price) * (1 + self.reward_rate)**2 or 0
      Does it mean that if price is not zero, the k will be set to as ((prev_day.liq_usd - self.reserves_in)**2 / prev_day.price) * (1 + self.reward_rate)**2? Why is there a reward_rate term?
  • When calculating the bid/ask capacity (cushion), what does this term (self.k * self.lower_target_cushion) ** (1/2) mean?
    For example:

    ​​​​self.bid_capacity_cushion = prev_day.bid_capacity_cushion + self.net_flow - self.reserves_in + prev_day.liq_usd - (self.k * self.lower_target_cushion) ** (1/2)
    
  • When calculating the bid/ask capacity (cushion), are those offers of bonds / swapping opportunities all being actualized? Or the amount being actualized is randomized by net_flow?

    • Is there any difference between bonds (happens when price in the cushion zone) and swap (happens when the price is beyond the walls), besides the different depth of capacity provided? (reading the doc it feels like there's two channels, swap and bond)
  • Calculation regarding treasury reserves seems have a bug?
    Treasury owned liquidity, in usd:

self.liq_usd = max(prev_day.liq_usd + self.net_flow - self.reserves_in + self.bid_change_usd - self.ask_change_usd, 0)

Then, treasury reserve:

self.reserves_out = self.liq_usd - prev_day.liq_usd - self.net_flow - self.reserves_in
self.reserves = max(prev_day.reserves - self.reserves_out, 0)

Combined with liquidity, we can see that:

reserve = previous_day.reserve - (-2reserves_in + bid_change_usd - ask_change_usd) = previous_day.reserve - bid_change_usd + ask_change_usd + 2reserves_in

Wondering the term of "reserve_in" is wrong (should not be 2 times)??