What Are Binary Options, and How Have I Made Money With Them?

Gral
19 min readApr 23, 2021
© 2009–2021 Nadex

Background

For about two years now I’ve been dipping my toes into the world of exotic options — specifically, binary options. While these may sound intimidating, binary options are actually fairly simple products (for the world of finance) that can be understood by anyone with a surface level understanding of the Black-Scholes-Merton Pricing model.

Additionally, when it comes to exotic options, these are one of the few breeds that are actively traded on exchanges. For U.S. citizens, there are really only four ways to trade binary options, and only one of those ways is on a CFTC regulated exchange. For this article, and my own investments, I will stick to the binary options traded on that exchange, called the North American Derivatives Exchange (NADEX).

In this article, I will take you through; the basic structure and pricing of these products, my on-again off-again relationship with these products, and a broad overview of a trading strategy I currently run on these options using a trading bot I programmed in python.

The Basics

Binary options, are a simple yes-or-no bet on if a certain asset’s price will be above the strike price at expiration. If you were to take the “yes” side of the bet, then this would be similar to buying a vanilla call option. If the asset price finishes above the strike price, you win. Conversely, if you were to take the “no” side of the bet, this would be similar to buying a vanilla put option. If the asset price finishes below the strike price, you make money.

The distinction between binary and vanilla options really comes up in the payouts. With a vanilla call option, you would be paid either $0 (expiration price ≤ strike price) or the difference between the spot price and strike price (expiration price > strike price). For a binary call option, your payouts would be either $0 (expiration price ≤ strike price) or an agreed upon amount of cash (expiration price > strike price) —$100 per contract for all contracts on NADEX.

With NADEX, these yes-no contracts are sold with 5 minute maturities, 20 minute maturities, 2 hour maturities, one day maturities, one week maturities, and occasionally one month maturities. The one day contracts are the ones I’m interested in and will be modeling later in this article.

Additionally, NADEX sells these European style option contracts on a variety of underlying assets. The most frequently traded asset class is the FOREX assets (EUR-USD, GBP-USD, GBP-EUR, etc.). Second on the list are the large global market indexes such as the S&P 500, DJIA, NIKKEI 225, DAX, and so on. Third on the list are the common commodities such as Gold, Copper, Corn, etc.

For ALL of these contracts, traders are betting on the front month futures contract for the given asset. In this article, I’ll examine the S&P 500 binary contracts which are based on the CME E-Mini S&P 500 Index Futures front month contract as the underlying asset (quite the mouthful, I know). However, if you follow along with the code to come, you can easily replicate this analysis with an asset of your choosing.

Binary Option Pricing

Besides understanding how these options actually work, it’s also vitally important to understand how these options are priced. To anyone who has studied the Black-Scholes-Merton model, the above formula’s should look somewhat familiar if not simpler than the standard model. For the purposes of this article, we are only interested in the Cash-or-Nothing options.

To understand this pricing formula, let’s examine the Cash-or-nothing call. The first part we’ll look at is the term, Q*e^(-rT). This is simply discounting the cash payoff at the risk-free rate to get its present value. When T is only a few hours, the present value of Q is essentially just Q itself. And notice, this part of the formula is the same for the put option.

Okay, that’s pretty straightforward. But what about that second part, N(d2)? This becomes a bit more math heavy, and at the risk of oversimplifying these principles I’ll explain this portion using some light induction.

Let’s first define a hypothetical asset that is currently trading at $100. To expedite this explanation, I put together a quick Excel sheet to walk us through calculating N(d2).

At The Money Binary Call Option — Strike Price = Current Price

The key assumptions I’m making here are that the annual risk-free rate is very low, this asset pays no dividends, and has extremely high volatility for the purpose of this example. This is also a contract with one full day (24 hours) to maturity that we just purchased.

