ES 1%+ up today (no action): our FOP layer: ES FOP 20220617 2650 P GLOBEX 50 E-mini S&P 500 [ESM2 P2650, 497966096, mult: 50]
Not much happening today. Just some decay. ES: our FOP: ES FOP 20220617 2650 P GLOBEX 50 E-mini S&P 500 [ESM2 P2650, 497966096, mult: 50] [If next week continues to be so "boring", in case I will rise a bit the "risk" (by introducing closer maturity or higher delta options) to get some more action and make the demo a bit more entertaining ]
Situation today: ES FUT 20220617 GLOBEX 50 E-mini S&P 500 [ESM2, 477836957, mult: 50] Delta 0 0.0297. Very little impact on "our" option. Of course, being practically "unreachable", we welcome drawdown, in order to be able to scalp a bit with buy orders and load up with further sells. ES FOP 20220617 2650 P GLOBEX 50 E-mini S&P 500 [ESM2 P2650, 497966096, mult: 50]
Since we started, almost 23 days ago, the market (ES) has moved within a total range of about 7.90% . We have taken a max position of 99 short options (deep OTM) while currently, the global position is 74. The bot has been making some buy orders in order to scalp long. Our current DD is about 5.5K overall (laughable), including closing commissions and spread. So far the approach has been maintaining its promises. The only thing is that it's boring. I would like the mkt to go further down in order for the bot to load up some more positions and close a few buys. Will see to do some action (shortening maturity) in order to make it more fun and see quicker profits.
Example of a rollover ("information transfer") to closer maturity and strike The approach we are exploring here, among many pro's, has also the advantage of a convenient "modulation" of risk. In fact, by choosing the delta that we like we can decide and change at our liking how much impact the market "corrections" have on our equity curve. The bot allows moving easily across all types of options, with all sorts of strikes and maturity. As an example let, see now how to move from: ES FOP 20220617 1600 P GLOBEX 50 to ES FOP 20220429 2400 P GLOBEX 50 In this case, the "source" option is expiring in about 115 days and the "target" option is expiring in about 66 days. The delta is going from Δ=-0.0054 to Δ=-0.0116. So, approximately doubling the impact of underlying moves. I did this "rollover" yesterday evening. The source option (ES FOP 20220617 1600 P GLOBEX 50 ) had this situation: and we are moving to this new (clean) option (ES FOP 20220429 2400 P GLOBEX 50): We do the rollover, which I call "information transfer" because, in fact, I transfer all the trading information (including the buy orders waiting to close) on a new layer. It is in fact important to "keep in memory" those buy orders waiting to close in profit (long scalps) because, if "stranded", they contribute negatively to the overall profit. So, after we choose the "target" option we can proceed with the rollover procedure: and the current situation, this morning is as follows: If you observe, you will see, on the extreme right of the picture, a dotted blue vertical line that denotes the exact instant of the rollover, and what you are looking at is actually the "concatenation" of the 2 price curves of the respective options we have seen above. As you see, no "information" is lost and the bot can continue scalping normally, "as if" the price curve were "uninterrupted". Clearly, the "target" option has been chosen with a slighter higher price, so that the "rollover trade" can contribute positively to our PNL. In fact, you can see the green dot representing the buy order of this rollover and the following red dot representing the sell order to reconstruct the position. [As a technical detail, note that the buy order to close the position on the first option will be ignored by the scalping strategy (I call it an "out-of-game", meaning that, if left as is, it is "ignored" by automation, and for this reason, it is indicated by a green dot instead of blue). While the sell order "recreating" the position is currently a living part of the strategy (for this reason called a "player" and denoted by a red dot.) Note that the bot offers the flexibility to include or exclude any order from the automated scalping strategy. So, if we wish, we can also transform the buy order into a "player", or the sell order as an "out-of-game" order, as we prefer]. Also note that another source of risk modulation, in addition to the "delta switching", is the fact that we can modulate, by adjusting parameters, the frequency or distances of the buy orders (thus lowering exposure and margin usage), and the size of the "short constraint" (in this case I am using 1 "packet" short minimum, but in case it could be set to 0 if one would want to allow the buys to completely catch up with the sell players. Although, simulation suggests that this is too extreme in most cases and dampens or obliterate possible profits too much.) Hope the idea is clear. Let me know in case clarifications are needed.
There was a movie title that seems to apply: "Careful What You Wish For". We wanted some action and Forbes titles today "Catastrophic' Stock Market Crash Isn't Over..." And just after we demonstrated some rollover to a higher delta ES FUT 20220617 GLOBEX 50 E-mini S&P 500 [ESM2, 477836957, mult: 50] Anyway, good for our test, so we can get some real taste of this approach under tough conditions. We have a current exposure of 164 options short, 40 of which are just 64 dd away from maturity, and with all this stuff, after a plunge, our current drawdown is around 6K. Time decay and delta seem to be the most valuable allies. Closed also many long scalps against the short exposure, which contribute to "realized" profit to be added to the premium that we are patiently extracting. Let's take a look at a couple of option layers: ES FOP 20220429 2400 P GLOBEX 50 E-mini S&P 500 [EWJ2 P2400, 524261542, mult: 50] ES FOP 20220617 2650 P GLOBEX 50 E-mini S&P 500 [ESM2 P2650, 497966096, mult: 50] global: I think, so far, we can be satisfied with the overall behavior.
I have rolled over all (3) the ES options to a closer maturity (63 days) and, in the process, also closed the "stranded" buy orders. For instance: It is important to note, that through continuous rollovers (or, more precisely, "information transfers") we are able to close also the buy orders (hedging orders) which the bot could not close in profit because of some sudden reversal (those that I refer to as "stranded"). In this way, we gradually remove all the "negative contributions" to PNL. In practice, we could say that in time we "recover all the stops". Look for instance at that "stranded" buy 20 at 5.25 (blue dot on the right of the previous picture): we could close that order in profit with a future rollover. Of the old options expiring in 112 days, I have left only: ES FOP 20220617 2650 P GLOBEX 50 E-mini S&P 500 [ESM2 P2650, 497966096, mult: 50] because I am thinking of not doing a rollover on this one, but just setting a take profit, as I do not want to get too close to the fire [this is just 39% away, delta -0.025]. Same thing I want to do with all the SPX, NQ, ... options. Just close them in profit and forget about them because after all the ES microstructure seems more suitable for algorithmic trading, and there is no point in wasting time with other instruments. ES FUT 20220617 GLOBEX 50 E-mini S&P 500 [ESM2, 477836957, mult: 50] global:
Yesterday ES opened with a noticeable gap (about 3% down), but during the day recovered it. In the afternoon I have been doing another "information transfer": from ES FOP 20220429 2200 P GLOBEX 50 E-mini S&P 500 [EWJ2 P2200, 540844331, mult: 50] to ES FOP 20220429 2200 P GLOBEX 50 E-mini S&P 500 [EWJ2 P2200, 540844331, mult: 50] in order to catch up with stranded buy orders. So we went from: to this: which currently is: I have also "transferred" one of the ES options to a closer maturity: ES FOP 20220323 3600 P GLOBEX 50 E-mini S&P 500 [E4CH2 P3600, 546996532, mult: 50] So we continue to slowly collect premiums while scalping/hedging with buy orders while the decay "pushes down" the price curves we are scalping and the low delta dampens the unfavorable moves. Yesterday, I introduced also a new parameter in the scalping algorithm, which allows overriding the position constraint when it is necessary to close a buying player. I think this is useful because I think it is usually preferable, for this specific approach, to allow closing a long trade unconditionally, even if it means a temporary violation of the max short position constraint. What I want to do next, is: - Work only with ES, as the other equivalent instruments offer no important advantages over it - Close in profit everything I want to get rid of - Use closer maturities, in order to have room to roll up to higher prices in case of unfavorable mkt moves and also to speed up the whole process
I have done some other "information transfer" (or rollover) to speed up the process and also to be able to compare the behaviour of the scalping engine with options with different delta and volatility. . So we have now four ES instruments as follows: Expiring in about 21 days (very risky): ES FOP 20220323 3500 P GLOBEX 50 E-mini S&P 500 [E4CH2 P3500, 546995410, mult: 50] ES FOP 20220323 3600 P GLOBEX 50 E-mini S&P 500 [E4CH2 P3600, 546996532, mult: 50] Expiring in 58 days: ES FOP 20220429 2900 P GLOBEX 50 E-mini S&P 500 [EWJ2 P2900, 524261369, mult: 50] Expiring in 107 days. ES FOP 20220617 2650 P GLOBEX 50 E-mini S&P 500 [ESM2 P2650, 497966096, mult: 50] Clearly, the first 2 being so close to maturity are highly "risky" because of the higher delta and volatility and they can take a lot of "heat" when there is a correction. (They also absorb significantly more margins.) The last one instead is the most "insensitive" to the underlying moves. One useful thing about this algorithmic approach is that one can choose of much risk load up, and also easily move from one delta (or volatility) to another one, by "transferring" the trading info to another instrument. I am probably taking too much risk with the first 2 instruments, which might cause a very sharp drawdown, especially in this time of war. [Note for instance that " IBKR has increased the margin requirement (as much as 15% ) on all oil derivatives (Futures and Futures options). "] Let's say that since we are testing it's useful to work under "extreme" conditions and also compare the scalping/hedging game under different conditions. [In real-world applications, it is probably safe to stay far away (this also depend on your personality and how much risk you want to take). ] For instance, let's compare the scalping action on one of the "risky" instruments (picture below): ES FOP 20220323 3500 P GLOBEX 50 E-mini S&P 500 [E4CH2 P3500, 546995410, mult: 50] and the one expiring in 58 days: ES FOP 20220429 2900 P GLOBEX 50 E-mini S&P 500 [EWJ2 P2900, 524261369, mult: 50] You can immediately see that the bot did much more scalping/hedging action on the first one, due to the greater amplitude of the moves. Clearly, deeper moves usually mean more drawdown, but also more profit (due to more long scalps and more additional sell orders). So it's a tradeoff that, with some practice, you can learn to modulate according to your preference, type of fund and risk attitude.
Yesterday I transferred back one of the 2 more risky layers: ES FOP 20220323 3500 P GLOBEX 50 E-mini S&P 500 [E4CH2 P3500, 546995410, mult: 50] to a further maturity (42 days), to avoid too much DD in case the market goes down. This has also allowed closing a few "stranded" buy orders (so closing long scalps) and load up on more sells: ES FOP 20220414 3300 P GLOBEX 50 E-mini S&P 500 [EW3J2 P3300, 495664482, mult: 50] In the meantime, yesterday I have also added a filter for the tickdata. So far, I had in place a number of checks about the spread (carried out before firing orders), and those seemed sufficient for the futures, but these options receive a lot of very wild quotes. While ES is relatively the smoothest one, among those so far considered, some are really ridiculous. For instance, take a look at the microstructure of the tickdata that we receive for MES: No doubt, it's a real "mess" This is not only disturbing to the eyes, but also harmful to algorithms and order execution. So, what I have done is add a new filtering system that somehow can be seen to mimic what sometimes options traders do when placing an order, that is for instance considering higher and higher prices until a buy is executed (at ask) or lower and lower prices until a sell is executed (at bid), Clearly, no nonsense stuff such as Kalman filter, or other similar ideas, useless in this context, but an effective and quick way to remove the major adverse spikes. This is the same with the filter on: