- Focus on filtering iron condor trading opportunities inside your scanner automations.
- Build multiple decision recipes for checking liquidity, probabilities, and returns before a trade is sent to your broker.
- Show you how to setup custom inputs for all variable position fields so future modifications are updated everywhere at once.
- The bot template is shared in the Community so you can clone the strategy and instantly add it to your portfolio.
Be sure to check out the shared bot template in the Community!
The text is the output of AI-based and/or outsourced transcribing from the audio and/or video recording. Although the transcription is largely accurate, in some cases, it is incomplete or inaccurate due to inaudible passages or transcription errors and should not be treated as an authoritative record. This transcript is provided for educational purposes only. Nothing that you read here constitutes investment advice or should be construed as a recommendation to make any specific investment decision. Any views expressed are solely those of the speaker and should not be relied upon to make decisions.
So again, welcome to today's workshop. You guys are really going to enjoy this one. Like I said earlier, for those of you who's just joining, we had done this a little bit in one of the bot workshops previously, where we really focused a lot of our time on a previous bot workshop going through liquidity and probability filters. Everyone loved it, had a really, really good time going through that. And so I thought, okay, why don't we do a dedicated workshop just on liquidity and probability filters and spend some really good time digging into this. I think you guys are going to enjoy this. We'll use iron condors as kind of the guinea pig here for this particular workshop.
So strategy overview for this goal, or the goals for this workshop. Number one focuses on filtering iron condor trading opportunities inside your scanner automations. So because we're going to be focusing on opportunity-based recipes, opportunity-based recipes sound like exactly what they are. You are having your bot evaluate for you a potential trading opportunity. So your bot is going to be looking at a potential trading opportunity and then making calculations, running analysis on that based on how you want to trade what is important to you. This, of course, means that we're going to be focusing on iron condors, but it's applicable to any strategy that you have that you're running.
Number two, we're going to build multiple decision recipes for checking liquidity probabilities, returns, all before the trade ever gets sent to your broker. This is so key to using opportunity filters in your bots. You want your bots not only to check technicals and all the other stuff that are out there, but you want them to check liquidity filters, open interest, volume, probabilities, whatever is important to you before the order gets sent to your broker. Let them be your guardian to ensure that it's the right trade setup before you try to place that order and try to place that right.
Number three is we're going to show you how we set up and why we use custom inputs for all of our iron condor fields so that any future modifications and changes are updated everywhere at once. I've done this kind of like pre-set these up inside of the template that we're going to be using today inside of the actual workshop. But it's so, so important. I'll show you how we set these custom inputs really quickly and why it's important that you do this when you're doing a lot of opportunity filters like this. Because you can just make one change, and it flows through to everything.
Finally, number four, at the end, I'm going to share the automation into the community. So you can save it to your own library and start using it immediately. So if you're watching this right now or if you're with us live right now, we have a lot of people here live, which is great. If you're watching right now and you're like, oh my Gosh, this looks like a lot. Well, guess what? Automations are also shareable, and so I'll share it at the end of this workshop today. That way, you can create a copy of it, you can save it, you can modify it. You do whatever you want with it. It's going to be completely yours. Okay?
So here's what we're going to do. So inside of our library, which is on the left-hand side, right? Inside of our library, there's a tab for your automations. If you're using this already or if you're not using this already, you need to, right? So this is where you can keep everything organized. I do some really simple stuff, like I have some automations that are buttons. So I put them into a folder called buttons. Or if I have a community example, like the one we're going through right now, then I can put it into a folder called community example, or in production, things that I'm working on that I'm not quite finished with but I don't want to use yet. Or you can have folders for different types like monitors, automations, whatever. However you want to do it, you do it.
But in this case, what this allows us to do, and this is what's so cool about it, this is what's different than, maybe, you've done before is this allows us inside of this particular library is to just modify an automation without it having to be in a bot. I'll show you why this is cool cause we can test it across different bots as we go, but in today's example, I just want to take this one template that I've kind of pre-built out here, and I want to use this as the basis how we go through today's workshop, okay?
So this one is called our iron condor scanner with mega filters. Now I call it mega filters because we're just going to put a lot of filters in here. You can add, edit, remove, do whatever you want with your copy once you get it. But I want to give you just a crazy amount of examples that you can use for today's workshop, okay? And I made the text as large as possible so you guys can see this as well.
So here's how this particular scanner automation works. So the scanner automation, just so you can see, is kind of like the basis before we get into the filters. It really uses that high IV rank iron condor template that's already in the community. I think we went through this in one of the workshops. We've done videos on this. Just a very simple template that loops through some ticker symbols that we have, and then it checks to see if the bot can open a position.
So these are pretty standard vanilla decisions that you can add to your scanner automations, like can the bot open a new position? Does the bot have room available to open a new position? Does the bot have any positions that are already iron condors with this symbol currently? So these are, again, just very simple decisions. You can check and see that the bot has exactly 0 positions with an iron condor and with the symbol type, right?
So you're just filtering out, making sure that you don't overlap iron condors that you're trading. In this case, maybe you're trading a basket of, say, ten ticker symbols or something like that. You only want to trade one iron condor at a time, okay?
Further down, now we start to get into other decisions like does the bot have enough capital available to open another iron condor position? So now we're starting to ask deeper and deeper questions. Like we asked earlier, does the bot have room? Yes. Does the bot already have an existing iron condor in this ticker? Yes. Okay, now, does the bot have the capital to open an iron condor position? Okay?
So does this make sense to begin with? And then, right now, it just goes and opens an iron condor position. That's it. I haven't added any filters yet. I'm just starting from the absolute baseline like we've done all the prechecks, right? We've added everything in here, and now the bot has the ability to open a position, and now we want to start filtering things from here.
So here's what we're going to do this time, right? With this iron condor position, okay? With this iron condor position, you'll notice that I've already created for all of the iron condor position inputs. I've created custom inputs for every field. Now the reason that this is important is because as we start building out our filters, we want to make sure that when we make a change to the way that we trade an iron condor for this scanner, that change flows through to all of the fields that the bot has, okay?
So, for example, if I were not to connect these to any custom inputs and I were to make changes, right, to them. I could obviously go in here, and for this open position action, I can make any changes that I want. I could change the days until expiration to be something like at least 40 days to expiration, okay? So I can change those really quickly and really easily. That's really great. But the problem is is that when I make a change here, I've got to also, if I don't use custom inputs, go back into every place that references that potential iron condor position. And I've got to make that change everywhere else as well.
If you don't use custom inputs, and you can choose not to. If you know exactly how you want to trade, you know it's never going to change by all means, like put it in there, make sure that you do that. But if you don't use custom inputs, then that means you have to go in and reconfirm exactly how you want the automation to filter and check all of the different fields and variables. So you have to reconfirm that everywhere you go, and that's just become a pain. But it gives you a lot of flexibility and power to do it if you want to. If you know exactly how you want to trade, fine, do it. Okay?
So what you can do is you can create a custom input for every single field. And the way that I like to build out my automations first is I start, and you guys have seen me doing this before, where I start with the actual open position action. I like literally start with the end in mind, down my decision path. So I add all my very simple decisions, but before I start adding all of these opportunity filters, I start with the end in mind, like what is the ultimate iron condor position or objective that I want the bot to get through if it passes all of the filters.
And this is why is tart with that open position action because then I can reuse all of those inputs over and over and over again. Makes It super easy. Okay? So, in this case, with our open position actions, instead of having these as the actual values here that we, you know, type in or select. I'm going to add custom inputs which I've already done just for simplicity and for speed today, okay? You just add a custom input for that field, like iron condor expiration. You add a custom input like the short call leg or another custom input like the long call leg.
Again, I've already added these. There are videos on how you can do it. Super easy to do, but then when you connect this to all of the different fields that you have four iron condors, even your amount. What it allows you to do is it allows you to speed up the process of adding filters and opportunities and screens. And it also allows you to stress test all of this stuff very, very quickly inside your automation, which we're going to do today in the workshop. Okay?
So when you go in there, go ahead and add all of your custom inputs for all the different fields that you want, and then go ahead and save. Okay? Makes it 100% easier. You guys ready to go? Let's start adding some filters. Okay?
So this point now, the automation is just checking some very basic level stuff and then what we wanted to do is we wanted to now start checking a lot more opportunity-based recipes, okay? We want to check a lot more opportunity-based recipe. So what we're going to do is we're going to take our iron condor open position action. You're going to click on the little gear icon here, and then you're going to go down to precede with. You see that right here?
So to add opportunity filters, you're going to go down to—you're going to click on the gear icon of your open position action, which is right here. Then you're going to go down to precede with. That means you're going to add decisions before the bot gets to the open position action, okay? So we're going to add a decision here or set of decisions that are going to filter through a lot of different variables that we want for this iron condor.
So we're going to add our first decision, and then we're going to scroll down to the section in our decision recipes that is labeled opportunities. Now again, opportunities sound exactly like what they are. Opportunities are opportunity-based recipes that allow the bot to pull information in about a potential trading opportunity and then run analysis on it, okay? So, the first one that we're going to do and my most favorite one to do is always the bid/ask spread.
This is like such low-hanging fruit. It's unbelievable. And we still see, right? Like all team members in here notice, like we still see this all the time. Use a bid/ask spread filter. Filter out those crazy crazy spreads automatically and focus only on the tightest possible spreads that work for you. We see it all the time with people are sending in questions, or have issues, or you know, are doing paper trading, and they're like, I don't know what's going on. Like it had this crazy feeling, and I'm like, well, you're not filtering for bid/ask spread, right?
So we can use this recipe here to filter for bid/ask spread less than some minimum amount that we want to set, okay? Now when you go into your opportunity filter, it's going to ask you to select an opportunity. What you want to do is you want to think about this as you have to tell the bot what data to pull, right? So think about it. If you told me, like Kirk, filter iron condors for the best bid/ask spread. My next question to you would be like, well, what kind of iron condor are you looking to trade? Do you want to go 30 days out, 60 days out? Tell me the deltas like there's an open ocean of potential trading opportunities. You have to tell the bot what opportunity you want to look at specifically.
So because we've built out our open position action first, when we select our opportunity notice in the recent category right here up at the top, one of the recent selections is whatever iron condor we've actually told it to look at. And because we're using custom inputs, we can reuse this field over and over, and over, and over again.
Or you can build out your own custom opportunity if you want to look at something completely new or different. You can do that here too. But the bots are smart enough to recognize. Hey, do you mean you want to look at this recent potential opportunity that you might enter? And you say, yes, I want to look at this opportunity with all these custom inputs that I set, and then go ahead and hit save.
Next thing that we're going to do is we're going to check and see if the bid/ask spread is less than, more than, or exactly some value. Now more than doesn't really work, but we gave it to you guys as an option anyway. Just so if you want to use it, you can use it. No harm, no fall, okay? Exactly is really tough. That's super, super tough for this particular recipe, but again, we gave you that choice. If you're looking for exactly a five cents spread, fine, you can do it.
I always use less than some amount. Now, you can, again, type in an amount like, say, 20 cents if you want to. Or you can type in, say, five cents. And it will always, always, always, always use five cents. Now, if you want to make an adjustment or make a change to this, you should come back in here and change the five cents to something like seven cents. But it will look at whatever iron condor opportunity is and make sure that the bid/ask spread is less than seven cents or whatever you put in here.
What I like to do on my automations, and you'll see this in the template when you can download it at the end here, is I like to go in and I like to create a custom input for this field. Now I've already pre-created a custom input called bid/ask spread threshold, which is just a custom input for this field so that I can stress test different bid/ask spreads as I'm testing out my logic and my automations so that I know that it's working or I can modify it on the fly. And again, I'm going to use a lot of custom inputs here because it makes it so, so much easier as we go.
So now that I've had added that custom input, all I'm going to do is hit save. And now this decision block has been added. It's got one decision that I'm going to be filtering for, which is the bid/ask spread is less than my threshold, okay? Now for right now, what I'm going to do is I'm going to go ahead and just hit save. And then it's going to ask me what path you wanted to go on. You say the yes path because if the bid/ask spread is less than our target. We do want it to go down the yes path and open the position. So we say the yes path, okay?
Now here's where that decision block is added. Now notice all of the raw text gets added here, so you can just go ahead and modify this, and you can call this something like, did my iron condor has all my filters? You can modify the text so it's a little bit easier, and then you can make it a little bit cleaner for your automation. Okay?
Now it's only got one simple, very basic filter that we've added. The only thing we're checking right now we'll add a lot more is, does the iron condor have bid/ask spread less than my threshold? That's it. That's the only thing we're checking. The cool thing about this is now what we can do is we can run a test right here inside of the automation and test the logic as we're building this out.
So let's do it really quickly here and make sure that it works, and it's passing that liquidity filter or, alternatively, for some, not passing that liquidity filter. We're going to go up to the top right to the button that says run test, and we're going to click on that. Now because this automation is not already in a bot, we have to select what bot we want to run the test on. What's cool about doing it this way, if you want to, is that you can stress test your automation across different bot settings. Like our high IV rank iron condors bot has different bot settings. Maybe our genesis one bot has different bot settings, our iron condor with no ticker overlap that might have different bot settings. So you can stress test it across a bunch of different bots.
What I do is I create a little like demo bot, which is just blank, that gives me the ability to do some testing, okay? So here, inside of my test, I have all of my input defaults. I've got all my ticker symbols, I've got my iron condor settings, right? 30 days, 30 delta, whatever you want to do. Position size, one contract. And now I have my bid/ask spread threshold. That's the one that it's looking at right now, right? The bid/ask spread threshold is 20 cents.
So I want to make sure that whatever I do, it passes that bid/ask spread threshold, or it gets stopped if the spread is too wide. All right, so here we go. We're going to start the test, okay? And the test look like this. You can see it right inside of your log. It's looping through these tickers, and notice the ticker changed right here as it loops through the different tickers that we have, okay? And you can see as it's looping through here that it goes down to this decision for different tickers like, for example, we'll start the first one, SPY. It passed everything in this demo bot, and then it failed at did my iron condor pass liquidity test.
So why did it fail? Well, you can see here that the bid/ask spread is currently for this iron condor on SPY set up the way that we wanted it to, is currently 31 cents. So this would have, and again, that's just a test. It's not actually running but had you run this in a live bot right now, it would've failed because the bid/ask spread is 31 cents. And that's great. That is, listen, folks, that is exactly what you want. You want the bot to filter out the garbage and junk that you don't want to trade. Because if the bid/ask spread is 31 cents, and you're trying to force a trade into potentially a spread that's wider than you're comfortable with, right?
Now, this is only one filter. Let's go up to some other ones. So did GLD pass? Okay, here's GLD. We're looking at GLD. We just toggled over to the next one. Down here, you can see that it did pass the liquidity filter for the bid/ask spread. The bid/ask spread at the time that we ran this test was 18 cents. That's lower than the 20 cents we told it to test on. That's, again, great because if we were running this bot for real, some trades don't get entered, and some do. Only the best passed the liquidity filter through to the open position action, and you can see it's simulating down here that It would have opened a new iron condor position.
Now, again, this is just a test. It didn't actually open an iron condor position, but you can see how this works for our different strategies that we're trading like EFA didn't pass the liquidity test. Look at this, EFA, right now. And it could be different in an hour, two hours; it could be different tomorrow if the expirations are different and it slides out to different expirations or the strike change. But right now, this is a very liquid security anyway. Okay?
But look at that, the spread is $1.96 cents, 196 dollars wide. That's insane. You should never enter a position when the spread is that wide. Never, never, never. So let the bot filter that out. Don't even let an order go over to the broker. Now we can modify the test any way that we want. We can come in here, and we can say, you know what, I'm comfortable doing a 30 cents bid/ask spread, so why don't we test that?
You can go back and forth through this, and you can see what would go through at 30 cents. So, what would go through a 10 or 20 cents? You can go back and forth in here and stress test all of this logic as much as you want. Okay?
All right, so at this point, we've added one filter, just one filter. You guys want to add some more filters, yes? Let's go crazy with this. And I'm going to go mega, mega, mega, crazy, just so you have lots of ideas. You guys go in here afterwards, and you go ahead and remove any of that you want, add any of that you want. I just want to give you a ton of examples.
Here's what we're going to do. We're going to group all, all, all, all of our decision opportunity filters in this one single block. You can spread this out, by the way, if you want to. We're going to group them all together. That way, they're just all in one place. Did my iron condor pass all of my filters? Whatever filters they are for you.
So I'm going to go down to our opportunity filters again. And the next one I'm going to add is rate of return, okay? I'm going to add a rate of return filter. Again, I'm going to select my opportunity, which is that iron condor that I've already set up with all of my custom inputs. And then I'm going to go to the rate of return.
Again, you can type in an actual rate of return, like 30%. This means that it will always check 30% no matter what. If you ever want to edit it, you gotta come back in here and edit it. That might work for you. If you don't want to use a number that you type in here, you can add it as a custom input. We had one that we added called rate of return threshold, okay? So I've already added that. I'll show you how to add some more as we go, but we've already added a custom input called rate of return threshold.
And then I'm going to go ahead and save this. Now when you add multiple decisions here, notice what happens. When you add multiple decisions, you get another selector here called and or or. Which means that you can have the bots do some pretty cool logic like making sure that it passes both of these tests, these filters, right? And that's where you would use that and statement.
So it would only go down the yes path. Go to the open position action. Only, bot, let my position open if the bid/ask spread is less than my threshold and the rate of return is greater than my minimum rate of return. So for an iron condor, the rate of return is going to be calculated based on the premium that's available divided by the risk in the position. And yes, it does factor in all of the premium and breakeven and width to the strikes, and all of that stuff automatically does that. Right, it's going to be factoring that in, so you know what is your maximum rate of return on this potential strategy. Pretty cool, right?
If I only wanted to do one or the other, I just simply switch this back to or. So I do the bid/ask spread has to be low enough, or my rate of return has to be high enough. This could work for a lot of different use cases, but for today, if you guys are comfortable with this, we're just going to use the and statement for everything. We want to ensure that every single filter gets checked. Every single one passes, and if any one of them fails, then they all fail basically. Like everything has to check out before the trade gets entered. Okay?
Next one that I'm going to add is I'm going to go down and add another one. So I told you, we're going to go crazy with this, okay? The next one that I want to add is one of these down here. The opportunity chance of profit. So this is a really cool one, and I like to combine some of these together so that you can have a recipe that checks for the rate of return like you're collecting enough premium, right, relative to the risk. That's a really good one. The one that we just added. And I want to check and see if the probability of profit is above some level.
Like that's a really cool way to get it some sort of expected value for these iron condors. So here what we're going to do is we're going to check the opportunity, same iron condor position. Check this opportunity, and we're going to go to the chance of profit, so the likelihood that I make $1, and it factors in the breakeven points, etc., right? That is the chance of profit that it's looking at.
The chance of profit by the expiration date does this automatically for you guys. Like, how cool is that? You don't have to factor that in. I know I used to have videos on like how to calculate the chance of profit and how to calculate breakeven. You don't have to do that anymore. Just let the bot do it. Just put it in here. The chance of profit is more than some amount that we set. Okay? In this case, we, again, have one custom input for the probability of profit threshold that we set. And we can modify this as we go.
So now that I'm adding more, and more, and more of these decisions into the bots, the bots are now checking more and more and more things. So we've got three of these filters in here now. So let's stop here for a second. Let's save all of these to my custom input or to my decision block. Remember, they're all saved in here. All of these have to pass, and let's go ahead and run another test, okay? Let's go ahead and run another test.
We're going to go to our demo bot. Now we're going to go down here, and you can see we've got our bid/ask spread threshold. Let's change this to 20 cents. Let's do our probability of profit has to be at least 50%, okay? Just to see some things work, right? You can modify this. I just want to see some things go, yes, no, down the different paths. Okay? And then our rate of return threshold has to be above 30%. So this is, again, just a test. We can modify it. We can stress test this with different logic. I'm going to go ahead and start this test.
I'm going to look at SPY. This is the first one, okay. Did it pass all of my filters? No. well, where did it fail? Well, it failed at the very first decision. Now, this is a great thing about using the and statement for your decisions. The bot doesn't need to check everything. It just checks the first thing that you put in order. So if you say all of these have to be true, but bid/ask spread is too high, it doesn't need to check anything else, right? It doesn't need to check anything else. The bid/ask spread is just way too high for SPY. So it just moves on, okay?
Let's go to GLD. So check this out for GLD. For GLD, it passed the bid/ask spread threshold. We knew that from before, right? The bid/ask spread is still about 18 cents. However, look at this, the rate of return is just barely under our limit, our hurdle that we set. Right? So we set the rate of return has to be greater. And I think in our case, we said 30, right? And it's just barely under that. It's 29.61. So, it didn't pass that filter. Okay?
Now let's go to the next one. Let's see if anything actually passes in this case. We go to EFA. Oh yeah, we know EFA was way, way, way too long, okay? Did XLF pass? No. QQQ? Let's see what happens with the Qs. Oh, too wide of a spread. That's okay. XRT, wow, insanely widespread. Go to some of these other ones. TLT, did that pass? No, too wide of a spread right now. This is good stuff. That's what you want. You want none of these things to pass if the spreads too wide, okay? And spread's too wide here too.
Let's go back here, and let's test some different logic here. Let's test the rate of return is 20% and see what GLD does. So I'll go back in here, GLD, again; we tested in 20% just to see how it starts to flow through all of these decisions. So now those spread is 18 cents because we're just testing it live as we go. So the spread still passed. The rate of return we set was 20%. Now the pricing changed on it. The rate of return actually over 30%. So that's fine. And you can see how quickly these things can change as it's running, and we said that we wanted the probability of profit at least over 50%. And the chance of profit on this trade is 78%.
Now look, I don't know about you all, but this right here, if you did nothing else, is a great set of criteria to use that would mostly cover the big bases for liquidity and probability filters. You're filtering for bid/ask spread, which is ensuring that the spread is tight enough. You're filtering for a decent return like you're actually collecting enough money to make it worth it, right? And you're filtering for a high probability of success. I mean, you really kind of hit a lot of nails on the head by just using these three, which is why I use them first inside of this workshop. And you saw even in our testing right now that obviously pricing and market changed. So maybe in the morning one day, pricing is better, and the bot enters a trade. Next time around, pricing is better in the afternoon, bot enters a trade, right?
Now the way that you do it manually if you do it manually, and none of you do because you're all using bots anyway, right? And you're all here using bots. Right now, if you do it manually, you're hoping you get into that right time. We're going to add a ton more filters.
So we've added probability of profit. We've added rate of return. We've added bid/ask spread. You can also add IV. Yep, that's the one that you can add. There's a decision recipe that you can add for that as well if you want to do IV. Let's do IV. I know a lot of people have asked IV, okay? So you can add it here. It doesn't have to be an opportunity filter, but you can add it right here as the symbol's IV rank is above or below some threshold if you wanted to.
So you don't have to it as an opportunity cause it's not looking at an iron condor. It's looking at the actual symbol. So you could do that here. So we could connect this to whatever symbol it's looping through. The IV rank is above some threshold. Now we don't have a custom input for IV rank yet, but we're going to. Let's add it, right?
So we can say IV rank minimum, and we're going to put the default value as something small like, I don't know. You can do if you want to, 50. You can do 30. It doesn't really matter, okay? So we'll do the default value of 50 if you wanted to, and you can put some custom text here. This is why I did for all of the custom inputs, by the way. And those they don't have to be opportunity recipes. You can add a ton of stuff in here.
So let's add another one that is an opportunity recipe. Lets' go down and add this one. Let's add this one again, which is the chance of profit recipe, but let's now check something else. So we're going to connect it to that same iron condor that we're using. And this time, we're going to check for the chance of max loss. Now, this is pretty cool, and this is very helpful for doing iron butterflies, iron condors, things like that. It's literally going to calculate the probability of a maximum loss scenario, right? A maximum loss scenario inside of this strategy.
So whatever that is for whatever strategy you're looking at, not the chance of making money which is the chance of profit, which calculates the breaks even. Like where can you lose and what's the probability that you lose, the maximum amount on the trade assuming you did nothing, didn't close it early, didn't roll,- adjust, whatever. Right?
So, in this case, we can do we want the maximum loss less than some amount, okay? The chance of maximum loss less than some amount. So let's create another custom input for max loss threshold. Max loss prob threshold, and let's say something like, I don't know, we can do something like 10%, whatever you want. The percentage probability of max loss must below this value to enter a new trade. Okay? Whatever you guys want to do for your description, you can do it in here. And again, max loss probability threshold gotta be below that, okay? So we've added some more filters.
Let's go here and test and just see how this kind of works, okay? So let's select our bot that we’re running here, and we're going to do our bid/ask spread threshold as 20 cents. Probability of profit, let's knock this up to about 70%. Rate of return, let's put it back to 30%. Minimum IV rank, I don't know, we can do something like 40. Max loss probability gotta be less than 10%. So let's start the test.
This is fun, by the way; like, come on. This is gotta be the most fun thing that you do. Like what you do now cannot be more fun than this. Okay, so let's look at GLD. Ah, and GLD failed right now. That's cause the spread is a little bit too wide. Alright, let's go here and modify this just to get this through here and see if we can get some good stuff in GLD.
And again, this is really cool cause you can just keep going back and forth in modifying this all the time. Okay? So here's GLD. Again, I just ran a test. I went over to GLD. You can toggle through the different stocks that you're looping through in your symbol loop. I went to GLD, and that it says it passed all filters. I bumped up the spread filter, so it would pass, but check this out for GLD. The rate of return is 31% right now. The probability of success is 78%. The minimum IV rank is 40, and the chance of max loss is 3%.
Look, I don't know about you guys, but that is a good-looking strategy. Right? Like that could potentially be a good-looking trade, and I didn't have to check any of these things. That quick. All the time. Every day. Every single time the bots can check this for you. You can filter for whatever ends up being the best trading opportunity for you at that time. And you can filter and reorganize these in different orders if you wanted to.
All right, so let's do some more, okay? Let's do some more. Yep, we're going to do some volume and open interest filters. We're not done yet. We're just continuing to do it little by little, bit by bit. So, I mean, there are a lot of filters. This is good. Every time the bots can check this.
All right, let's go down and let's do some more filters. So we're going to do more opportunity section again. This time we're going to use this recipe. Now this recipe helps is so flexible and so powerful, okay? So flexible and so powerful. So this is an individual leg of an opportunity. Let me say this again. This recipe looks at individual leg properties of a potential opportunity.
So here we're going to select the opportunity, which is our iron condor. Then we're going to specify that we want to look at, for example, the short call leg. Notice I can look at the short put leg, the long put leg, I can tell it exactly what leg I want it to look at. But for starters, I want the bot to pull in the data for that iron condor that I'm about to enter and then partition the data, look at just the short call legs information. And when you do that, then you can select what property you want to look at, and all of these properties are available for you.
You can look at the chance of being in the money of that particular leg. The ask price, the bid price, the bid/ask spread. The bid/ask spread would be that particularly leg's bid/ask spread. The change in price, the change in percentage of that spread, the closing price, the delta, the extrinsic value of that leg. The gamma, the high price, the intrinsic value, low price mark, open interest, open price, out of the money amount like how many dollars out of the money is in that leg or not. The theta, the vega, the volume, etc.
You got a lot here that you can do. You check some crazy stuff, or you want to start checking the crazy stuff, do it. Do it right here inside of your potential trade. This is where you can do it. You can do it in here, and you can micro-check everything that's useful for this particular iron condor.
So for the short call leg, we're going to start with an open interest filter. We want to make sure that the open interest on that short call leg because we don't want to be swimming in the pool of no people, right? Now, this is why I say, just for the record, with your bid/ask spread filter that we had before. If the bid/ask spreads are tight, it probably means there's good liquidity, right? I mean, it likely means that there's good liquidity.
But if you want to also check that ensures that open interest is above a certain amount, you could do that here too. And we're going to do that. We're going to do short call leg open interest is greater than some value which would be the number of contracts. So you could say 500 and always use 500. Here we're going to use another custom input, and we're just going to call this one short leg open interest.
We're going to reuse this input for both short legs, by the way. And we're going to say open interest has to be 500 contracts. The minimum open interest on either the short call or short put leg. Because we're going to reuse it for both, by the way, this is what's cool about using custom inputs. You can reuse it in both two different places if you want to.
So here we're checking to see that the short call leg open interest is greater than our custom input which is 500 set to the default, okay? Making sure that it's that. We can also add another one. Add that same recipe all over again, okay? Add that exact same recipe. This time what we're going to do is we're going to check the short put leg, so we're going to say short put leg open interest is greater than, again, that same short leg open interest value that we use.
So this means that both the short put leg and the short call leg each have to be open interest greater than 500, okay? We're going to check both legs, and that's great. Both legs have to be enough in order to make the trade, okay? So let's go and save and let's run another test. So we're going to test this in our demo bot. Now down here, we've got another custom input because we added one, right? Short leg open interest 500. Start our test.
Now we know that SPY probably fails at the bid/ask spread, but let's check GLD. GLD, ah, look at this. It failed somewhere along the line. It didn't fail the bid/ask spread, didn't fail the return, didn't fail the probability of profit, didn't fail at IV rank, didn't fail at max loss, but check this out. The open interest on the short call leg right now is just 33, just 33.
Now you still might be like, okay, I don't mind. If the pricing is good and the spreads are tight, I'll do it. But if you're the type of trader that wants to ensure that you have enough open interest before getting into a position, boom, done. This fails now, right?
Now, the good news is that if the next run of the automation there's a lot of open interest or tomorrow there's more open interest, or whatever and that now starts to bump up, guess what? Boom, trade gets through right away. But in this case, it failed because the open interest on the legs were not high enough, okay? And it didn't even have to check the other leg because it failed on this one.
So you could do some open interest filters. You could also do a minimum volume filter as well. So let's add another filter for minimum volume, okay? Let's go here, and we're going to add another opportunity recipe. The same one that we've been using. This one is really flexible. There are a lot of different values in here. We're going to check now the short call leg, not open interest, but volume.
So the volume is how many contracts are traded today. This is good because, in this case, you can ensure that there's enough liquidity flowing in before you start trading. Like I don't want to be the person that's at the front of the line necessarily before entering a trade. So if you use a volume filter, that's today's volume, it's gotta be over that amount today for that particular leg in order to pass this filter.
That's a really cool one that you can; again, it kind of works in conjunction with the other ones where once there's enough volume, the bid/ask spread is probably tight enough, right? They all kind of work together. But you can add this here if you want to. Okay?
I'm going to say minimum leg volume. Short leg volume, okay? We'll do 100 contracts. Minimum volume traded today on the short strikes of an iron condor. Okay? So that's our new custom input. We could do it for both of them. So we don't have to do it on the short call leg only. Keep going if you want to. Add another opportunity filter. You're going to do this one, not on the short leg or short call leg. You're going to do this one on the short put leg. You're going to change all this to volume. We're going to reuse that same custom input that we have; the minimum short leg volume. We can just reuse that same value, so we change it once, and then it flows through to everything. And now we've got even more filters.
Now, this is starting to get- there's a lot, right? Starting to get a lot of filters in here that we're starting to put together, and that's good. That's great. We want to do stuff like this. And then we can modify the inputs to kind of, you know, fit and see how things work. Let it run for a couple of days. See what works. See if anything changes. Then you can modify and tweak as you go. Okay?
So once we hit save, again, we can just run this test and see where this is at. Let's see if anything filters here. We'll put the minimum short leg open interest. We'll do just 100. We'll see if anything passes here today. Okay? So let's see. SPY, I think that failed. GLD, I think it still fails at the 33, yep. So GLD fails there. EFA, let's see where EFA fails. Ah, still too wide of a spread. That's okay, right? That's what we want.
Oh, here's a good one, right? This one is a good one too that you can have in here. So this is, who is this? This is XLF, right? XLF right now, one that we just got in our symbol loop. It's got tight spreads, the return is great, the probability of profit on this is just underneath of our threshold. Right? You might be like, okay, well, maybe I inch down my probability of profit to 65% vs. 70. But, again, the key is that if the probability of profit goes up because volatility changes or the rate of return, or the premium changes on it, and now it makes more sense, then it will go through, right? But now it's failing at that one, which is good. It's blocking it from entering a trade that doesn't meet your criteria.
Q's, oh, close. Here's a good- here's an interesting one. Just take a look at this for one second. The XLF position that we just looked at had roughly a 30% probability of success. Let's go back here so we can look at this. This is why I think this is so cool. So the XLF position had a 36% rate of return. That's what you're going to make on the position, right? For a contract like one spread. A 36% rate of return and the probability of profit was 68%.
Check out this QQQ one. The Q’s right now, and again, if you're going to be as systematic like we can't predict the market, we've no idea where they are going, right? But we'd be a systematic trader. The QQQ position, you're going to make 34%, and if you didn't have a filter on for probabilities, this thing has a probability of profit, the chance of profit of 56%. I don't know about you guys, but like if you had to choose, like which one are you going to choose? You're going to choose XLF. For sure, you're going to choose XLF because the rate of return is about the same, but the probability of profit is significantly higher.
Now the Qs might be a little bit more liquid and stuff like that, you know, a little bit other consideration, but again, this helps filter out those really easy ones that you can filter out. Let's go here and see if there's any other ones. So XRT, uh, super wide spread. Stay away from XRT today. It won't always be tough, right? Some days it might be some, and some days it might be others.
EEM, oh, super wide spread. XLE, somebody said XLE was crashing. I don't know. Super wide spread, right? That's good. Let it filter it out. Let it get to maybe one trade. That's the whole point of doing the loops with all these symbols. If you didn't catch the last bot workshop, we showed you how to build bot with 100 tickers using reusable bot level inputs. So you can do that too, but let the bots filter these out. We've got a lot of filters in here.
I'm not sure; you could add more if you wanted to. You could do a ton of stuff in here. I like to put, by the way, for me personally. I like to put all of my opportunity-based filters in one decision block. I just like to split them out that way so that I know where fails, and if I want to modify something that happens after the technical block, then I can do that there. So I always put all of my opportunity filters right before my open position action. You can see on all the templates I have.
Put all of your opportunity filters preceded right before the open position action because this is where you want to do those last final checks before the order gets submitted. And only the good stuff gets submitted and gets passed and goes down the yes path to open a position. Well, you can take the best out of what it finds if you set your thresholds high enough, like whatever you deem to be the best. If you have your threshold set at, say, like in this case, you have 30% return, 70% probability of profit. To me, I would want to take any trade that meets those thresholds, right? Assuming I have capitals. First one in, do it. Yeah, first one in, do it.
I've seen people do this all. Maybe I'll build out a template at some point and show you guys how to do this and then an automation, but you can do like a progressive waterfall approach where you can test the opportunity probability profit is over 70%. Yes, then do another test that says, like, another decision that's like is it over 80? Is it over 90? And do like a waterfall-based approach where only the best of the best of the best of the best gets further down the path.
It'll be a lot of building, but I mean, once you do it, it's done, and it's done forever. I've seen some people do that before with IV rank where they do like a progressive entry on IV rank. They say, like, is IV rank go over 50? Yes. Is it over 70? No. so it's over 50 but not over 70. Okay, do this. Is it over 70? Yes. Is it over 80? Yes. Okay, it's over 80, then do this. If it's over 70, but not over 80, do this.
There are a lot of filters that we added here. I think we've really checked the boxes on the main main main ones. There's other ones that you can do, but these really, I mean, open interest, volume, probabilities, pretty, pretty cool. Let me go ahead and share this automation into the community, so you guys have this.
Okay, so look, here's what I did. I save this automation to my library. I showed you guys this earlier. It's saved in a folder. I just call it a community example, but it's got all of the different inputs set up if you ever want to go in, and you can modify any of these custom inputs. You could just do it right here, okay? So you do all of your settings here with your default values. That's what you use as you go through here, and then you change or modify any of these defaults inside of your template right here inside of your library, okay?
Once you have all of these good to go and you're ready to go, just simply save it in your library, and you can go over to the community, and you can share this. You can openly share this in the community, so I'll go here and create a new post. And we'll start a discussion. I'll share. What I'm going to do is I'm going to say automation workshop, and I'm going to tell you guys that this is the iron condor scanner with mega filters. Okay, so here we go. Enjoy!
What I'm going to do, and this is what's so cool. Share your individual automations like however you use your automations, share your individual automations. All I did is I go down here, and I go down to the link here that says I want to attach, not a template, I want to attach an automation. What's cool is that you can attach individual automation.
This is a little bit different. I'm sharing this automation, right? I'm just going to share it so you guys have a copy of it, and then when I post it, and it's in there right now, so you can go in there. So if I go in here and refresh, you guys can go in here. You can view the automation. Just take a little sneak peek at it. Just see what it is. And then, if you want, you hover over this icon right here, and you save it immediately to your library. Right away.
So now that automation that we built out and we customized the daylights out of, that automation is built and done, and you can save it to your library right now. Okay? So go do that. I mean, you might as well, and then you can modify it, edit it, create other copies of it if you want to, but then it's completely yours. You have access to it moving forward.
Thank you, guys, so much for joining in here and girls that are in here. We'll talk to you guys on the next one. Have a great rest of your week, and until next time, happy trading.