After making the necessary calculations, we find N(d2) evaluates to 0.499. But what does this actually mean? Well, this is the implied probability that the asset’s price will be above its current price in 24 hours. I won’t get into the nitty-gritty details but I assure you there are lengthy proofs available online for why this is the case. The result here is saying there is a roughly a 50% chance the assets price will be above the current price in one day. This is the same as saying, we have a 50% chance of winning the “yes” bet.

In The Money Binary Call Option — Strike Price < Current Price

With the same assumptions, and a strike price of 95 which is below the current price (hence, In The Money), we find that N(d2) evaluates to 0.638. This is an implied probability of 63.8% that this asset will stay above the strike price of 95 and we will win our “yes” bet.

Out Of The Money Binary Call Option — Strike Price > Current Price

Here, with a strike price of 105 and current price of 100, we find that N(d2) evaluates to 0.366. As with the prior two examples, this gives us an implied probability of the asset finishing above a price of 105. But, there is only a 36.6% chance that we will win with this contract.

Putting It All Together

We’re now ready to put this all together to gain a more complete understanding of the pricing formula. We have Q*e^(-rT), which we established as the present value of the binary option payoff. We also established that N(d2) is the implied probability of the yes bet being correct at expiration.

So, when we multiply these two terms together we end up calculating the present value of the expected payoff. For a contract with a strike price close to the spot (At The Money) we should expect to purchase the contract for roughly 50% of the agreed upon payoff. If the payoff is $100, the contract should cost ~$50.

As we lower the strike price, and hold everything else constant, we find that the contract will increase in value because there is a larger implied probability of winning the bet.

As the strike price increases, in relation to the spot price, we find that the contract will decrease in value as there is a lower chance our “yes” bet will be correct.

It also follows that a contract with a higher probability of finishing in the money should cost us more than a contract with a lower probability of finishing in the money.

One thing to note here is the pricing of the underlying asset for these contracts. The underlying assets (future’s contracts) of these binary options are themselves another form of cash-settled financial derivative. What’s more, for the S&P 500 binary contracts, the future’s contract’s underlying asset is the S&P 500 Index which itself is calculated by formula. So in short, I’m speculating on a speculative/insurance product for a fairly arbitrary asset.

The Love-Hate Relationship

Now that we’ve gone through essentials of binary options, we’re ready to ask ourselves; how does one go about making money with these things? This is a question I have been asking myself off and on again for a while now. And before we go any further, I should say nothing in this article is intended as investment advice. Rather, this is intended to explain the details of binary options and summarize a strategy I use.

I was first exposed to these options in a undergraduate finance course via a professor’s side comment mentioning NADEX. Since that time, I’ve had a nagging interest in these options.

During one spring break, I spent a good amount of time day trading these options on NADEX. I was even able to turn $250 (the minimum deposit on NADEX) into $1,000 over the course of that break. The next week, though, I pretty quickly lost all of those gains. After those losses, my risk aversion forced me to move on from these investments.

But, every few months I would return to my account on NADEX and buy a contract or two. Some were winners and other losers, but there was little consistency in my performance. I continued to research different strategies provided by the hundreds of other bloggers and YouTube channels discussing these very contracts. My struggle was finding a strategy that could generate consistent returns without a significant investment of cash or time.

The primary reason I wasn’t interested in posting a lot of upfront cash was that I didn’t have a whole lot of cash to post anyways. But, these were also new investments to me that, despite being relatively cheap, have the risk of losing every dollar that is invested in a matter of minutes due to sudden price movements. For that reason alone, I’ve never felt comfortable putting more than 5% of all my investments into these assets.

Time has also been in short supply for me through my undergrad, and now graduate, courses. For that reason, I want to employ a trading strategy that requires little action from me, and does not require me to obsessively monitor my trades throughout the day.

In my experience a lot of strategies out there require too much time spent monitoring your trades and are hyper-focused on the short term maturity contracts (5–20 minute maturities). Even worse, many of the explanations for the strategies can be summed up as “monkey-see, monkey-do”.

With that said, I have a pretty high standard for what I would consider a reliable strategy when it comes to these options. Notwithstanding my two conditions above, I also want a strategy that can generate consistent wins.

So, to recap I need a strategy that: (1) does not require large initial investments, (2) does not require a large investment of time, and (3) generates consistent wins.

Those are clearly some high standards and probably not something that can be easily found with a few google searches… It took a while, but back in February of 2020 I thought I finally thought up something that could fit my criteria.

I spent a couple weeks thinking the strategy over in my head and then spent a month developing some models to test this strategy out. The quick summary of my strategy is to buy a certain number of binary call contracts at the open of each trading day with a strike price closest to the opening price. Overall, this is a bullish strategy that requires making very short-term bets, but becomes profitable in the long-run. The thing is though, around the same time I figured this out, Coronavirus had already started wrecking havoc on the U.S. and global markets.

Back in March of 2020, American markets experienced record breaking volatility. At the time, it wasn’t an unpopular idea to think the entire system was on the brink of collapse. Jerome Powell, America’s top economist and current Fed Chair, even said so publicly!

However, it was also around this time that I wrote a report in an Applied Derivatives course about these very options. In that report, I identified a trading strategy which I believed would meet my elephantine standards.

While I was confident about this strategy working in “rational” markets, the extreme volatility we were living through greatly shook my confidence. So much so, that when it came time to present my findings to the class, I very confidently told my classmates to steer clear of these investments.

Despite this, my strategy was that idea which still lingers in my mind and keeps me up some nights. That may sound silly, but over the past year we’ve seen markets make a historic recovery from a historic crash. As we’ll soon see, the strategy I propose makes the most money in a bull market. While we all could argue about how much “irrational exuberance” there is in the market, I don’t think there’s anyone who could deny that American stocks have been in a bull market since April of 2020.

Developing My Trading Strategy

So, here it is. Let’s get into the rules for my strategy.

The strategy is a general buy and hold strategy that requires me to purchase a certain number of daily binary call options on the S&P 500 contract at 9am EST. These daily contracts will expire at 4:15pm EST, and regardless of what happens throughout the day I will hold these contracts to expiration.

The strike that I will purchase these contracts at is the one who’s contract has the price closest to $50. As I explained in the pricing section, this is the contract that has a ~50% chance of being a correct “yes” bet. An additional limitation I have placed is that the contract can not exceed $53 in price. In the following model it is difficult to incorporate this restriction or demonstrate why it’s necessary, but I have implemented it in the python script I use to automatically run these trades.

Essentially, this strategy is betting on whether or not the S&P 500 Futures price will close at a higher price than it opened at on a daily basis. It doesn’t matter how large the return on the futures contract is. What matters, is whether or not the daily return is positive or negative.

If my bet is correct, and the close price is higher than the open price for the day, I’ll be paid $100. On a per contract basis, this net’s out to roughly a +50 return. If I am wrong, then I will lose my initial investment and record a -50 return.

The above chart demonstrates that in most years, the S&P 500 E-Mini Front Month Futures contract will more frequently close at a higher price than it opened at, on average. At face value, this could imply my strategy should on average generate more winning bets than losing bets.

This is not always true though. In my analysis, I found there are several years (2009, 2011, and 2016), that had more up-days than down-days, but still result in a net loss using this strategy due to the sequence of up-days and down-days. In these three years, down-days would frequently be followed by another down-day. And there were many cases of three down-days in a row.

This causes issues with the domains of the piece-wise function I use to calculate the number of contracts purchased each day. Essentially, when I break through a cash balance limit that allows me to move up to the next subset of the domain, I need at least two winning days — in a row — in order to be in a cash balance range that allows me to comfortably stay in that subset of the domain with low risk of moving back down. Overall, though, the number of up-days vs down-days is a good barometer for the success of this strategy.

At this point, the strategy has fulfilled the first two standards I’ve set for myself. It requires very little action from me. Every morning all I need to do is calculate how many contracts I should buy and place the order via NADEX. Because I’m generally taking small positions in a market that has high trading volume my orders will always be filled within a minute. On top of that, I have also automated this process with Python so I can sleep in a bit longer.

After the orders are placed, I’m not required to monitor these positions as I will be holding them to expiration. If I have extra free time in the day and can monitor these positions then it would be possible to mitigate losses and/or buy more contracts following an indicator strategy. Again, though, that’s not required or something I will do frequently. So, I will not include the ability to do so in my models to come. The one time this year that I have sold before expiration was today when I got a notification that Biden proposed raising the capital gains tax and watched the market immediately take a nosedive off the roof of 23 Wall Street.

What about the third standard, though, will this strategy generate consistent returns? Well, yes and no. If I was only buying a defined number of contracts each day, regardless of what that number is, then this strategy is a loser. However, if I set strict rules for how many contracts I should buy each day I am able to manipulate my position size in a way that starts to generate consistent returns. Under very strict conditions, this strategy is able to satisfy my third standard.

My rule for calculating how many shares I will buy depends on the current cash balance of my account. What’s maybe conflicting about this strategy is that as my cash balance increases, I will take on less risky positions. Here, I am defining risk as the percent of my cash balance that I’m using to purchase contracts.

For example, the initial deposit amount on NADEX is $250. If my cash balance is at or below that amount, I only purchase one contract. That one contract, though, could cost me anywhere from 20–100% of my current cash balance. As my cash balance increases, I will start to purchase more contracts but use a smaller percent of my overall portfolio to do so. I won’t go into the exact calculation, but this chart summarizes the number of contracts I will purchase in relation to my cash balance.

This shows that as I start to earn more money, I start to risk less of it on individual trades. A big part of this is due to the fact NADEX will not allow individual investors to purchase more than 100 contracts of the same maturity on one asset. Of course, as my portfolio grows I could start placing trades in other ETF markets to take on larger positions. This is not something I currently have included in my trading bot, but could be a relatively quick addition in the future.

Before moving on from this, I do want to make a big disclaimer here. I’m working on further refining the domain and range of the piece-wise function, but this current function is the result of meticulous backtesting and simulations. Manipulating the function one way will result in significantly larger returns in bull markets and exacerbate losses in bear markets. And vice-versa for manipulating the function in the opposite way. However, the overall success of this strategy is heavily dependent on the parameters and outputs of this function.

Simulating & Backtesting This Strategy

To test this strategy out I have performed dozens, if not hundreds, of Monte Carlo simulations and backtests to determine the validity of and risks inherent to this strategy. The assumptions and parameters I test the strategy against include the average price of individual binary contracts, deposit sizes, the average spread between my contract’s strike and the spot price at opening, and a set of parameters that depend on if I will make withdrawals from my portfolio when the cash balance reaches a certain limit.

I won’t go into the full results of the Monte Carlo simulations with this article, but there have been two main takeaways for me. The first is that the average price of the contracts is far more important to the success of this strategy than the spread between the strike price and opening price for the day. Keeping all else equal, increasing the average contract price from $50 to $53 results in the strategy losing all of the initial deposit in over 90% of trials. Conversely, increasing the average spread from the strike to open price from $0 (meaning each contract is purchased with a strike equal to the open price) to $5 (meaning on average each strike is $5 OUT of the money) only results in losing the entire initial deposit in just over 60% of trials.

One simulation I ran was under the assumptions that the average contract cost $48 and the strike price was only $2 above the opening price. Under these conditions, less than 1% of trials resulted in losing the entire initial deposit. The mean return, over the course of 252 trading days was well above 10x returns, with a max of 314,000% return. When I first saw these results, I thought there was no possible way anyone would be able to achieve those averages. And while I can’t say I’ve been able to match those averages closely, I have been able to get fairly close with current average prices of $47.65 and average strike-to-open of $3.97, with a win rate of 59% since the start of 2021.

