Waiting is the hardest part

Friday night we had the neighbors over. I broke out the slip and slide, cooked a couple of pizzas and drank beer with Missus and neighbor dad. Talked about Bitcoin. Wound up letting Elder stay up till 11:30, playing video games and watching half of The Gate. She got scared right when we got to the good part and we turned it off. Seemed everyone in the house was sleep deprived and more hostile to each other than normal. Kids finally went down the street to play. Younger thinks she can just take out the front door and walk over there whenever she wants, and threw a huge fit yesterday afternoon when I told her her she needed to stay in the house during the hot part of the day.

I did fix a broken thermometer, though. Broke out the soldering iron and the hot glue gun. Saved a whopping fourteen bucks. Every dollar counts, y’know?

Spent a couple hours balancing the house books, throwing all our bank statements into GNUCash. The arrangement I have with Missus is a bit hard to keep up with via bookeeping, cause I’ve been trying to account for things that we pay for separately in our own personal accounts: cell phone in mind, and various insurance products through her payroll deduction and checking accounts. I’ve decided that we need to move them over to the house account as much as possible. Since we don’t have daycare expenses right now, it’s hard to figure out how to balance that. We’ll be consolidating as much as we can into the joint account, both to make accounting easier, and to make a proper budget.

Right now we’ve got more than six months cash on hand, for mortgage and utilities. Not including cell phone, groceries, our various insurances, or other incidentals. My credit card spending has gone down quite a bit since the start of the lockdown, but it’s too early to tell exactly how that’s going to work out long term. Zombie, LLC is still above water, so we’re looking good. I don’t keep any long-term savings in my personal account, as fifteen percent of my weekly salary goes straight into Bitcoin.

And for now, it looks like that is going to have to change. There’s a couple factors, but the main one is that I need to get the tax savings from a fully funded IRA. I can still gain bitcoin exposure through GBTC. And being able to take gains off the table in an IRA, tax free, is the best part. Unfortunately I won’t have access to it without taking taxes and penalty, but the goal here has been to build wealth, not to generate income. I’m still going to stack twenty five bucks for Elder and Younger like I’ve been doing, but my own wallet will have to stay where it’s at for the time being.

There’s some additional decisions I need to make about what we’re doing with our idle cash. Holding six month’s expenses in the bank where it earns a whopping 0.01 percent interest is stupid. A CD might be better, but not much. Even Compound’s DeFi rates seem to have dropped of a cliff lately, so I’m not sure what the right answer is. Do nothing for now, I suppose.

I’m also considering scaling into some alcoin positions. ChainLink is looking good, and IDEX tokens will increase my earnings on my DEX node. The only other thing I’ve been considering is Ternio, but I’m not sure I want to KYC at another exchange. I’m still bag holding mining proceeds from Ravencoin, Haven, Arrow and a few others, and I still haven’t touched any of my 2017-19 ERC bags like BAT, 0x, and others. Again, I’ll do nothing for now. I just can’t bring myself to do anything when BTC looks like it’s on the cusp of exploding. I might actually add some Grayscale Ethereum Trust, but I need to take a hard look at that first.

For now, we wait, and work.

Six Figure FIRE Update: Day 6

Job search, investing performance, and BTC reFIREment plan

So here I am writing at night again today, as getting up early just hasn’t been my thing lately. The girls are enjoying the quarantine bubble that we’ve formed with the family down the street, and they spent most of the day outside playing today. It was the most productive day I’ve had in a long while.

I applied to two jobs the past two nights, one, a fast-growing firm that provides AI-enabled insights for customer data, Outlier.AI, and a startup trying to “cancel the endless cycles of extractive capitalism,” Good Money.

Outlier is a rather large firm that has an office nearby and meets my salary requirements; Good Money is an unknown, but it’s a startup and the culture looks so awesome. I’ll keep applying to my dream list over the next few days: Square, GitLab, Stripe, Twilio. I’m also continuing my consulting gigs, but I don’t know that I can grow that fast enough to reach my goal. We shall see.


Other good news today is that the retirement account hit a new all time high. I was finally able to figure out my actual account performance by looking at my cost basis gains.

