Covered Call Selector Update

The secret to optimizing a covered call strategy is locating the best calls to sell. One might have a large number of stocks to play with, at one time I was using 70 stocks, and each option chain has dozens or hundreds of options [expiration dates and strike prices]. 70 stocks might have over 7,000 possibilities and one only wants less than a half dozen. Clearly eyeballing the option chains is not a viable solution. At first I was using spreadsheets to evaluate individual option chains and that was a big help but limited to evaluating only a few stocks.

The next step was adding a Covered Call Selector to my Portfolio Web App. That was a huge improvement, yields increased dramatically.

Earlier this week I evaluated 19 stocks [19 option chains] and the default setting reduced it to just 371 calls. By adjusting the selection parameters one zooms in on the best candidates. After some fiddling the selection was down to 4 stocks. As you can see in the screen dump above, there is a Select button on the right side of the table. It transfers the chosen candidates [just 4] to the next screen which I called X-ref [don’t ask me why]

It has the same format as the Covered Call Selector. Initially it did not have the bottom row with the totals which I added earlier this week. I used this screen to transfer the data to a spreadsheet for the final selection – reduce the number of options to match the cash available to buy the shares. As with all spreadsheet work, cumbersome, error prone, and time consuming. The aim is to reduce the number of contracts.

HTML5 lets one edit the tables using JavaScript. No sense in reinventing the wheel, I went in search of the required code…

The next step was finding a way to access the output cells and I found nothing usable! Darn! So I went to sleep on it. Experience has taught me not to bang my head against the problem, let sleep deal with it. I found a solution and tested it this morning. It works [add IDs to the cells] then the problem is reduced to quite common JavaScript code which is what comes next. Stay tuned!

The Captain


Thank you for your excellent post. Where did you find the Covered Call Selector? Can anyone access it?


It’s home grow, it grew out of the spreadsheets I had been using!

I’ve been thinking about making it available but there is a difficulty with the data provided by the CBOE, they don’t allow robots and each user would have to download the chains they are interested in. I’m not sure if sharing the downloads would constitute a violation of CBOE’s terms of service. To use the data commercially you have to pay

The Captain


You can also end up with liability.

Monthly subscription service running online 24/7.

My option list now has 55 candidates. Last night I picked 37 for the Covered Call Selector to work on eliminating the rest based on price, earnings date, or the chart not looking good. The 37 option chains have a total of 23,166 options to pick from! Not 100 per stock but over 600 per stock!

Excited to test the latest upgrades to the Covered Call Selector and having some cash from assigned calls I spent an hour or so after market close to download the option chains from the CBOE website. The Selector left me with five choices…

This screen lets me make the final choices, I should be trading three of them on Monday.

The Upgrades

Call Option List
Earlier I wrote about the Magic Button that gets stock prices. The easiest way that I have found to populate a stock list is to export a Yahoo portfolio which happens to have the current price. Sometimes one is blind to what is right in front of one’s eyes. Updating the call option candidate list is now much faster.

Covered Call Selector
The main benefit of the Covered Call Selector is that it can compare the options of many stocks against each other which is not an apples to apples comparison. To make the comparison more apples to apples the Selector works on invested capital. For example, if I set the stock price limit to $100 then the Selector works on $10,000 invested per stock, that is why you see different quantities (‘cant’ - Spanish ‘cantidad,’ I sometimes mix languages).

The feature to select in or our of the money was initially set to work only in dollar terms which is useless when comparing stocks with different prices. The latest version works on either dollars or percentages. For ITM use negative numbers.

Using percentages allows for much finer tuning and is a big help in capturing price appreciation. In principle the five choices shown above yield 5.3% in premiums and 9.3% in total yield if the options are assigned in under one month! The furthest expiration is July 21. If I’m not mistaken I used a 3% OTM setting.

The Captain


Thanks a lot Captain. Had a query…

For example, I see that RIVN at 15.5 strike on 7th July expiry has a premium of $88…however, I don’t understand the 3 separate cash columns and what those mean? Also, the 3rd column “cont” - does it refer to the number of calls that you plan to sell?

Thank you,

Great questions and it gives me the opportunity to explain more holistically how the system works. The Selector has four sections differentiated by color

1. The Market
The first section selects the best calls to sell with little regard to the portfolio. Little because the only portfolio related selection parameter is the maximum stock price. If one has $10,000 to trade with then all one can sell is one contract on a $100 stock (100*100 = $10,000). Or two contracts on a $50 stock.

This answers the “cont” question, it means the (approximate) maximum number of contracts one can sell with the money at hand. How does one compare unequal contracts? I figured the best way was to compare the yield of the maximum number of contract one can sell with the money at hand. Since diversification is part of the game the initial quantities will be adjusted to match the money at hand. If you look at the $49,036 number at the bottom of the first section, that’s the money needed to sell all the selected contacts. Since I currently only have around $14K cash to work with it means that the list has to be pared by 70% by lowering the quantity of contacts. That’s the last part of the selection process, see below under ‘Covered Call X-ref.’

I want to emphasize that the numbers shown are approximations, the process is just a guide, not a binding order.

2. Premium
The light blue column shows the premium received in dollars and in dollars per day. These are two of the three main selection parameters. The third is Discount (disc) in the Overview section which is the percent of premium over stock price. Since early on income was my most important issue I relegated the discount to the last section but experience has shown it is a powerful selection parameter.


I’m using the Assigned parameters less and less, the OTM in percentage feature I just added makes it pretty much irrelevant.

These parameters are tightened in small steps until the list is reduced to a manageable number of stocks, five or six?

3. Capital Gains
The darker blue section shows the additional cash (capital gains) and dollars per day gained should the option be assigned. I’m not using these selection parameters any more, I might just get rid of them altogether.

4. Overview
The last section is an overview

  • Days to expiration
  • Discount (premium/stock price)
  • Total cash if assigned
  • Total dollars per day if assigned
  • Total % yield if assigned

Covered Call X-ref

This is where the Covered Call X-ref takes over once the Selector has reduced the choices to a manageable number (24 options for 5 stocks in this case). There is a button that transfers each chosen option from the Selector to the Covered Call X-ref page.

The quantities are editable on the screen and the page is recalculated like a spreadsheet. Currently the edited result is not saved. I might add that feature.

The Selector yielded five stocks that cost $49,000 but I only have $14,000 to work with this weekend. Time to adjust the quantities. Setting SentinelOne, Inc. (S) to zero, reduces the required capital to $39,388.00. I’ve come up with two workable choices:

The outcomes are similar, I probably should go for diversification.

The Captain


I don’t understand this statement.
Selling a covered call contract doesn’t require any cash, in fact, you receive cash. Your risk is that your stock is called away at a less than optimum price but even that gives you more cash, no extra required.
Unless you intend to immediately buy it back if called, the cash is aways coming to you.

I admit that I haven’t read the details of all the posts in this thread, but that statement seemed odd to me.
Won’t be the first time I’m off-base. :grin:

1 Like

That is what happens in the traditional way of selling covered calls. I no longer sell calls on stocks I want to hold. I dedicate a portion of the portfolio, about 2/3 now, to trading covered calls The method is:

  • Find the best calls to sell
  • Buy the underlying shares
  • Sell the calls
  • Hope the calls are assigned, rinse, repeat.
  • If the call expires worthless, unless you find good calls to sell, take your loss.

The last item is the main reason to check out the stocks before you commit to selling covered calls on it.

The Captain


Means you choose to NOT sell covered calls on S?
What is your reasoning, if I may ask?

Means your goal is to buy the shares at today’s price, and sell at a slightly higher price.
Price +premium is your gain.
You do NOT intend to hold the shares longer than the expiration.

Hence this comment:

Do you ever roll the calls?
If the call is going to expire worthless (you will still own the shares after expiration), I think this comment:

says you sell those shares for the current price, run the Selector tool, and initiate the next batch of calls?

Hmmm. “unless you find good calls to sell” suggests you sell more calls on those “good” shares? Which is basically “rolling” them.

In the table provided, I see the expiration date is 2 to 3 weeks. Is this your chosen time period, or do you ever look for shorter (10 to 5 days) or longer (30-50 days) til expiration?

And last question.
Have you looked at Call Credit Spreads?


I have some S covered calls that went ITM, and I wished I’d not done that. So, I rolled them to a later expiration and to a higher strike, for a credit. I anticipate that I’ll roll them a couple more times, but that’ll depend on circumstances. For now, I waiting.

Thanks for the questions!

Simple triage. The Selector picked $45,000 worth of stocks but I only have $15,000 available so 2/3 must go. Lower the share count of the highest yield ones and cut the lowest yield ones. Nothing against SentinelOne, just not the best calls to sell.


I used to but it’s not a winning game. Instead I tweaked the Selector to yield some capital gains. If you can make 3% on the premium and 3% in capital gains in 30 days, what more do you want! No anchoring, no rolling.

The default Days to Expiration selector is set to 35 days. The picks tend to be shorter than that. Time value falls faster as expiration approaches. Also, the shorter period lessen the chance of a negative event or announcement. This is NOT investing, it’s trading or arbitraging the options market. Remember the Casino parentage of the idea. More below.

I don’t even know what they are. The traditional option trading does not appeal to me, thing like the Iron Condor sound like painful wrestling holds. :imp: Back in 1978 I visited Las Vegas for the first and only time to find out what the fuss was all about. A good friend asked me how much I was going to bet. Back then I had visited casinos in the Caribbean and in Europe but only played very small amounts, I never was a gambler but casinos have a certain fascination. I decided to play with $1,000 and lost $800. An important eventuality was that in one of the casinos I found little booklets explaining each game and advising not to play to win but only for amusement. The $800 was a great investment in new found knowledge.

As a kid I listened to a lot of educational presentations in my dad’s hotel and one about selling insurance stuck with me. After I sold my shares in our consulting company I decided to give it a try. The mathematics of insurance and gambling are the same based on the law of large numbers. In casinos the games are rigged in favor of the house, the vigorish. In insurance the actuaries try to break even after expenses and the profit is made by investing the float. That’s what Warren Buffett loves about insurance. THE FLOAT! OPM!

Having studied Warren Buffett extensively I asked myself, “Where can an ordinary Joe get OPM?” Having studied options…

I realized that selling options was the way. I experimented with both selling calls and puts but puts turned out to be riskier so I now only do covered calls. I started out using spreadsheets but soon realized that they are cumbersome and error prone. That led to programming the Covered Call Selector which immediately showed that the more data one has, the more option chains one studies, the better the results get – not that one cannot make stupid mistakes.

When I was selling calls on my growth stocks I had quite a bit of opportunity loss which was the first reason for separating the port into growth (no calls) and income (calls) but in time came to the conclusion that pure trading of options was better than trying to create income by selling calls on stocks bought as investments.

The Captain


Thanks, Captain.
Essentially a buy-write strategy where the spread/risk ratio satisfies your requirements.

I have used that on a few stocks, but they were essentially ones I was ambivalent about. Ok to keep and continue writing or ok to hold at the discounted cost basis for a while based on stock ownership criteria (i…e. valuation).

But now I understand your need for cash available.

Don’t do that much anymore


Thanks Captain. That was very helpful…

Had another question;

The main issue is - most of these stocks are volatile that their price swings can be quite huge ( Even without earnings )

