|
| 1 | +# ------------------------------------- |
| 2 | +# Apr 24, 2025 - Withdraw 100k USDC from OUSD Morpho Steakhouse and |
| 3 | +# deposit to the new OUSD Curve AMO |
| 4 | +# ------------------------------------- |
| 5 | +from world import * |
| 6 | + |
| 7 | +def main(): |
| 8 | + with TemporaryForkForReallocations() as txs: |
| 9 | + # Before |
| 10 | + txs.append(vault_core.rebase(std)) |
| 11 | + txs.append(vault_value_checker.takeSnapshot(std)) |
| 12 | + |
| 13 | + # AMO pool before |
| 14 | + usdcPoolBalance = usdc.balanceOf(OUSD_CURVE_POOL) |
| 15 | + ousdPoolBalance = ousd.balanceOf(OUSD_CURVE_POOL) |
| 16 | + totalPool = usdcPoolBalance * 10**12 + ousdPoolBalance |
| 17 | + price_before = ousd_curve_pool.get_dy(0, 1, 10 * 10**18) |
| 18 | + |
| 19 | + print("Curve OUSD/USDC Pool before") |
| 20 | + print("Pool USDC ", "{:.6f}".format(usdcPoolBalance / 10**6), usdcPoolBalance * 10**12 * 100 / totalPool) |
| 21 | + print("Pool OUSD ", "{:.6f}".format(ousdPoolBalance / 10**18), ousdPoolBalance * 100 / totalPool) |
| 22 | + print("Pool Total ", "{:.6f}".format(totalPool / 10**18)) |
| 23 | + |
| 24 | + # Remove 100k USDC from Morpho Steakhouse Strategy |
| 25 | + txs.append( |
| 26 | + vault_admin.withdrawFromStrategy( |
| 27 | + MORPHO_META_USDC_STRAT, |
| 28 | + [usdc], |
| 29 | + [100000 * 10**6], |
| 30 | + {'from': STRATEGIST} |
| 31 | + ) |
| 32 | + ) |
| 33 | + |
| 34 | + # Deposit 100k USDC to Curve AMO |
| 35 | + txs.append( |
| 36 | + vault_admin.depositToStrategy( |
| 37 | + OUSD_CURVE_AMO_STRAT, |
| 38 | + [usdc], |
| 39 | + [100000 * 10**6], |
| 40 | + {'from': STRATEGIST} |
| 41 | + ) |
| 42 | + ) |
| 43 | + |
| 44 | + # After |
| 45 | + vault_change = vault_core.totalValue() - vault_value_checker.snapshots(STRATEGIST)[0] |
| 46 | + supply_change = ousd.totalSupply() - vault_value_checker.snapshots(STRATEGIST)[1] |
| 47 | + profit = vault_change - supply_change |
| 48 | + txs.append(vault_value_checker.checkDelta(profit, (1 * 10**18), vault_change, (1 * 10**18), std)) |
| 49 | + print("-----") |
| 50 | + print("Profit", "{:.6f}".format(profit / 10**18), profit) |
| 51 | + print("OUSD supply change", "{:.6f}".format(supply_change / 10**18), supply_change) |
| 52 | + print("Vault Change", "{:.6f}".format(vault_change / 10**18), vault_change) |
| 53 | + print("-----") |
| 54 | + |
| 55 | + # AMO pool after |
| 56 | + usdcPoolBalance = usdc.balanceOf(OUSD_CURVE_POOL) |
| 57 | + ousdPoolBalance = ousd.balanceOf(OUSD_CURVE_POOL) |
| 58 | + totalPool = usdcPoolBalance * 10**12 + ousdPoolBalance |
| 59 | + price_after = ousd_curve_pool.get_dy(0, 1, 10 * 10**18) |
| 60 | + |
| 61 | + print("Curve OUSD/USDC Pool after") |
| 62 | + print("Pool USDC ", "{:.6f}".format(usdcPoolBalance / 10**6), usdcPoolBalance * 10**12 * 100 / totalPool) |
| 63 | + print("Pool OUSD ", "{:.6f}".format(ousdPoolBalance / 10**18), ousdPoolBalance * 100 / totalPool) |
| 64 | + print("Pool Total ", "{:.6f}".format(totalPool / 10**18)) |
| 65 | + print("OUSD/USDC Curve prices before and after", "{:.6f}".format(price_before / 10**7), "{:.6f}".format(price_after / 10**7)) |
| 66 | + |
| 67 | + |
| 68 | +# ------------------------------------- |
| 69 | +# Apr 24, 2025 - Remove and Burn OUSD from the OUSD/USDC Curve Pool |
| 70 | +# ------------------------------------- |
| 71 | +from world import * |
| 72 | + |
| 73 | +def main(): |
| 74 | + with TemporaryForkForReallocations() as txs: |
| 75 | + # Before |
| 76 | + txs.append(vault_core.rebase(std)) |
| 77 | + txs.append(vault_value_checker.takeSnapshot(std)) |
| 78 | + |
| 79 | + # AMO pool before |
| 80 | + usdcPoolBalance = usdc.balanceOf(OUSD_CURVE_POOL) |
| 81 | + ousdPoolBalance = ousd.balanceOf(OUSD_CURVE_POOL) |
| 82 | + totalPool = usdcPoolBalance * 10**12 + ousdPoolBalance |
| 83 | + price_before = ousd_curve_pool.get_dy(0, 1, 10 * 10**18) |
| 84 | + |
| 85 | + print("Curve OUSD/USDC Pool before") |
| 86 | + print("Pool USDC ", "{:.6f}".format(usdcPoolBalance / 10**6), usdcPoolBalance * 10**12 * 100 / totalPool) |
| 87 | + print("Pool OUSD ", "{:.6f}".format(ousdPoolBalance / 10**18), ousdPoolBalance * 100 / totalPool) |
| 88 | + print("Pool Total ", "{:.6f}".format(totalPool / 10**18)) |
| 89 | + |
| 90 | + # Remove and burn OUSD from the Curve pool |
| 91 | + curve_lp = 50000 * 10**18 |
| 92 | + txs.append( |
| 93 | + ousd_curve_amo_strat.removeAndBurnOTokens( |
| 94 | + curve_lp, |
| 95 | + {'from': STRATEGIST} |
| 96 | + ) |
| 97 | + ) |
| 98 | + |
| 99 | + # After |
| 100 | + vault_change = vault_core.totalValue() - vault_value_checker.snapshots(STRATEGIST)[0] |
| 101 | + supply_change = ousd.totalSupply() - vault_value_checker.snapshots(STRATEGIST)[1] |
| 102 | + profit = vault_change - supply_change |
| 103 | + txs.append(vault_value_checker.checkDelta(profit, (1 * 10**18), vault_change, (1 * 10**18), std)) |
| 104 | + print("-----") |
| 105 | + print("Profit", "{:.6f}".format(profit / 10**18), profit) |
| 106 | + print("OUSD supply change", "{:.6f}".format(supply_change / 10**18), supply_change) |
| 107 | + print("Vault Change", "{:.6f}".format(vault_change / 10**18), vault_change) |
| 108 | + print("-----") |
| 109 | + |
| 110 | + # AMO pool after |
| 111 | + usdcPoolBalance = usdc.balanceOf(OUSD_CURVE_POOL) |
| 112 | + ousdPoolBalance = ousd.balanceOf(OUSD_CURVE_POOL) |
| 113 | + totalPool = usdcPoolBalance * 10**12 + ousdPoolBalance |
| 114 | + price_after = ousd_curve_pool.get_dy(0, 1, 10 * 10**18) |
| 115 | + |
| 116 | + print("Curve OUSD/USDC Pool after") |
| 117 | + print("Pool USDC ", "{:.6f}".format(usdcPoolBalance / 10**6), usdcPoolBalance * 10**12 * 100 / totalPool) |
| 118 | + print("Pool OUSD ", "{:.6f}".format(ousdPoolBalance / 10**18), ousdPoolBalance * 100 / totalPool) |
| 119 | + print("Pool Total ", "{:.6f}".format(totalPool / 10**18)) |
| 120 | + print("OUSD/USDC Curve prices before and after", "{:.6f}".format(price_before / 10**7), "{:.6f}".format(price_after / 10**7)) |
| 121 | + |
| 122 | + |
| 123 | +# ------------------------------------- |
| 124 | +# Apr 29, 2025 - Deposit to third native staking strategy |
| 125 | +# ------------------------------------- |
| 126 | +from world import * |
| 127 | + |
| 128 | +def main(): |
| 129 | + with TemporaryForkForReallocations() as txs: |
| 130 | + # Before |
| 131 | + txs.append(vault_oeth_core.rebase(std)) |
| 132 | + txs.append(oeth_vault_value_checker.takeSnapshot(std)) |
| 133 | + |
| 134 | + # Deposit WETH to Third Native Staking Strategy |
| 135 | + txs.append( |
| 136 | + vault_oeth_admin.depositToStrategy( |
| 137 | + OETH_NATIVE_STAKING_3_STRAT, |
| 138 | + [WETH], |
| 139 | + # 8 validator |
| 140 | + [256 * 10**18], |
| 141 | + std |
| 142 | + ) |
| 143 | + ) |
| 144 | + |
| 145 | + # After |
| 146 | + vault_change = vault_oeth_core.totalValue() - oeth_vault_value_checker.snapshots(STRATEGIST)[0] |
| 147 | + supply_change = oeth.totalSupply() - oeth_vault_value_checker.snapshots(STRATEGIST)[1] |
| 148 | + profit = vault_change - supply_change |
| 149 | + txs.append(oeth_vault_value_checker.checkDelta(profit, (1 * 10**18), vault_change, (1 * 10**18), std)) |
| 150 | + print("-----") |
| 151 | + print("Profit", "{:.6f}".format(profit / 10**18), profit) |
| 152 | + print("OETH supply change", "{:.6f}".format(supply_change / 10**18), supply_change) |
| 153 | + print("Vault Change", "{:.6f}".format(vault_change / 10**18), vault_change) |
| 154 | + print("-----") |
| 155 | + |
| 156 | +# ------------------------------------- |
| 157 | +# Apr 29, 2025 - Base deposit to Curve AMO strategy |
| 158 | +# ------------------------------------- |
| 159 | +from aerodrome_harvest import * |
| 160 | +from brownie import accounts |
| 161 | +import eth_abi |
| 162 | + |
| 163 | +def main(): |
| 164 | + with TemporaryForkForReallocations() as txs: |
| 165 | + # Rebase |
| 166 | + txs.append(vault_core.rebase({ 'from': OETHB_MULTICHAIN_STRATEGIST })) |
| 167 | + |
| 168 | + # Take Vault snapshot |
| 169 | + txs.append(vault_value_checker.takeSnapshot({ 'from': OETHB_MULTICHAIN_STRATEGIST })) |
| 170 | + |
| 171 | + # AMO pool before |
| 172 | + wethPoolBalance = weth.balanceOf(CURVE_POOL_BASE) |
| 173 | + oethPoolBalance = oethb.balanceOf(CURVE_POOL_BASE) |
| 174 | + totalPool = wethPoolBalance + oethPoolBalance |
| 175 | + price_before = curve_pool.get_dy(1, 0, 10 * 10**18) |
| 176 | + |
| 177 | + print("Curve SuperOETH/WETH Pool before") |
| 178 | + print("Pool WETH ", "{:.6f}".format(wethPoolBalance / 10**18), wethPoolBalance * 100 / totalPool) |
| 179 | + print("Pool SuperOETH ", "{:.6f}".format(oethPoolBalance / 10**18), oethPoolBalance * 100 / totalPool) |
| 180 | + print("Pool Total ", "{:.6f}".format(totalPool / 10**18)) |
| 181 | + print("-----") |
| 182 | + |
| 183 | + # Deposit 165 WETH to Curve AMO strategy |
| 184 | + txs.append( |
| 185 | + vault_admin.depositToStrategy( |
| 186 | + OETHB_CURVE_AMO_STRATEGY, |
| 187 | + [weth], |
| 188 | + [165 * 10**18], |
| 189 | + {'from': OETHB_MULTICHAIN_STRATEGIST} |
| 190 | + ) |
| 191 | + ) |
| 192 | + |
| 193 | + # AMO pool after |
| 194 | + wethPoolBalance = weth.balanceOf(CURVE_POOL_BASE) |
| 195 | + oethPoolBalance = oethb.balanceOf(CURVE_POOL_BASE) |
| 196 | + totalPool = wethPoolBalance + oethPoolBalance |
| 197 | + price_after = curve_pool.get_dy(1, 0, 10 * 10**18) |
| 198 | + |
| 199 | + print("Curve SuperOETH/WETH Pool after") |
| 200 | + print("Pool WETH ", "{:.6f}".format(wethPoolBalance / 10**18), wethPoolBalance * 100 / totalPool) |
| 201 | + print("Pool SuperOETH ", "{:.6f}".format(oethPoolBalance / 10**18), oethPoolBalance * 100 / totalPool) |
| 202 | + print("Pool Total ", "{:.6f}".format(totalPool / 10**18)) |
| 203 | + print("SuperOETH/WETH Curve prices before and after", "{:.6f}".format(price_before / 10**19), "{:.6f}".format(price_after / 10**19)) |
| 204 | + |
| 205 | + # After |
| 206 | + vault_change = vault_core.totalValue() - vault_value_checker.snapshots(OETHB_MULTICHAIN_STRATEGIST)[0] |
| 207 | + supply_change = oethb.totalSupply() - vault_value_checker.snapshots(OETHB_MULTICHAIN_STRATEGIST)[1] |
| 208 | + profit = vault_change - supply_change |
| 209 | + txs.append(vault_value_checker.checkDelta(profit, (1 * 10**18), vault_change, (1 * 10**18), {'from': OETHB_MULTICHAIN_STRATEGIST})) |
| 210 | + print("-----") |
| 211 | + print("Profit", "{:.6f}".format(profit / 10**18), profit) |
| 212 | + print("SuperOETH supply change", "{:.6f}".format(supply_change / 10**18), supply_change) |
| 213 | + print("Vault Change", "{:.6f}".format(vault_change / 10**18), vault_change) |
| 214 | + print("-----") |
0 commit comments