Before we move onto actual results from my trading bot, I want to explore a backtest of my strategy over the course of 2020. The following plot is one that has kept me up at night many times over the past few months. Using data from Yahoo Finance on the closing price of the front month future’s contract, I’m able to easily determine if a daily binary call option would finish in the money if purchased at the opening of each trading day. I don’t think the logical test could be any more straight forward — is the close price greater than open price for a given date? If yes, then it finishes in the money. If no, then it’s a wash.

Now, this isn’t wholly accurate because NADEX quotes the spot price as the volume weighted average of the most recent 18 transactions. So, it’s possible that on a day where the close price is not far off from the open price, Yahoo and NADEX would report a different price at the close of the market that would impact the outcome of the options for that day. However, I will frequently check the quotes provided on my iPhone and NADEX on my laptop at the same time and almost always see the same price. For that reason, I don’t think this inconsistency will have a large impact on my simulations.

From this visual, you can see that in mid-march my strategy ran through all of the cash in the account. I was at a balance which would not allow me to purchase a contract so I would have had to deposit another $250. If I did that, the cash balance in my account would be around $18k by the end of the year. This is all under the assumption that the average contract cost is $50, and I am able to purchase a contract with a strike price that matches the opening price. Obviously, both of those assumptions won’t hold in the real world, but over the past few months I have been able to record lower average contract prices and manageable spreads between the strike and open price.

Though, in fairness, if we run the same simulation on the time period of 2015–2016, we see a very different story. The strategy would have me deposit $2,750 over those two years and never come close to recuperating those deposits. If we go back up to the daily gain/loss ratio chart, there’s a clear connection between the ratio’s for those years and the strategies performance.

2021 Results

For my New Year Resolution’s I decided it was time to finally put my money where my mouth is. Over the winter break, I worked out all the kinks in my price tracking script and transformed it into a fully capable trading bot. There have been some unexpected kinks along the way, but overall the early results have been promising.

My initial deposit of $250 has now grown by 570.9% since January 11th, 2021. I’ll note that I missed many trading days in April due to an issue with my trading bot where it was not recording the fact it made a purchase and would continue purchasing contracts after the initial purchase. At that point I stopped running the bot and it took me some time to make the necessary updates. Also, on April 22nd I sold my shares prior to expiration due to receiving a notification on my phone that the Biden administration was going to propose a raise in capital gains taxes.

On average, my profit and loss per contract is $8.955 and I’ve traded an average of 2.75 contracts per day. My profit margin peaked at 720.1% on April 8th, but has since dipped to 570.9%.

One interesting stat is that over this same time, the underlying futures contract has had an average daily return of -$0.68. It’s also interesting that on a nominal basis, the future’s contract lost more value in one day than the losses resulting from my binary options on four occasions. On the flip side, there was only one day in this period where the future’s contract gained more in value than the gains resulting from my binary options.

I think this has been a very interesting time to start running this trading strategy. Over the past few months the volatility index has been declining, but we have seen isolated spikes due to market concerns over changing monetary and fiscal policy. During those time’s this strategy consistently resulted in losses for me, but the sequence of gains and losses has been such that the strategy leads to success. At least, for now…

Concluding Remarks

For now, this strategy is working for me. I have no clue what the future holds in terms of market volatility, but given the optimism surrounding the relaxation of public health guidelines I am feeling optimistic myself about the prospects for this strategy.

Going forward, I hope to incorporate a Natural Language Processing (NLP) model that will allow me to measure the sentiment of articles published to major financial news outlets during the prior day. Hopefully, this will provide me a certain level of confidence regarding the future’s price direction for the current day. I have been able to find some success with these types of models when it comes to Bitcoin and articles published to CoinDesk.Com. If I am able to put together a reliable model, I will be able to program that into my trading bot and allow it to decide if it should purchase the binary call or put options each day. If that is successful, it will further increase my average profit and loss per day due to mitigating the risk that arises from my piece-wise function used to calculate the number of contracts purchased.

Until I can do that, though, I’m more than happy with these early results.

--

--