So, if the calls expire worthless but the underlying stock has not fallen from your cost basis…that is perfect, as you can rinse and repeat; or even sell if you wanted to buy something else…However, if the calls expire worthless but the underlying stock falls quite a lot, what do you do then…Do you still sell and take the loss and move to something else? or would you hold them and still sell calls at a lower strike price?

Thanks again


I regularly write puts on stocks that I wouldn’t mind owning at [slightly] lower prices than prevailing. I learned this tactic from Apple … a few years ago, they contracted with a large investment firm to do this for them to effect some of their share buybacks (at slightly lower than prevailing prices).

Sometimes the puts expire worthless and I keep the premium they paid me and for tracking purposes (not tax purposes, obviously) I subtract that from my overall basis in that stock. And if they are exercised, I get to buy some stock at the strike price minus the premium I received. Good deal either way.


rabbit hole
used to refer to a bizarre, confusing, or nonsensical situation or environment, typically one from which it is difficult to extricate oneself.

How’s that for an answer?

Whether you take the loss or not you got the loss. The real question is whether it is better to anchor on a losing trade or to get out and continue with a good strategy. The logical thing to do is to run your Selector and sell the best calls. If the old stock makes the grade, use it, if not, buy something else and it costs you only two commissions to get into a more promising trade.

The Captain


Thank you Captain. There is a reason why you are successful, and it is clear why! Having a clear strategy for entry and exit!! And taking the emotions out of it completely!!

1 Like

Thank you but it took tons of mistakes to learn to try to avoid emotion, some of those mistakes are the most expensive lessons I ever got.

The Captain


How did it turn out?

The suggestions would have produced a discount of 5.4% or 5.8%. News about Rivian being removed from an index made me take it off the list. In the end I sold

5 SNAP Jul 21, 2023, Strike 11.00
3 STNE Jul 14, 2023, Strike 14.00
4 SPWR Jul 14, 2023, Strike 11.00

with a premium yield of 5.5%. The capital gains, if assigned, will still be positive but less than expected. Next trading day, two options expiring this Friday.

The Captain


More updates

June was a very good month for covered calls, maybe because it was the first time that the Covered Call Selector was applied in full strength. Based on the Casino Model, it relies on the Law of Large Numbers, the more data the better the outcomes. Growing the list of candidates was a big help.

With earnings season approaching, with many stocks coming down from their recent highs, and with the best candidates already in use (6), this weekend the Selector had little to work with. This is an interesting evolution or revelation about the Covered Call Strategy. It seems it works best in 8 of the 12 months. All my calls will expire before the end of July. If I take a break from trying to put money to work as soon as it comes in, by the end of July I should have a nice pot to work with. This means I can work with higher priced stocks.

My program for the next few weeks is to take a break from selling covered calls to accumulate cash for a strong post earnings season push.

Bug Tracking

One of the selectors, Dollars per Day, was acting strange. Options with Dollars per Day lower than specified were showing up. They were close but lower nonetheless. Try as I might I could not find a bug in my php code. Sherlock Holmes to the rescue, examine the evidence! Instead of looking at the code I looked at the numbers the code was producing.

The selection code is Structured Query Language (SQL,) a programming language for storing and processing information in a relational database. The ‘WHERE’ clause of the MySQLi query was built by php using the input parameters.

Dollars per Day requires a bit of arithmetic, the inputs are decimal, i.e. floating point, and MySQLi was doing integer arithmetic.

The Case of the Rounding Error solved! Holmes would be proud and Watson would write about it!

The Captain

o o o o o o o o o o o o o o o o o o o o

When a colleague and I were working with the IBM 1401 in 1961 both of us were Agatha Christie fans and we started giving recurring bugs names inspired by Agatha Christie titles. One favorite was, “The Case of the Missing Word Mark.” The 1401 used variable length words to optimize storage which was expensive and in short supply. Words had to be separated by Word Marks. The Missing Word Mark created gibberish! Fixed length 8 bit bytes got rid of the bug. Optimize by wasting abundant resources – a George Gilder favorite.