Automated folio trading - Role of Information and Hedging

Discussion in 'Journals' started by fullautotrading, Dec 7, 2014.

  1. I am continuing the scalping action on the CL layer:

    CL_8.png

    mostly loading up buy players.

    In the meantime, to recover some margin and to protect the scalper I have been adding a few (8) PUTs 47 (expiry Jan 14):

    CLPUT47.png

    it turns out that I needed to grew up the position to 8, in order to balance the "available funds" in the green zone. A bit large position which already costed over 8K. However I have also enabled short scalping on this option to possibly recover some money during the rapid decay.

    One thing I did "wrong" here (in hindsight) is the expiration: it would have been more handy to chose the march option. (Next time will keep that in mind.)
    To recover some of the massive decay I have also shorted some (5 for now) PUTs 46 (same expiry):

    CL_Put46.png

    Another "error" I feel I have done is having waited too much to define the "protective" puts (strike 47). This is also to be kept in mind for next time. Since the move up is what we would like I have also shorted a few CALLs with larger strike, but their contribution is so marginal (a few Ks) that we don't even need to mention them.

    These maneuvers have improved a bit the picture raising the DD from 15% to about 8% (currently):

    PNL_5.png

    As usual, the discrepancy between my PNL (which is always much lower in case of presence of illiquid options) and IB's is due to the fact that I include the spread and closing expenses (computed using the worst possible case), which evidently they do not do.

    Note how working with porfolio margin account (https://www.interactivebrokers.com/en/?f=margin&p=pmar) is so much more comfortable. In the previous test with a RegT margin method we had a much smaller position with ERY (not to mention all the other futures position we have) and the situation become quickly very difficult to manage, at a minimal DD. This is another reason why to trade meaningfully some decent capital is needed (this account is actually even too small to deal effectively with futures).

    DGAZ is also scalping quietly. The problematic part are the ERY options which also represent a blatantly excessive position). At expiration (next week) we will see what is best to do about them (we may need to roll forward some of them, even if it's now clear they are very troublesome and practically intractable, and should be avoided in the first place.)
     
    Last edited: Jan 8, 2015
    #21     Jan 8, 2015
  2. It's time to remind ourselves what we are doing and it's important that while looking at trading details we do not lose the general meaning of what we are doing.

    We might imagine the trajectory of the price of a financial instrument like a walk of the price along time where it can go up, down and fluctuate as it likes.
    Some instruments might have "built in" drift and for whatever instrument we might have some sort of predictive model telling us something about expected direction in the near future.
    However, even knowing the general "direction" of an instrument does not automatically translate in being able to make a profit.


    For instance, assuming that the crude oil (CL) reached a price so low that any reasonable expectation be for a rise in the future, we might still be unable to translate this information or our predictive model into any profits. Clearly, the problem is that while we might be generally right, all another matter is to be able to practically withstand the unfavorable moves which can happen, even within a price evolution which is along our expectations.

    This means that in any case there is the necessity to have hedging mechanisms which can extend, in the ocean of price waves, our survival in such a way that we eventually end up being profitable.
    We are exploring here 2 main hedging mechanisms:


    1. Working essentially to capture the "horizontal" component ("player superposition")
    2. Working essentially to protect the "vertical" component (mostly "option structures")

    AutomatedScalping.png

    Clearly, this distinction is only at intuitive level as the concepts of "horizontal" and "vertical" cannot have an absolute meaning but are, for instance, relative to the price range considered. So, for now, let's leave the notions at a purely intuitive level.

    To illustrate the component 1, let for instance take the (second) layer of CL we are trading. The open player view is the following:

    CL_Players.png

    While this is the view of all orders (same layer of course) which have been issued, therefore containing all the players which could be closed (in profit):

    CL_AllOrders.png

    We can see here that the global value of the scalps is about 14K. This means that if we simply had been averaging down with the about 7 players, which are currently open, our drawdown would be much higher than the about 17K we see. In particular, those 14K scalped away is real money which has been contributing to our defense and represents the portion of loss (or "investment") we have spared ourselves.

    In other words, the automated scalping action ("player superposition") has been capturing the "horizontal" component which was present in this move downward. This is of course a form of hedging, and a quite effective one (the degree of effectiveness has both an accidental component and a deterministic component).

    Clearly, it cannot, in general, provide all the hedging answers, in particular against the vertical component. And there we come in support by providing options structures or other tricks.

    In addition to that, we also scalp the options themselves to provide an extra hedging layer. As a real example, take for instance the 8 PUTs 47 we have talked about in the previous post (compare the 2 images), and look now at the entire set of orders:

    CLPUT47AllOrders.png

    We can see now that, in the meantime from the previous post and this post, it has stolen a scalp, and, in all, about 1.3K in scalping action, so we can also extract some money from the protective structure itself. Actually, it might even happen that we get protected all the time and end up with no time decay and a profit stemming from the scalping action on the options.

    This pretty much reminds me of an anecdote when I was invited for a period in the USA and, while staying there, I wished to buy a car. After visiting all sort of car dealers (possibly the worst category of people I ventured to meet :) ) I ended up buying a Japanese car which just before leaving I was able to sell it at a price higher than I bought it several months earlier :) This just to say that sometimes it can happen we can enjoy of a "privilege" (in this case "protection" of the scalping action) and, in some cases, we might even end up with paying almost nothing for it, of even in profit.
     
    Last edited: Jan 8, 2015
    #22     Jan 8, 2015
  3. We have already noted that the massive ERY option position (300 options) represents here a big mistake, for various reason. First of all, it is unnecessary in the first place, because we have seen that ERY become practically unusable due to the continuous limitations on shortability. Second, because it is way too large. Third, because, the massive spread of these options make very costly to get out of the position once open. And as we have noticed, our purpose is not to trade options but merely using them to protect our scalping activity, with a quantity that is just sufficient but not too large.

    Now that the energy shares are falling to record lows, we pay a dear price for this mistake, with the PNL falling to record low of a -23%:

    PNL_6.png

    The most annoying consequence of the large DD is the fact that it has 2 main damaging consequences:

    first, one is forced to "realize" some losses, this happens because either:

    1.we are forced to sell low or buy high to recover some funds to continue trading, and those unfavorable trades transform part of the DD into realized losses, or
    2. some positions are automatically liquidated by the broker.
    And when you start realizing many losses you are heading to a way of no return;

    second consequence, which matters to the purpose of our test, is that we practically lose completely the ability to scalp on the "good" and liquid instruments (like CL) because of lack of available funds and order rejections, and this also causes new losses, because for instance, every time CL is bouncing up and the application wants to close a profitable sell player, it cannot close it (the order is rejected by IB due to insufficient funds), so that sell hedging player remains open low and thus contributes to the "loss" component of the PNL.


    How to deal with liquidations ?

    Since we are having some automatic liquidations, this difficult situation comes anyway useful now to demonstrate how to deal with liquidations and how to perfectly re-sync the app so that it remains accurate to the penny. It is in fact right when an account is facing difficulties that we need to have all the facilities to have a clear picture of the damage, so that we can remain calm.
    In real trading, a DD is always causing to the fund manager a big psychological stress, and right under that condition it is absolutely crucial that the technological side and the trading tool provide the maximum support so that the worries and the confusion about the DD do not turn into panic, and consequently even more damaging actions.

    Let' see an example of app re-sync after liquidation. Note that the liquidation occurs outside of the app control, and it is made by the broker. Of course, it would be useful, and highly advisable, that the IB API had an event (eg., LiquidationFill() with time, avg fill price and order size) which informed us about the liquidation so that we could do the re-sync action completely automatically. However, I am not aware of any API functionality which gives this crucial information (let me know if I simply missed it), so what we can do is to take the information out from the trade report at the end of the day and patiently insert the liquidation orders within our automated context.

    This is indeed quite simple and can be done pretty quickly. Let see an example. We open our trades report (from "account management") and see for instance the following liquidation trade (they have an "L" code):

    LiquidationExample.png

    All we need to do is to take order size and fill price and "project" the fill on the respective layer, in this case the CL PUT 49 ("CL FOP 201503 49 P NYMEX 1000"):

    FIllProjection.png

    And that's: all we are perfectly back in sync with the account, precise to the penny. This is of course a "virtual fill": it is not causing any "real" execution, but simply informing our automated trading app of this "external" fill, so that it can take into account the position for both PNL computations, and next automated (rule-based) decisions:

    ProjectedFill.png

    In addition, we can also convert, just with 1 click, the virtual fills into "automatic players", which means that the app will consider these fills "as if" they were made by the algorithmic engine and, therefore, possibly close them in profit at some later time, and this is a rather powerful conceptual device.

    On the "strategic" side, are we "dead" yet? Well, we have taken a severe hit with those options and accumulated pretty serious losses. However, we are not yet beyond any possibility of recovery :). And, most of all, it's in the DD that we can have our best instructive moments, rather than with a (way more common in backtests) equity curve which goes always up at 45 degrees :) So let's stay cool and proceed avoiding all the mistakes we have been noting so far. This friday the ERY options will expire and after all the assignments (https://www.thinkorswim.com/tos/displayPage.tos?webpage=lessonExercise) (again we will use the "fill projection" to resync) we can have a more clear picture of the situation and the total damage and see what we can do about it.

    Finally, what are the "take-away" recommendations we can infer for the future ?

    - Do not trade options that you don't need. Use only what is needed to accompany the hedging/scalping activity of the players. [ We need to remember that the player activity, being non-predictive, captures mostly the the "horizontal" moves, while we need to hedge the vertical moves. ]
    - Use positions compatible with the account size and margin method.
    - Do not trade illiquid options with large spread;
    - Stay away, when possible, from illiquid instruments with permanent execution issues (eg. most ultrashort ETFs)
    - Never create option structures which (globally) are "theta negative" (the app also provides the possibility to easily compute the combined time decay of any combination of options).
     
    Last edited: Jan 13, 2015
    #23     Jan 13, 2015
  4. As to out-of-sync positions, the app is giving full information about that, in the section relative to the account state. For instance, I have re-synced some positions but I still have 2 left to be done, and the account info look like this:

    Code:
    ============================================== NOT MATCHING PRESENT IN THIS INSTANCE ===============================================
    Symb                                                                       This G-BOT             IB            Exp     Sync
    ERY                                [ERY   150117C00021000]                       -200           -197      2.19 days     BUY 3 @ XXX
    ERY                                [ERY   150117C00022000]                       -100            -97      2.19 days     BUY 3 @ XXX
    ------------------------------------------------------------------------------------------------------------------------------------
    Price and comms of resync orders can be taken from the IB trade report (T.Price). (Liquidation trades have code "L")
    
    
    ================================================ POSITIONS STRANGER TO THIS INSTANCE ===============================================
    None
    ------------------------------------------------------------------------------------------------------------------------------------
    So I am being informed I still need to sync the liquidation of some ERY options. Once I do that, I will have "None" in the section of the "non-matching" positions.

    One liquidation which is particularly annoying (or amusing depending on the point of view :) ) is that of DGAZ. After we had been scalping perfectly up to the peak, and just when we were ready to grab the deserved money on reversal, IB closed the position right on top, and now the instrument is running down like crazy in a non-shortable state:

    SmartLiquidation.png

    That's nice, just what we need to cheer up :)
     
    Last edited: Jan 14, 2015
    #24     Jan 14, 2015
  5. Rough day today. Lot of volatility and ERY spiking to the roof again. Clearly no good news for our situation, with the PNL descending to hell (but as I learned in the past, I am not certainly going to close anything on a spike :) ) Anyway, we had some relief towards the end of the session.

    Right now the futures too are in the technical pause. Our CL layer was affected negatively by the impossibility to scalp, due to margin deficit, and several sell players (players in the yellow circle) could not close even when CL bounced back a bit:

    CL_9.png

    This happened because, first CL rose a bit, and only with a significant delay also ERY followed with a little retreat, so the funds made available could not be used to close out the sell players. This is of course a bit annoying but not worrying, as CL will have plenty of future occasions to close those scalps (also due to the significant contango). In a non-predictive and "player superposition" logic, we are not really "concerned" if their close is "postponed".

    In this sense, the role of the information is crucial, as if we lose track of those fills we would obviously not be able to unwind the losses in the future. Somehow it's like most of the technology available to the trader favors the loss of trading information with several subtle means (expiration, decay, contango, daily PNL updates, stops, liquidations, and so on). Our effort is, instead, all in the preservation of the trading information, because it is essential to "unwind" the losses in the future, and therefore create (in statistical terms) the unbalance which must provide an edge in the long term.

    It looks like we had no positions liquidated today, which is good. Overall, the situation has anyway improved a bit respect to yesterday, and currently our PNL is at -18.74%.

    Friday the ERY options will expire and with those out of the way, we should be in a better position to manage the account. What is important is to regain the ability to scalp with enough funds and from there on the algorithmic engine should take over and do its job (no matter how hard I have conspired to blow it up :) ).
     
    Last edited: Jan 14, 2015
    #25     Jan 14, 2015
  6. While tomorrow we will have several ERY options expiring, yesterday we had just one CL futures option expiring OTM, because I closed all the other various expiring legs in profit before the expiration date. This option has symbol: CL FOP 201502 47 P NYMEX 1000 Light Sweet Crude Oil [LOG5 P4700] with expiration date 14 Jan 2015.

    It expired OTM with a position of +5 and a PNL of -5,241.67:

    CLPUT47_2.png

    If we take a look at the IB trade report (for the period we traded it), we see the following trades, and, in particular, the last trade marked by the code "Ep, C", which of course was made not by us, but by IB to remove the expired options, and in fact it's the only trade with commission 0 (last row, column 8):

    PUT47Trades.png

    Note also how the PNL (and comms) reported by IB precisely matches our PNL (and comms). Note that our computations are made independently, and we never use any IB PNL computations, because we need to be able to overlay layers and instances, so we need to be completely autonomous from whatever the "actual" account may say, which, from our perspective, may be the result of layer or app's instance superposition.

    Clearly, when IB removes the position we go momentarily "out of sync" and the app informs us in the "account info" (green $ icon):

    Code:
    ============================================== NOT MATCHING PRESENT IN THIS INSTANCE ===============================================
    Symb                                                                       This G-BOT             IB            Exp     Sync
    CL                                 [LOG5 P4700]                                     5              0  Expired (OTM)     SELL -5 @ XXX
    ------------------------------------------------------------------------------------------------------------------------------------
    
    ================================================ POSITIONS STRANGER TO THIS INSTANCE ===============================================
    None
    ------------------------------------------------------------------------------------------------------------------------------------
    However, in this case we re-sync by simply removing the layer from our folio, or we might even add the closing fill as a "virtual fill", if we prefer, as we have seen in a previous post.

    In the next post I will expand more from this example, and use this option to make a general argument about the necessity of "information rollover" in a perspective of "trading information preservation".
     
    Last edited: Jan 15, 2015
    #26     Jan 15, 2015
  7. Yesterday we had some more liquidations (6 ERY CALLs 21):

    Code:
    ============================================== NOT MATCHING PRESENT IN THIS INSTANCE ===============================================
    
    Symb                                                                       This G-BOT             IB            Exp     Sync
    ERY                                [ERY   150117C00021000]                       -197           -191      0.31 days     BUY 6 @ XXX
    ------------------------------------------------------------------------------------------------------------------------------------
    Symb                                                                       This G-BOT             IB            Exp     Sync
    CL                                 [LOG5 P4700]                                     5              0  Expired (OTM)     SELL 5 @ XXX
    ------------------------------------------------------------------------------------------------------------------------------------
    So, using the IB trade info from our daily report and a "virtual fill":

    CALL21Liquid.png

    I have re-synced the the instrument (which anyway expires today):
    Code:
    BUY 1 @ 5.4 comm 0.39
    BUY 5 @ 5,5 comm 5.45
    Today the problematic ERY options will expire, and next week we should be in a much better position to resume a meaningful scalping/hedging game. We have realized several unnecessary losses and endured a sharp DD, but nothing overly worrying, as, avoiding these errors, we have enough capital to fix it and get back.

    The teaching we get away with this time is to stay away from these kind of options. Another one, is to stay away from deep ITM options, as they become untradable (no quotes, monster spread). This is pretty evident for instance with the CL PUT 54 (CL FOP 201503 54 P NYMEX 1000, LOH5 P5400 ], which is currently totally unmanageable (especially on a Dxxx account), and like ERY options is freezing precious funds which could be used for the scalping game activity, and, more importantly, causing losses due to margin deficit. (Current quotes for this option are: bid/as = 4.11/8.56, with 445 ticks spread.)

    In general, CL options look pretty good for scalping, and I wish to explore this opportunity more extensively.

    About the already expired option mentioned in the previous post CL PUT 47 (LOG5 P4700), as we said in the previous post, one might just remove it, or (more preferably) add a virtual fill of "sell 5" at price 0 so that we have exactly the same orders as the broker report reports:

    CLPUT47_3.png


    However, in a perspective of preservation of the trading information, we might want to do something way more interesting, that is "roll over" the entire past trading information to a new instrument and continue trading it until we obtain a profitable outcome, so that we might possibly close the players which have remained open.

    "Rolling over" the past trading information

    Fund managers are obviously used to roll over futures contracts. What it is done is, essentially, to close the position on the "old" instrument and re-open it on the "new" one. In such a case, we might clearly "realize" a loss whenever we are long and there is contango (price on new instrument higher than old price) of we are short and there is backwardation.

    In our treatment, since the whole idea revolves around the preservation of the trading information, we cannot simply trivially roll over the position, but we want to move the entire trading information to the new instrument. That is, we literally transfer the entire order cloud onto the new instrument (and, in case, we can also perform some adjustments to the avgs of the open players to keep into account the difference of price of the 2 instruments).

    Now, thinking a bit out of the box, the whole idea can be generalized to any instrument and we might as well "roll forward" other instruments too like options and so on, and "transmit" the entire past trading information to the new instrument, so that it can be used.

    (It is even conceivable to roll a stk to another stk, but for now let's not push too much the idea :) )

    How does this work in practice? It's quite simple once understood, I have added a feature which takes the entire information of one instrument and "transfers" it on to a new instrument. Before making the transfer only one condition is required: The old instrument must have position 0.

    This is achieved in either one of these possible ways:

    - The instrument has already a position = 0. In this case, do nothing
    - The instrument has a nonull position and we are in sync. Simply, close the position, with a "real" manual order.
    - The instrument shows a nonull position but that is not present in the account (eg, case of expiration and so on), so we are "out of sync". We simply resync with a "virtual" order,
    as we have seen in a previous post.

    Going back to our example with the PUT 47, we had a position of 5. At expiration the broker removed the position with an "order" at price and comms 0. So this is a case were we just place the same order as a "virtual order", to realign the situation. Once the old instrument has position 0, we are ready to "transfer" the trading info (order cloud) with just one click to another instrument. Once this is done, we place a manual order to "re-open" the position on the new instrument, and we are right back on the game with no loss of information:

    InfoRollover.png


    Possible "losses" due to contango or backwardation (in futures) will be shown explicity by the difference of the 2 manual orders used to re-sync. Note that those 2 manual orders (close-reopen) can also be converted into players, so that we have the potential to recover this "loss" too. :)

    This is a pretty powerful conceptual device, which ensures we loose no trading information in the rollover process.


    Clearly, there are several conceptual subtleties to this idea, and we will explore them later. For now, to make a practical example, let's just roll the expired CL PUT 47 option to another option. Note that we do not need to necessarily select the same strike, or even right, or the next month. We will see a example of this in the next post.
     
    Last edited: Jan 16, 2015
    #27     Jan 16, 2015
  8. Finally we got rid of the ERY options and our IB trade report is ready with all the settlement results. So we can now re-sync all the positions, taking care of all liquidations, assignments and exercise actions.

    Of course our application is signalling we have several position which are out of sync:

    Code:
    ============================================== NOT MATCHING PRESENT IN THIS INSTANCE ===============================================
    Symb                                                                       This G-BOT             IB            Exp     Sync
    ERY                                [ERY]                                          479         -34021              -     SELL 34500 @ XXX
    ------------------------------------------------------------------------------------------------------------------------------------
    Symb                                                                       This G-BOT             IB            Exp     Sync
    ERY                                [ERY   150117P00031000]                        100              0  Expired (ITM)     SELL 100 @ XXX
    ERY                                [ERY   150117P00025000]                         -5              0  Expired (ITM)     BUY 5 @ XXX
    ERY                                [ERY   150117C00021000]                       -181              0  Expired (ITM)     BUY 181 @ XXX
    ERY                                [ERY   150117C00022000]                        -87              0  Expired (ITM)     BUY 87 @ XXX
    ------------------------------------------------------------------------------------------------------------------------------------
    due to the option expiration, and in this case, the IB trade report is our friend to re-sync everything and therefore we can keep track of the situation with absolute precision: we will not lose track of 1 penny.

    The trades we need to case are those with codes:
    A assignment
    Ex exercise
    L liquidation

    I have extracted them for you and they are:

    ERYOptionExpiration.png

    I have connected with colored lines the options with various assigned position on the underlying ERY.

    First of all, we need to re-sync the Liquidations (see the red squares). In this case, we had one liquidation and 18 CALLs 22 were bought by IB at price 2.2. So, to resync that situation, as usual, we add a virtual order of buy 18 @ 2.2 (comms 2.99).
    There is also an additional fill for this option, which is the "closing" one: 69 @ 0 comms 0 (again, those closing "fills" made by the broker to remove options from the account have commissions 0). We add that too with another virtual fill, as before:

    ERY_Call22_2.png

    So, now our position is 0 and we are in perfect sync with IB on regarding that option.
    Note that, looking at the IB trades for this option, in this case, the PNL shown by our layer is coincident with the sum of the IB "proceeds" and commissions:

    ERY_Call22Trades.png

    Note that just before expiration the call 22 option was worth 1.8 because it was in the money (ITM) of that amount (ERY closed at 23.8. So: 23.8 - 22 = 1.8).

    In other words, to assume the closing price = 0, is like making us a "gift" equal to the loss due to the last positive intrinsic value of the option, because at expiration the option was worth 1.8. Clearly, nobody is making us any "gift", and the loss is simply incorporated on ERY, where we see an assignment of 6,900 shares at the strike price 22 and commission 4.18 (see pink lines). So no "gift" there, and, actually, we also pay the assignment commissions :).

    So when we re-sync we follow this same "logic" as IB. We now just re-sync ERY too with a sell 6,900@22 comms 4.18. (Note that the reason why the option is assumed to be closed at 0 is probably to avoid doubling the intrinsic value loss, as it is "incorporated" in the assigned position)

    So, we just add a clean (clone) layer for ERY and put the "virtual fills" over there:

    ERY_Sync1.png

    Ok so we are done with the CALL 22 and the corresponding assignment.

    Let's move on to the CALL 21. This is similar. We need to resync the option with buy 181 @ 0 comms 0:

    ERY_Call21.png

    and place on the ERY layer a sell 18,100 @ 21 comms 10.55 (follow the cyan line in the IB report picture above).

    ERY_Sync2.png

    Let's now take care of the PUT 31 (position 100 long). This has expired in the money (ITM) and we see from IB report (green line) it was exercised giving rise to a sell 10,000 @ 31 comms 8.04.
    Just as done before, we re-sync the option with a closing order sell 100 @ 0 comms 0 and resync ERY with a sell 10,000 @31 comms 8.04:

    ERY_Put31.png

    and ERY:

    ERY_Sync3.png

    Finally, in the same way, we sync the last one, PUT 25 (long 5) expired in the money and causing assignment: buy 500 @25 comms 0 (yellow lines):

    ERY_Put25.png

    and finally ERY:

    ERY_Sync4.png

    and we are now back in perfect sync, in full control of the PNL and not even 1 penny of error:

    Code:
    ============================================== NOT MATCHING PRESENT IN THIS INSTANCE ===============================================
    None
    ------------------------------------------------------------------------------------------------------------------------------------

    So, in summary, to re-sync the expired options and all the relative shares, simply, we just add all the necessary virtual fills, doing exactly what is shown in the IB trade report, and we are back in sync.

    This ensures we remain accurate to the penny and can have a clear picture to resume our battle and take new decisions, without any confusion about what is our global situation.

    It remains to show how to roll over the past trading information of the losing layers of the expired (OTM) options (or futures), and we will see that in a next post.
     
    Last edited: Jan 18, 2015
    #28     Jan 18, 2015
  9. Back after the holiday. The situation is an acceptable DD, with a good investment in OIL related stuff. We are at this very time:
    Code:
    NetLiquidation                849,827.07 USD   
    with:
    Code:
    Δ NetLiquidation             -150,172.93 USD  -15.02%
    so about a 15% under. Most importantly, closing the ERY options, we have regained control on the positions and freed enough funds to resume the scalping activity.



    New approach to defense of the (non-predictive) scalping engine


    I have drastically changed (or, say, "improved") my take on the problem of "protection" of the scalping/hedging engine, by adopting a much more fluid and dynamic approach, and, indeed, it feels much better.

    To defend the scalping activity, it appears that, instead of attempting to create rigid "option structures", it is much better to add (or anticipate) dynamically the "defense" options just when needed and in a sufficient quantity (usually a bit larger than your opposite position). Also, you need to dynamically short options to recover the time decay, and that can be nearly equally distributed in PUTs and CALLs sufficiently OTM and short expiration.

    At the same time, set a short scalping game on the same options, so the bot will actually play against you, immediately closing the profitable players on reversal. Practically, in this way we can modulate the option hedging action, just as and when needed and select the strikes we like, while the application on the other hand works against us (that is in the opposite direction) on the same option, by closing short scalps and by saving some precious time decay:

    CL_Put48.png

    This seems quite effective and allows a fine control of the margins, especially when we have a good deal invested, like in this moment, quickly moving the load from an instrument to another one as needed to continue scalping incessantly.

    Of course, this requires liquid options (it would be clearly unthinkable with stuff like the ultrashort ETFs we have been dealing in previous tests, due to illiquid, unmanageable options).

    One thing that appears to be important (at least in Dxxx accounts) is not to be remain trapped with significant position in deep ITM options (because those are algorithmically unmanageable, and certainly impossible to manage on a Dxxx account where you get absurd bid/ask quotes, with no apparent chance to be executed "near" the intrinsic value).
    As an example of that, look for instance at this layer (CL PUT 54):

    CL_PUT54.png

    this option about 15% ITM, and the bid/ask received are just ridiculous: 5.78/10.01 (424 ticks apart!). In a Dxxx account if you place an order at intrinsic value (6.73) + time decay (about 0.75) you will not be executed:

    CL_PUT54_2.png

    Practical consequence of that is to remain stuck in the position with capital frozen, and losing thousand $$$ a day in missed scalps.

    (Note that you don't actually need to rush immediately sell options when adding defensive options: you may want to wait for when you start seeing the bot is actively scalping short against you on those: that may be the most suitable moment to balance the time decay. As long they run up (if CALLs) or down (if PUTs) let them run as the "delta" component is more important than "theta" at those times.

    Another useful "tip", appears to be to place, on each option layer (and especially if just ITM or near to that), a take profit ("$-umbrella" icon), so that we automatically close periodically the profitable layers and we are in a better situation to periodically clean up, reassess the situation, and possibly open new OTM options. In fact, even when "flat" (position = 0), the "active players" will remain memorized and we can resume the scalping at any time we want.)
     
    Last edited: Jan 20, 2015
    #29     Jan 20, 2015
  10. As a practical example of this more dynamic approach to options, let's consider the CL PUT 48 just shown in the previous post (see screenshot in the previous post ).

    What appears to be useful is to close when possible the options which go in the money and move (or reopen) the defensive position on new OTM strike near the current price.

    This can be achieved as follow. One would, initially, set the protective options picking a strike which is just or slightly OTM (or in any case not too far away, say < 3%).
    When and if the protective option goes ITM, switch it to full auto mode with a short only-constraint, and essentially abandon that layer in the hands of the bot, which will try to automatically close all it can whenever there is a chance. Also set a take profit, to shut the layer down as soon as the target is reached.

    At the same time, the protective load can be "moved" to another OTM strike, thus repeating the process.

    This appears to be useful for at least these reasons:

    - we continuously take the "bursts" in price of the options moving ITM
    - we minimize the options ITM in the folio
    - most of the time we obtain a profit even from the old "protective layer", due to the large volatility of the options and the decay
    - easier to periodically reassess the situation and to manage

    I did this for the CL PUT 48 mentioned above. As soon it was ITM, I let it run in full auto mode (short-only) with a take profit (about 2K: one might choose something near to the Max PNL ever seen on the layer). In the meantime, I started rebuilding the position on a lower OTM strike (44).

    Then, after a while the PUT 48 closed in profit by itself:

    CL_Put48_2.png

    and I am left with a "protective" load at a more suitable strike, and a full recover on the PUT 48 layer, which was previously used for defensive purposes and to recover funds. If the price goes down, we simply repeat the process for the PUT 44, and so on.

    So, a "dynamic" approach to options seems much more interesting and useful. (If satisfactory, later on we can add more automation to control some aspects of this methodology. At the moment this requires some degree of active involvement of the fund manager, which is not a bad thing, and, especially in the periods of large volatility or DD, I guess nobody wants a fund manager just sleeping in front of the screen :) )
     
    Last edited: Jan 21, 2015
    #30     Jan 21, 2015