SecurityOpen dateClose dateGain(%)
APPLE INC (AAPL)12/26/201310/5/2018170.64
AMBARELLA, INC. (AMBA)12/26/20139/19/201819.05
AMBARELLA, INC. (AMBA)9/3/20159/19/2018(55.98)
AMBARELLA, INC. (AMBA)11/4/20159/19/2018(40.97)
AMAZON COM INC (AMZN)12/26/20139/6/2018383.27
AMAZON COM INC (AMZN)2/20/20149/6/2018457.70
ACTIVISION BLIZZARD INC (ATVI)12/1/201410/10/2018248.63
BAUSCH HEALTH COMPANIES INC (BHC)12/26/20139/13/2018(80.58)
8POINT3 ENERGY PARTNERS LP (CAFD)8/5/20156/21/2018(20.48)
8POINT3 ENERGY PARTNERS LP (CAFD)8/3/20166/21/2018(25.19)
3D SYSTEMS CORP (DDD)2/20/20149/5/2018(75.12)
3D SYSTEMS CORP (DDD)2/18/20159/5/2018(38.07)
FORTINET INC (FTNT)5/4/20179/5/2018112.83
NVIDIA CORPORATION (NVDA)2/10/201610/8/2018917.65
OCEANEERING INTL INC (OII)12/26/20139/18/2018(68.84)
Total:93.58
2018 Realized Gain/Loss

Obviously Amazon and NVidia were the big dogs here. My portfolio was imbalanced with the sheer amount that I was holding there, and I had a bad feeling about the economy. I wanted cash in hand, so I sold about half my position via a trailing stop. It looks like genius in hindsight.

2019 wasn’t too great from a gains perspective. On paper it’s only about 4%, but realistically it should be more since I was covering positions, covering my initial capital investment while retaining the rest of the position, risk free. I was able to take profits on GBTC, Paypal, RestoreBio, and Yext, but lost most of it in Aurora Cannabis and Cronos Group when weed stocks collapsed. I also got stopped out trying to play a very volatile penny stock involved in Bitcoin mining operations.

2020 hasn’t seen any major sells, my trading is automated now via my value averaging protocols. Very low volume, so to speak, and a modest 4.7 percent realized gains. My unrealized gains, however, are sitting at a whopping 38.54 percent! Most of that is Amazon (2014), NVidia (2016-17), GBTC, (2019-20; about one-third of my total portfolio,) and Netflix (2013). Major losers include Sierra Wireless, Hive Blockchain Technologies, FireEye, Overstock, and 3D Systems Corp. I’m currently holding thirty-one positions in all, seven of which I’m currently value averaging into.

Before I go tooting my own horn too much, though, I’ve got to acknowledge a bit of cherry picking here in the results. Due to my original brokerage being acquired, I don’t have access to my full trade history prior to the last four years. I’m sure it’s ugly. It’s not really fair to cout gains on positions I’ve held since 2013 while tossing out the ones I lost on during that time frame. I also closed out my traditional brokerage account, about one-fifth of my IRA at the time, and put it into bitcoin in 2017, before it broke 10K.


I am obviously putting my money where my mouth is with Bitcoin. Between my hardwallet and GBTC holdings, I have well more than half of my liquid net worth in the big orange coin, and a smaller bit more in Ethereum and other tokens. I’ve done the calculations and am looking at a BTC price target of $67K, at which point I will have more than enough to pay off all mortgage and student loan debt and establish my financial independence. My target date is sometime before the next halving, which I based off of the stock to flow model, which predicts BTC ranging above $100K before then.

There are lot of details to be worked out before we get there though. Obviously taxes is going to be the big one. I assume we’ll be looking at long term capital gains in the case of Bitcoin. GBTC gains in my IRA are untaxed, but withdrawing anything will be subject to income tax plus 10% early withdrawal penalty. So the best strategy right now is to continue to accumulate and hodl. Since I think BTC is going to accumulate price much faster than my four percent loans, it makes more sense for me to continue to accumulate BTC while making the regular payments.

One change I will be making moving forward is that I am going to resume contributions to my IRA, which I suspended in favor of buying bitcoin directly the past few years. I am missing out on the tax savings from my contributions, which is going to be a big factor next April given my expected increase in income. Once we’ve topped that bucket off, I can make a final decision on where my additional savings will go.

Automating value average stock investing

I spent most of the winter break working on automating a value averaging algorithm that I wrote about several months ago. Back in October we started scaling into three positions that we identified based on our work with some predictions we did using Facebook’s Prophet earlier. My goal was to develop a protocol and work out any kinks in the process manually while I worked on building out code that would eventually take over. While I’m not ready to release the modules to the public yet, I have managed to get the general order calculation and order placement up and running.

To start, I setup a Google Sheet with the details of each position: start date, number of days to run, and the total amount to invest. I used Alexander Elder’s Two Percent Rule, as usual to come up with this number. Essentially each position would be small enough that I wouldn’t need to setup stop losses. From there, the sheet would keep track of the number of business days (as a proxy for trading days) and would compute the target position size for that day. I would update a cell with the current instrument price, and the sheet would compute whether my asset holding was above or below the target, and calculate the buy or sell quantities accordingly.

After market open, I would update the price for each stock and put in the orders for each position. This took a few minutes each day, and became part of my morning routine over the past two months or so. Ideally, this process should have only taken five minutes out of my day, but we ran into some challenges due to the decisions we made that required us to rework things and audit our order history several times.

The first of these was based around the type of orders we placed. I decided that I didn’t want to market buy everything, and instead put ‘good-until-cancelled’ limit orders in. When there was no spread between the bid and the ask, I would just match whichever end I was on, and if there was a split I would put my order price one penny in the spread. As a result, some orders would go unfilled, and required some overly complicated spreadsheet calculations to keep track of which orders were filled, what my actual number of shares was ‘supposed’ to be, and so on. I also started using a prorated target, based on the number of days with actual filled orders. This became a problem to track. Also, some days there were large spreads, and my buy orders were way lower than anything that would get filled. There were times when the price fell for a few days and picked up some of these, but keeping track of these filled/unfilled orders was a huge pain in the butt.

One of the reasons that it took me so long to develop a working product was due to the challenges I had with existing Python support for my brokerage. The only feasible module that I could find on Pypi had basic functionality and required a lot of work. It had no order-placing capabilities, so I had to write those. I also got lost working through Ameritrade’s non-compliant schema definitions, and I almost gave up hope entirely when I found out that they were getting bought out. The module still has a lot of improvements needed before it can be run in a completely automated manner, but more on that later.

So far I’ve got just under a thousand lines of code — not as many tests as I should have written — that allows me to process a list of positions, tuples with stock ticker, days to run, start date, and total capital to invest. It calculates the ideal target, gets the current value of the position, and then calculates the difference and number of shares to buy or sell. It then places the order. I’m still manually keeping an eye on things and tracking my orders in the sheet as I’ve been doing, but there’s too much of a discrepancy between the Python algorithm and my spreadsheet. I don’t anticipate trying to wade through my transaction history to try to program around all of the mistakes and adjustments that I made during the development process. I’ll just have to live without the prorated targets for the time being.

I think priorities for the next few commits will be improving the brokerage module. Right now it requires Chromedriver to generate the authentication tokens; this can be done using straight up request sessions. There’s also no error checking; session expiration is a common problem and I had to write a function to use to refresh it without reauthentication. So first priority will be getting the the order placement calls and token handling improvements put in and a PR back into the main module.

From there, I’d like to clean up the Quicktype-generated objects and get them moved over to the brokerage package where they belong. I don’t know that most people are going to want to use Python objects instead or dictionaries, but I put enough work into it that I want it out there.

Lastly, I’ll need to figure out how to separate any of the broker-specific function calls from the value averaging functions. Right now it’s too intertwined to be used for anything other than my brokerage, so I’ll see about getting it generalized in such a way that it can be used with Tensortrade or other algorithmic trading platforms.

I’m not sure how much of this I can get done over the spring. Classes for my final semester at school start next Monday, and it will be May before I’m done with classes. But I will keep posting updates.