Hammering 1 Crude Oil contract in a strangle

Discussion in 'Journals' started by fullautotrading, Apr 24, 2019.

  1. I will illustrate here a preliminary test of a new trading algo. Will do first a preliminary test on a paper trading account and then move to a real $ account, if ok.

    This is a new statistical algo that I have just plugged in my own software platform for algorithmic trading and it reflects my latest concern to address the demand of relatively smaller investors, and create a trading mechanism which could work with the minimum possible exposure and margin requirements. I have done some simulation studies, and this algo shows desirable statistical behavior, with good success probability and bearable drawdown. Time to see how it does with real data.


    Features of the algo

    The algorithm is composed of "trading units" (spaced away from each other, at different price levels) each made of 1 "scalper" and 1 strangle.
    Behavior of the "scalper": capture price fluctuations with the strict constraint enforced that the position is either -1, 0 or +1. Take profit variable according to current volatility. Strict stop loss.
    To compensate against strong price "runaway", we surround the 1-contract algorithmic "scalping" action with a long strangle: PUT | Algo Trader | CALL.

    (For this illustration and test, we will work with CL. And, for reasons that I will discuss later, I will duplicate the strangle.)


    Scalability

    This simple setup can be generalized for larger investors in two ways (thus providing unlimited scalability):

    - start multiple "trading units" at different price levels (for instance, many of these, spaced by 20%, for instance) in the whole range of the instrument
    - increase the "trading packet" in the trading units (e.g., N contracts, in place of 1 contract)

    For now, let's start with this configuration: 1 CL contract and a strangle.
    A very simple setup, easy to follow. Minimal resources.
     
  2. Robert Morse

    Robert Morse Sponsor

    What is the trigger to enter the buy order and same for the sell, or are you just randomly making markets where each fill triggers an offsetting order?
     
    fullautotrading likes this.
  3. Hi Robert, great to see you here again and benefit from your insight and experience!

    Thank you for your question. As to the initial orders, I am not using a randomizer to trigger them, but an updated version of a "directional" index that I created a few years ago ("sdx"), which simply indicates the local direction of the price curve, in a very short timeframe: a mere statistical "descriptive" metric. (Anyway, in the grand scheme of things, since the prices could be regarded as stochastic processes, one might consider the sdx itself as a r.v.) .

    The orders following the initial entries is a more complex story, as they obviously need to fulfill the position constraint (max 1 contract, long or short) and, clearly, to drive (at least in probabilistic terms) a long term convergence of the algo.
     
    Robert Morse likes this.
  4. For this first run I have selected the following instruments:

    Light Sweet Crude Oil (max +1/-1 contract):
    CL FUT 201906 NYMEX [ CLM9 ] (was around 66.2 when starting up)

    Long Strangle (2 fixed):
    CL FOP 20200514 68 C NYMEX [ LOM0 C6800 ] @ 3.07
    CL FOP 20200514 56 P NYMEX [ LOM0 P5600 ] @ 3.68

    (current underl 61.92)

    Margin requirements, as communicated at this late hour by the IB API (currently CL is +1):

    FullInitMarginReq: 7,116.91 USD [Min: 0.00, Max: 7,219.91]
    FullMaintMarginReq: 5,693.53 USD [Min: 0.00, Max: 5,775.92]
     
    Last edited: Apr 24, 2019
  5. First day. Not much happening. We have set up the strangle and started the "scalper".

    About 20 orders so far: the "order cloud" is slowing being created in response to price moves (in the chart it is shown the price of CL and the orders as red (=sell) or blue (=buy) dots). As explained, the position of CL is fluctuating between -1 and +1.

    Day1.gif
     
  6. Continuing the scalping action while the price drops to 64. Total 37 fills so far: building up the "order cloud". Global PNL chart so far:

    PNL_1.gif

    (My PNL computations always include the cost to close all positions at current prices.)

    Margin info (communicated by IB):
    FullInitMarginReq 8,411.90 USD [Min: 0.00, Max: 8,411.90]
    FullMaintMarginReq 6,729.52 USD [Min: 0.00, Max: 6,729.52]
     
    Last edited: Apr 26, 2019
  7. Scalping is proceeding as planned. Not really an ideal start with a significant move down on the first days (66 to about 62), but anyway nothing that really matters in the time horizon we consider.

    Day6.gif
    As one can well imagine, in general, the scalping algo is programmed to grab as many price fluctuations it is possible. Of course, it suffers greatly when, instead, the price runs away in moves with little fluctuations, that is there is a strong "vertical" development of volatility.

    The annual strangle surrounding the scalper has the purpose to protect against runaways, while the scalping activity takes what it can from the "horizontal" component of volatility. It has also the additional purpose to provide some peace of mind to the trader/investor, because when trading algorithmically there might be some fear about software or hardware glitches.

    Global PNL curve so far:

    PNL_2.gif
    Margin info:
    FullInitMarginReq 6,014.51 USD [Max: 8,411.90]
    FullMaintMarginReq 4,811.61 USD [Max: 6,729.52]
     
    Last edited: Apr 30, 2019
    vanzandt likes this.
  8. Here is an update about the automated trading activity (max exp: 1 contract):

    Day8.gif

    and global PNL so far (including strangle and closing cost):

    PNL_3.gif
    Margins:

    FullInitMarginReq 5,930.10 USD [Max: 8,411.90]
    FullMaintMarginReq 4,744.08 USD [Min: 6,729.52]
     
    Last edited: May 2, 2019
  9. qlai

    qlai

    By runaways, you mean a large gap through your stop?
    What does "annual" mean, don't you need to roll the straddle in between scalps as the price trends?
     
    fullautotrading likes this.
  10. Hello qlai. Thank you for your interesting questions.

    Let me make first a general disclaimer about language usage. Since I learned English in adult age I am often very far from what might sound right to a native speaker, so please excuse me and feel free to correct my terminology and wording.

    That said, by "runaway" I usually mean a strong move of the price, which is escaping from the ideal "corridor" where we could "scalp" profitably. In that case, there would be hedging orders, and you are probably correct by saying "through your stop", although I am not sure why you are mentioning that.

    About the strangle, the idea is to provide "protection" while we could generate a profit. Since the process is "statistical" and obviously takes some time to "converge" (especially due to the unusual position constraint of max 1 contract), I am giving it at most 1 year to show a profit.

    The combination of "scalper" + strangle can be shut down earlier if there is a profit (for a new restart), and especially if the profit comes massively from the strangle instead of the scalper.

    Each 20% move from a previous center, we will start a new "trading unit".
     
    Last edited: May 2, 2019
    #10     May 2, 2019
    qlai likes this.