Upending the FIRE game through DeFi stablecoin yield farming
Decentralized finance, or DeFi, is a broad term that refers to projects on Ethereum and other smart contract platforms that are rebuilding the world’s financial infrastructure on the blockchain. While it is certainly risky, the rewards are currently beyond anything available within traditional finance. Just look at your “savings” account. The amount of yield currently available among DeFi projects can put financial independence within reach for many people. Here, I take a deep dive on how I positioned myself for reFIREment, and allocated an emergency fund that will hopefully pay for itself and allow me to live my dreams.
I won’t get into the details of fiat on-ramps or using the Ethereum network, nor do I endorse blindly following my any of my positions. Black swan exploits and rug-pulls are still a huge risk, and my purpose here is to discuss the analysis and decision-making process that I went through in order to mitigate some of that risk. I hope you find it useful.
Checkbook control crypto retirement accounts, part 2
Well it took me over a month, but I was finally able to buy some bitcoin through my self-directed IRA. Last night, I was finally able to deposit some fiat into my SDIRA’s new FTX.us account, and purchased a few hundred dollars of BTC, wBTC and ETH. The process has been slow and somewhat infuriating, but there is nothing like having the ability to purchase cryptocurrencies within the context of a tax-advantaged account. That’s right, there are no taxable events on activities made with these funds, and once I am able to withdraw to an on-chain wallet, I’ll be able to yield farm to my heart’s content without worrying about capital gains.
Well the past twenty four hours have been a roller coaster. I got way to cocky with my leveraged ETH long, and I’ve been on the verge of liquidation twice today, both times I added more collateral to the fire in order to stave off disaster.
I’ve been playing the funding game on Perp.Fi for the last week or two, setting up some conservative long positions to make some income on the negative funding rates that are available. I’d been doing pretty good for a while with my 1.5x BTC position, then I went and got all stupid with a 4x ETH long. I apparently forgot what happened to me last time I pulled some shit like that. So last night I went to bed, disgusted at myself and telling myself that I deserved to get liquidated for the $8k that I had laid down as margin. I had a little trouble falling asleep, but slept well and woke up with it on my mind. I didn’t want to know.
I told myself I was cool with the loss, and held off looking at the chart while I did my morning routine, but I accidently saw the chart when I unlocked my phone. I was right at liquidation. I meditated on the best course of action to do, veering between doing nothing and adding more fuel to the fire. I tried to figure out what the best course of action was. I went for a two and a half mile jog to clear my head, then finally went upstairs, pulled a few thousand out of my BTC position margin and threw some of it at the ETH position, trying to bring them somewhat into parity. I think I was actually in a liquidatable state when I did it. I guess the bots had bigger fish to fry. Lucky me.
So I spent a lot of time staring at the five minute chart again today. I managed to get several hours of work done on some Rust challenges, but I kept looking at the chart every couple minutes. As the day went on and I got interrupted more and more with the kids it became harder and harder to concentrate, but I managed to get a lot done. Plus I did a lot of cleaning and cooking. But the precariousness of my position plus some trouble with the girls put me a bit on edge, so I lost my temper a few times. Missus saw my stress and asked what was wrong, so I told her, then went and cut the grass.
I came back in and commiserated over the situation, watching the chart. In a way it would have been better if I’d been washed out in a quick scam wick. Just put me out of my misery. This long drawdown is going to suck in more and more of my capital to keep the position alive. I don’t know how far down I can go, but sunk cost fallacy is surely a factor right now. It’s my fault for not having a plan for this. Surely ETH can’t go down $2000 again! The whole situation makes me fear about how low BTC can go. If this crap goes on too long I’m going to wind up liquidating everything in my portfolio just to keep this long going.
A few minutes ago the price got really close to my liquidation price, so I put another $1000 in margin, giving me another couple hundred dollars reprieve on my liquidation price. I’ll sleep better, and who knows, maybe I’ll see a reprieve and make it out of this alive. What a mess. This is definitely not how disciplined trading is supposed to work.
Pretty decent day today, some market woes withstanding. Missus picked up all of the slack today and the kids weren’t too bad.
I got up early, well rested and had most of the morning to myself. The market had a bit of a dump and I realized how precarious my ETH leveraged longs were. I wound up taking a bit of margin out of BTC position and was preparing to throw it at my ETH position as a last resort, but the price rebounded and had a nice weekly close. I’m obviously a bit overextended there and spent a good deal of my time meditating trying to figure out what to do. I considered throwing cash at it but actually did the right thing and moved some money to fiat. Note to self: Gemini doesn’t do USDC and Voyager takes 5-10 days for transfers, so give yourself more wiggle room next time.
So while I was getting caught up on in the FUD and watching the five minute chart I listened to some music and farted around. It was a bit of a waste really, but I was still suffering from a bad diet the past few days. Younger went to church with the neighbors and Missus took Elder out to shop for Younger’s surprise birthday party, so I had the house to myself for a bit. Played piano but wasn’t productive in the slightest.
Missus got me a small keg for my homebrew, so I took the day to quit procrastinating and brew up a recipe I picked up at a local supply shop like six months ago. I’d been procrastinating because it required me to cook my own hops and I was fearing it’d be a huge pain in the ass. It was, but I figure I might as well get it over with. I’m still using my two gallon starter kit; I’m not sure I want to go further with the supplies I’ll need to do the full five gallon experience. We shall see.
I plan on getting to bed on time tonight, picking up with the habit wagon tomorrow: go for a run, do some deep work on coding, and get stuff done.
What a day. We drove a couple hours out today and just got back in an hour ago. Over six hours on the road. First we went out to a gem mine, then headed over to the family lake or a bit of swimming and fishing. I am exhausted, and everyone is sunburnt to various extents.
The “gem mine” was a bit of a letdown. You basically buy a bucket of dirt. The place scatters in feldspar, quartz and various other stones in the bucket, and the kids can then take scoops out of it and sift it through a sluice that they have setup. The girls loved it, but I’m glad we didn’t go too far out of our way for the thirty minutes or so that we spent there.
From the mine it was a forty minute drive to the family lake. My father and law has been busy up there, building up the dock. I did a bit of swimming with the girls and almost drowned myself. One side of Younger’s life jacket slipped out of the belt/chest straps and I thought she was going to slip right out the bottom of it and I started to panic. We were in the deep end and I had both girls with me, so when I ordered them to start swimming back they though I was playing a game and I was really scared that something was going to happen to one of them.
I tried staying out of the sun as much as possible; I forgot my hat, and there was no shade on the water, of course. The kids “caught” some fish, FIL hooked them and let the girls reel them in. The small lake is overstocked with fish, mostly small bass. We pigged out on snacks, drank a few beers and just hung out while the girls enjoyed themselves. It was a good time.
How did I let the day get away from me. I forgot to schedule blog time and here I am, ready to go to bed, but throwing myself at the computer just to keep the streak alive.
i can barely see what I’m typing because i don’t know where my glasses are. I just don’t want to look for them more than I want to get this done and go to bed.
I finished a particularly difficult Rust Exercism that turned out easier that I made it. I signed up for a Gitcoin grant for Perp.Fi. I spent most of the day taking care of my kids and then volunteered for taking care of D’s three kids so that he could take his wife to see The Hitman’s Wife’s Bodyguard. Thankfully my other neighbor L. invited us over and the kids got to run around with water guns. We watched Luca, had pizza and popcorn.
Tomorrow we’re going out on a road trip. Just for one day, not overnight, but Sunday I’m supposed to go deal with the hoard at my dad’s house. Happy fathers’ day.
i used my Fold card today to buy groceries. Twice. One percent in sats doesn’t seem like a lot, but we’ll see.
Today was a much more productive day. I finished reading Deep Work last night and decided to follow one of the recommendations to schedule out my whole day. Mostly. I got up at six, did my meditation and tea, then went for a two and a half mile run – the longest I’v done in years. I got back before any of the girls got up and decided to spend a few minutes on one of the projects on my Trello board.
I managed to get a pretty solid two hours in this morning working on one of the Rust Exercisms. I didn’t finish it, but learned a lot, and kept driving forward until my time was up. Then lunch, took the kids to the library, and did some slight rescheduling while Elder finished up her last day of school. I managed to get another forty five minutes in reading through this wonderful primer on Programming on Solana.
I spent a good deal of time working out some metrics on the Perpetual Finance funding. Yesterday’s rates were pretty bad, but things picked up earlier today. I actually started the day but converting some wBTC to USDC, moving it to xDAI and putting it in a 4x ETH long position. The liquidation price is just under two thousand dollars, and I don’t think it’s likely that we’ll see that price anytime soon. Regardless, I’ve found myself updating my master wallet sheet every time I take a break, or checking the funding rate whenever I find myself on Discord, so I figured a more formal dashboard was in order.
I started out by taking a CSV file from the historical funding rates on Redash and importing it into a Google Sheet. I filtered out results by BTC and ETH and popped them into separate tabs, then did some averaging and calculations to figure out what the trends were. So now I have a snapshot of what the past daily, weekly, and monthly rates would equate to at the current asset price. (I’m not trying to compute historical price data at this time.) I also looked at past periods as well, so I can see how yesterday, last week, and last month compare to the current trending rates. Hopefully it gives me some good indication as to they type of returns I can expect.
Yesterday’s funding was pretty bad, and it looks like last month was horrid as well. But hopefully having this snapshot will give me less anxiety. I’m also not very anxious about price action. Since I have what I consider very conservative liquidation prices, I should be able to hold these positions open perpetually and generate a decent income off of the funding. And again, since funding is determined by the position value, my income should increase as bitcoin starts making new all time highs. Seems like it’s just a matter of time.
Still, my spreadsheet has its limitations, and could use some marked improvement. I’d like to make it easier to update. Instead of filtering the sheet for ETH and BTC and copying the results to another tab, I should figure out how to pull and filter the data from the primary tab, so I can just import the new CSV and have the results update with a minimal number of steps. Of course I would want to automate the data import as well, but my options are limited there. Graph Protocol is an option, but at that point I’m better off programming something myself. My initial thought is to go with something in a Python notebook, but I might not even need to do that, I should just be able to pull what I need in a simple react app. I’ll have to explore.
Unlike yesterday, today was not a particularly productive day. I got off to a bad start by staying up till 1:30AM last night, so I was not in top shape this morning when I woke up. To make matters worse, bitcoin took a bit of a dive overnight, and funding on Perpetuals turned slightly positive, meaning that my brilliant passive-income generating strategy was not generating any income. Rates eventually turned negative again, but just barely. Back to the drawing board.
I did a Rust Exercism, but my result was not very idiomatic. I’m getting better, but it’s slow going. We completed a second test transaction on the SAIADao multisig and are ready to move forward with production tests, but while I was reviewing some Solana code I figured out that I might be better off using the generic multisig program in the Anchor framework docs since it can more easily be used to invoke the Serum trades than writing a custom program. We’ll see.
I did manage to do a fair bit of cooking. For dinner I smoked some chicken wings that came out great, but the meal turned out a bit more work. By the time I finished with cleanup I needed a second shower. Tons of leftovers though.
I am definitely back on the atomic habit wagon tonight though. I’m finishing up Deep Work right now and am going to bed early. I want to get up early (on-time) and get a jog in first thing.
I also did a health assessment for my insurance company, earned $100 in credits for doing that and uploading a picture of my vaccine card.
So overall, I did get a lot done today, I just felt like shit.
I have a local WordPress server running here at the house. I set it up as a private family blog last year, but didn’t have it set up properly so it hasn’t been accessible. I fixed it today. I had some pictures of the girls from last July and a canoeing trip that we took. The last post was in August of last year when we got the cats. I got it set up as the home page on the various workstations that we have here at the house, hopefully I can inspire the rest of the family to update it as well. It should be a fun chronicle
I can’t stop thinking about Perp.Fi. I’ve been checking it almost hourly, running calculations and what ifs. A 1 BTC position with 1.5x leverage is generating funding more than my previous salary. I’ve got a liquidation price around $15k, and I think there is zero chance that we ever see BTC prices at that level. So I’ve been looking at rates for certain position sizes and liquidation levels and figuring out what the weekly income is. I could reasonably be pulling in between five and fifteen thousand dollars a week. It’s breaking my brain.
Another option is to keep my modest leverage rate and increase the amount of capital. The risk here becomes one of too many eggs in one basket, as I’ll be concentrating my funds in one position. Very risky. On the flip side, Nexus Mutual has coverage for Perp at a reasonable 2% rate. That’s very reasonable. I’m almost tempted to convert some of my cold storage bitcoin. But I feel like I’m being greedy.
All I really have to do is wait. As the funding pays out, it lowers my liquidation cost. I can remove margin at intervals, and open additional longs to maintain a set margin rate. And as the price of BTC increases over time, so shall the payouts. The risk here is that the funding rate turn positive at some point. I’m not sure how to evaluate this risk, given that I don’t fully understand the reason why rates are negative in the first place. I assume it’s because it’s the easiest way to short ETH and BTC without going through a KYC process. That’s certainly why I’m using it.
Still, part of me fears that this opportunity won’t last, and hence the FOMO that I have. I should be happy, making money for nothing, but part of me wants to crank the knobs up to eleven and go crazy. I might need to find a way to do that with a smaller, separate account that will allow me to manage risk a bit better.
So I’ve been experimenting with Perpetual Finance for about a month now, and after today’s BTC pump over 40k I finally decided to take the plunge and invest a significant amount on the platform. Also, I won their Pool Together lotto.
PerpFi is an on-chain, decentralized perpetual contract for crypto assets such as bitcoin, ethereum, and DeFi blue chips. They offer up to 10x leverage, short or long, and use the xDAI network for super low transaction fees. All trades are denominated in USDC, and they’re offering no-gas bridging if you move more than $500 over to the xDAI network. They have a governance token, PERP, and also provide trading rewards in the form of a Pool Together token which pays out in PERP tokens. This is how I won the lotto.
Perpetual contract are a type of financial instrument that is native to crypto. It’s similar to a futures contract, but the difference here is that unlike traditional futures, perpetuals do not have expiration dates, meaning that one can long or short an asset and hold the position indefinitely. FTX and dydx are two centralized platforms that provide perpetuals, Perp.Fi is the first decentralized on-chain platform for this.
Since perpetuals allow leverage, there are funding costs associated with positions. These costs are determined by the difference between the price of the perpetual contract and the oracle spot price. If the perp price is below spot, then a premium is paid to those who take long positions. This is how our strategy works. Here’s a snapshot for all the current Perp.Fi trading pairs:
Again, anything with a negative rate is actually generated by shorts paying longs. Rates were actually a bit higher today, around 133% for ETH. For ETH and BTC, historical rates have always been negative, due to the fact that Perp.Fi is primarily used to short these assets.
I first started experimenting with Perp.Fi about a month ago, taking out a few 5x long positions on ETH and BTC. 5x is actually kind of aggressive for a long-term position, and I actually wound up getting partially liquidated a few weeks ago when we had that dip late last month, losing about a third of my position. Since then, however, the funding rate has almost paid back what I lost. And since one can take an un-liquidatable 1x long position on Perp, it’s pretty much a no-brainer for me to move my wBTC positions out of underperforming yield farms and put them into Perp. I’d also argue that Perp.Fi makes more sense than holding Index Coop’s ETH and wBTC 2x FLI tokens, since they both suffer from a 2% management fee as well as funding expenses from their underlying components.
Recently I’ve been experiencing a bit of anxiety over a bit of underperformance in my stablecoin reFIREment fund. I’m short on cash and was facing the prospect of having to spend some of my stablecoin yield farms. I think these perp contracts may have given me a way to not only stave off dipping into those funds. I’ve opened a low-leverage, 1.5x position on the platform, equivalent to my annual expenses. The funding, it if maintains a 100% APR, will allow me to remove margin from my account and send it to my expense account. Perhaps a bit more explaining is necessary.
Let’s say you do as I did today and open a 1.0 BTC position with 1.5x leverage at $40,000. Your upfront capital is $40k, but you’re actually holding a $60,000 BTC position. The funding rate is based on your position size, not your margin, but the funding is paid to your margin. So while you might initially start your position with a liquidation price around $15,000, as each hour passes, the funding rate will lower your liquidation price. Perp.Fi allows you to add or remove margin, so you can actually remove margin over time, keeping your liquidation price steady, and allowing your to either add to you position or cash out. Herein lays my strategy.
I’m hoping that the funding rate will be sufficient for me to maintain this low-leverage position indefinitely, removing the funding proceeds from my margin. Of course the rate is variable, so I’ll be keeping a close eye on things. And of course there’s the risk from carrying a leveraged position, both from price volatility and liquidation risk. That said, I think the bottom is in an there is zero chance that bitcoin goes below 20k. (Famous last words.) If I wanted to be more aggressive I could remove more margin and lever up my position, but I think I have a somewhat conservative position here that is mostly risk free and will allow me to pay my mortgage and grocery bills.
Today was about as perfect a day as I could hope for. I woke up rested, had a decent morning and took Elder out for her board meeting/daddy-daughter day. It was pretty nice.
Since we did all of the cleaning late yesterday afternoon, the house was mostly clean when we woke up this morning. There were a few things left over from our activities last night, but overall, I was really happy with how decluttered the front office was while I was meditating this morning.
Younger was a bed hog this morning –apparently she drop-kicked Missus in the face last night. She went to the neighbors this morning and rushed back asking to go to church with them. I’m fine with the free baby-sitting, but have some minor concerns about the indoctrination. I’m not going to freak out about it, as Missus says, we both went to church and we wound up ok.
Elder and I had our quarterly board meeting. The four of us went to Golden Corral last night, a reward for cleaning day. It was Elder’s choice, and I tried to finagle my way out of it today, but went along with it. She wanted to go to the trampoline park, so we did. I just wish I hadn’t done my leg workout this morning. My knees will curse me tomorrow. We spent an hour there, went and got ice cream, and spent the rest of the day playing video games and watching videos with the fam.
I asked Missus to take care of dinner and she ordered Boston Market via GrubHub. We are so different. I cooked bacon, eggs, and hash browns for breakfast this morning, brined some chicken wings for the smoker tomorrow, and cooked about ten lunch and dinners this week, and I ask my wife for dinner and she spends a hundred dollars on two meals.
Money is really foremost on my mind, obviously. I haven’t even looked at the bills from my Miami trip, but I’ve been spending hundreds at the grocery store, not to mention the bill from today’s activities. Tomorrow marks the start of week three of my retirement and I’m already itching to return back to work.
Today’s been a stretch. Partied a bit last night and spent most of the day doing accounting and cleaning, then took the kids out for dinner and some window shopping.
Last night we watched Wish Dragon, then afterward I played Control. It’s a very interesting game, creepy in a way that reminds me of the SCP Wiki. It’s actually been on my shortlist for a while, then Epic Games gave it away as part of their weekly rotation and I had to jump on it. I wound up playing it till everyone went to bed, then puttered around in Baldur’s Gate for a while then watched an episode or two of Enchantment and went to bed around 1:30 in the morning.
Slept in till 9:30 then the girls got to work cleaning the house while I did the house accounts. I was two months behind, owing to our mortgage refinance. It took me a while to figure out exactly how to reconcile all the payoffs and escrow payments; I’ve still got a lot to figure out, but it’ll have to wait until I get more details from our old escrow service. Then I did the girls finances, moving money from Lending Tree to my bank then to their respective BlockFi accounts. I’m still putting $25 worth of bitcoin in there from my Gemini account, but I may just need to stop that. They’ve got several hundred in GUSD that I might start converting to bitcoin instead of me putting fresh fiat into their accounts. I got to think about it.
The rest of our finances are ok. I don’t have enough cash to make it through the month, so there are going to be some hard choices coming up. The market just keeps ranging and there’s not much going on. I’m not spending as much time on Twitter right now, as things are just miserable on there right now. Everyone’s expecting things to get worse short term, but are long term bullish, so I just need to survive the next few months. Oh, and student loans come due in September.
The Alchemix alETH vault is supposed to go live any minute, but I’m mainly going to be keeping an eye on that to see how things might work out when they launch alBTC, as I was looking at using that to pay off the house or the loan debt. Yields are way down right now, so it’s kind of hard to figure out what to do.
I got an email from a blockchain fintech company based out of Oregon. They were looking for Python and full-stack devs, team leads and product managers. I told them lets talk.