Introduction to Handle.fi
The handle.fi protocol is a DeFi native foreign exchange market on the blockchain. The protocol aims to democratise the use of non-USD-pegged stablecoins in the DeFi landscape. In the time to come, as the crypto markets grow globally, demand for foreign fiat-pegged stablecoins will only rise. In essence, you can think of handle.fi as a DeFi-based multi-currency stablecoin solution. The platform allows users to trade decentralised forex markets with up to 50x leverage. Among other things, users can settle trades in their local currency, borrow against their crypto assets in their local currency, access leverage in their local currency, and farm yield in their local currency as well. The protocol is deployed on Arbitrum.
In this guide, I will demonstrate how to interact with all aspects of the protocol with various visual examples. If you want to learn about the protocol, you can read our in-depth article here.
Before I demonstrate how to interact with and use the protocol, let me outline the main user actions that can happen and which I will be showcasing.
- Convert: Allows users to swap between different currency stablecoins easily. Includes outside-issued stablecoins like USDC and USDT, and also fxUSD – which is a stablecoin issued by the handle.fi protocol. Users can also swap to foreign (non-USD) currency stablecoins like fxAUD and all ERC tokens across the Arbitrum L2. The feature ensures optimised routing for spot forex and the $FOREX token swapping.
- Trade: Allows users to open long and/or short positions across various DeFi forex perpetual contracts and ETH using leverage.
- Borrow: Allows users to mint a range of multi-currency stablecoins (fxTokens) using ETH collateral.
- Earn: Allows users to earn real yield and rewards by providing liquidity in fxTokens or staking the $FOREX token.
In this guide, I will demonstrate these core protocol functions.
You will need:
Before getting started with it, let me get the basics out of the way.
- Non-custodial EVM compatible wallet: To interact with the handle.fi protocol, you will need a private non-custodial EVM-compatible wallet set up. MetaMask is the most commonly used wallet. Alternatively, handle.fi has implemented a social and email sign-in feature; where new users can create a new EVM address and sign in with Google or an email of their choice.
- On-ramp crypto: Next up, you will have to load crypto in your wallet to start interacting with the Handle.fi protocol. You can either withdraw your crypto off a CEX (after buying it there using fiat) or directly on-ramp into your private wallet via an on-ramp service like Moonpay – depending on if your private wallet has integrations with on-ramp services.
- Transaction fees: Finally, you will need to account for gas fees. As the protocol is deployed on Arbitrum, we’ll need ETH on the Arbitrum chain to pay for gas fees.
I’ve sent enough ETH to my private wallet on Arbitrum; that’s enough to interact with the protocol in all the ways (for the demo) and also account for gas fees.
Therefore, I have my private non-custodial EVM-compatible wallet set up, I have loaded it with crypto, and finally, I have the native gas token (ETH on Arbitrum) as well.
How to convert on Handle.fi?
The convert feature allows users to swap spot forex, the $FOREX, and any Arbitrum ERC-20 token easily.
Again, ensure your private wallet is connected to the front end, you have adequate ETH on Arbitrum to account for gas fees, and finally, you have the funds to execute the swap.
In this example, I am going to swap some ETH for fxUSD.
I’m going to swap 0.1 ETH to ~ 116.7 fxUSD
In this view, I can see that I will swap from ETH to fxUSD. The amount I’ve selected is 0.1 ETH to 116.7 fxUSD. Below that, I can view the current rate, which is 1 ETH = 1,169.3947 fxUSD. I can also view the difference in the USD prices of ETH and fxUSD that I will incur due to the swap, which is -0.01%. This is due to price impact and slippage – which occurs with any AMM DEX swap. I can also see the ETH/fxUSD chart on the right.
Once I am happy with the quoted rate, I will click on “review”.
Again, here I see the same details
Once I’ve double-checked the swap details, I will click on “convert”.
Next up, sign the transaction in your wallet, and wait for the confirmation message.
Once the transaction has been a success, you will see the confirmation message on the front end in the bottom right
Voila, that’s all to it. After checking the balance in my wallet, I can now see that I have 116.7 fxUSD.
Think of the convert feature as using any AMM DEX like Uniswap for instance, but optimised for spot FX conversions.
How to Trade on Handle.fi?
Next up, trade allows users to open long and/or short positions using leverage in the forex perps and ETH markets.
I will use the newly acquired fxUSD via convert to post as collateral for the trade. I will go long fxEUR/USD for this demo. NFA.
This is what I’ll see on the front end
Well, a lot is going on here. Let me break it all down.
For starters, I’m long the pair in question – that is fxEUR/USD. Meaning I’ll make money if fxEUR goes up in price against USD and lose money if it goes down instead. Secondly, the size of my trade is 556.0232 EUR. This is derived from the leverage that I’ve opted for, which is 5x. The collateral which I will post, i.e. the money that I will gain or lose, will be fxUSD. I will post all my collateral of 116.71 fxUSD. 5x of 116.7 fxUSD will equate to ~ 556.0232 EUR, the size of my position.
The entry price at which I intend to enter the trade will be 1.0495 USD. The liquidation price will be 0.8501 USD, i.e. if fxEUR falls to 0.8501 USD per 1 fxEUR, my position will be liquidated. This means my collateral will be sold to repay the debt I’ve taken. I will incur a fee of 0.81 USD for opening this position. This is a one-time fee. Finally, I will also pay a borrowing rate, i.e. interest rate, for borrowing the amount on an hourly basis. The borrowing rate at the moment is negligible.
On the right, I can view the fxEUR/USD chart and play with it as per my needs.
However, once I am happy with the trade setup, I will click on the “buy” button.
Again, I can double-check the trade details before proceeding
Once I am happy with what I see, I will click on the, “confirm buy” button to open the long position.
I can now see my open long fxEUR/USD position in the middle of the screen
I can view the pair, the size, the collateral posted, entry price, liquidation price, mark price, pnl and return %.
Moreover, you can do the following with your position:
- Share: You can grab a screenshot of your position and share it with your frens on CT or wherever you want to.
- Edit: You can edit your positions and post or remove collateral to modify it. In this case, I can either deposit more fxUSD or withdraw the posted fxUSD. Remember, this action will alter the liquidation price. Depositing more collateral will reduce the leverage, whereas withdrawing collateral will increase the leverage.
- Close: Finally, you can close your position to book the profit or loss based on the market conditions.
In this demo, let me close the open position. Thus, I will click on the “cross” button to proceed.
You’ll be shown the position details, if you are content select the amount and click on the, “close” button
I will close the full position.
Once the transaction is confirmed, you will receive any remaining collateral plus or minus any profits/losses back in your wallet.
Under trades, I can now view the trades that I have taken
First, I longed the fxEUR/USD pair i.e. opening the trade. This shows with the + size of 583.55 USD accounting for 5x leverage. Then I closed that position.
How to borrow on Handle.fi?
Before proceeding, I will convert all the fxUSD back into ETH for this part of the demo, as I will need it to post collateral for borrowing.
This is how the front end for borrowing will look like
For the demo, I want to borrow some fxUSD against ETH collateral. I want the collateral ratio to be at 200%.
Here, I can view all the important details. I will be borrowing 100 fxUSD against ETH as collateral. I will deposit 0.1709 ETH as collateral. The collateral ratio will be 200%. I will have to pay 0.4% interest annually for this loan. The collateral value in USD will be $200. Therefore, 100 fxUSD in debt, $200 USD worth of collateral in ETH – based on the current price at a collateral ratio of 200%. The liquidation price will be $936.12 for ETH.
Once I am happy with the details, I will click on the “deposit & borrow” button.
At the bottom right, I will see the confirmation on the front end after the transaction is successful
Again, I deposited $200 USD worth of collateral in ETH which is 0.1709 ETH at current prices and borrowed 100 fxUSD.
In the middle of the screen, I can see my deposited collateral
Now, I will repay this debt and withdraw my collateral.
Visit the Dashboard, and select, “vaults” to view the appropriate vault
In this demo, the fxUSD vault is the one we’re looking at – as we borrowed fxUSD. You can view all the vault details here. To manage the value, click on the “manage” button.
This is what the front end will look like
Again, somewhat similar to leverage trading, you will see three actions here:
- Borrow: This will allow you to borrow more for the same collateral that you’ve posted.
- Repay: This will allow you to repay your debt and burn the fxToken.
- Withdraw: This will allow you to withdraw your collateral.
We won’t borrow more, we will repay our debt and then withdraw our collateral.
On the repay tab, I select the full amount that I want to repay.
Note, I had to top up my fxUSD balance with $2 – as I needed it to ensure I have a little over $100 fxUSD, as it is the minimum balance that is allowed.
Nevertheless, next, I will approve the token, and then initiate the transaction to repay my debt.
Now, I get the option to withdraw my deposited ETH collateral
I will select the full amount, and click on the “withdraw WETH” button.
Remember, I will receive WETH and not ETH.
That’s it. So we deposited some collateral and took out a loan. Then, we repaid that debt and withdrew our collateral. Easy, right?
How to Earn on Handle.fi
There are 3 distinct ways how users can earn a yield with handle.fi and they are:
- Governance: Via governance, users can lock the $FOREX token for veFOREX, which is similar to Curve’s implementation of veCRV. veFOREX holders earn rewards, boosts and can participate in governance.
- Liquidity: Users can either buy and stake hLP or provide liquidity in the curve pools, and then stake their LP tokens to earn token emissions. hLP is to Handle what GLP is to GMX, it is the liquidity token that facilitates leverage trading on the platform. As an hLP holder, you’re a counterparty to the traders. As for the curve pools, you can simply provide liquidity in the curve pools for fxUSD and fxEUR, and then stake those LP tokens for $FOREX rewards.
- fxKeeper: Finally, users can also participate in and earn rewards from the liquidations that happen on the platform. Users can deposit various fxTokens which will be used to clear the bad debt on the protocol. In return, they stand to earn liquidation fees and FOREX token rewards.
This is how the front end will look like
I’m going to lock 3,902 FOREX for a week and receive veFOREX in return. I am happy with what I see, so I will click on the, “lock” button.
Here are the details of the lock
I received 6.63 veFOREX, which will tend towards 0 as I near the one-week period. The APR I’ll receive will be 0.16%. Under the, “claim rewards” tab, I will be able to claim my FOREX rewards once they start accruing.
This is what you’ll see under the “liquidity” tab
I will deposit to hLP. So, I’ll click on the “deposit” button.
I’ll be redirected to a convert front end, wherein I will swap some ETH for hLP
I can view the rate and other details. Once, I am happy, I will click on the, “allow Handle to trade hLP” button.
You can learn more about hLP here.
Double-check the swap details and then click on, “convert”
That is it, I can view my staked hLP now on the front end
I will not demonstrate the curve liquidity incentivisation process. Simply, provide liquidity on Curve, and then stake the LP tokens on Handle to start receiving the rewards. Pretty self-explanatory.
Finally, under the fxKeeper tab, I will deposit some fxUSD
Again, with this I will earn from liquidation profit and FOREX token rewards.
Under the “deposit” tab, input the amount and then click on the “deposit” button.
Here, I can view the deposited amount, the APR, and other details
I can at any time withdraw the funds and claim rewards from under the appropriate tabs.
Finally, I can also use the bridge to move funds cross-chain. The dashboard showcases the various positions and vaults that you’ve interacted with.
Well, that will do it for today folks. I hope the guide was comprehensive and useful.