Mirror currently allows for holders of mAssets to place limit sell orders, which any arbitrageur may execute for a profit. However, in order to take advantage of this asynchronous trade functionality, someone farming a long position (mAsset-UST) needs to unstake in order to lock their mAsset in the limit order contract, giving up any MIR rewards that would have accrued during the time the limit order sat unexecuted. For example, if I want to exit my mSPY position when it reaches $500, I can either put it in the long farm and manually monitor the price (unstaking it to sell when the price is right), or I can lock it in the limit order contract and forgo farming rewards. Similarly, I might have a short position that I want to unravel in case the price drops to a target level or rises to represent an intolerable risk of my collateral.
I’m imagining an overlay contract in which one can jointly stake UST and mAssets, which are in turn staked by the contract in the Mirror long farm. When the price of the mAsset reaches the limit price set by the user, any arbitrageur may call a contract function to unstake the long farm position, sell the mAsset, and return the asked UST value to the user in one transaction; any extra value is kept as profit.
In order to be worthwhile, the time a limit order sits unexecuted would have to potentially be long enough to earn significant MIR rewards. I doubt many users are currently opening limit orders with long time horizons, but they might if rewards were still on the table. Would be a popular enough feature to be worth implementing?