Fully automated futures trading

Discussion in 'Journals' started by globalarbtrader, Feb 11, 2015.

  1. I don't think so, at least not with respect to positions (obviously exponential averaging is hysterisis with respect to prices by construction). Hystersis is state/ path dependent for positions, exponential averaging is not. If I started up a trading system cold tommorrow with exponential weighting but no buffering, it would want exactly the same position to be put on regardless of whether it had a position on already. But if I include buffering then the trade required will be different depending on the current position.

    GAT
     
    #2181     Jun 18, 2020
    .sigma and Elder like this.
  2. Uhhhm, I fear I got lost by this one. How does that buffering work? Can you please give an example?
     
    #2182     Jun 18, 2020
  3. Suppose my optimal position is 5.5 contracts. I calculate a 'no trade zone' of 4.4 to 5.6 contracts (the best way of doing this is as a proprotion of your average forecast, but I present a simpler method in ST and LT. The proportion depends on your costs levels, but again for simplicity I use a fixed proportion). This rounds to 4 to 6 contracts. We will only buy or sell if we are outside of this zone, and we trade to the edge of the zone, not to the optimal position.

    If your current position is 4,5 or 6 contracts then you won't trade. If however your position is 3 contracts, then you will buy 1 contract. If your position was 7 contracts you would sell 1 contract.

    If we started the system from cold with no positions it would buy 6 contracts (5.5 rounded); for a position of 6 contracts. But you could also end up with 4 or 6 contracts if your starting postion was different.

    GAT
     
    #2183     Jun 18, 2020
  4. I see. In this case does buffering sound very similar to hysteresis, which I'm familiar with. And yes, I do understand that hysteresis makes the system path-dependent.
    I'm not using any of these techniques and am not seeing any trading caused by "noise" near a trading level (e.g. having an optimal position bounce around 5.49 to 5.51 contracts). I can imagine that noise influence could occur if one trades continuously. However, in my case is trading done only once per day. I guess that this "time quantization" prevents this noise.
     
    #2184     Jun 18, 2020
  5. As has already been alluded to, it's unlikely to be an issue unless you are managing relatively large amounts of money.

    GAT
     
    #2185     Jun 18, 2020
  6. SteveH

    SteveH

    GAT, I would strongly recommend you type hint all of your Python code. It saved me hours of debugging as my code base grew.
     
    #2186     Jun 18, 2020
    globalarbtrader likes this.
  7. Kernfusion

    Kernfusion

    What I'm doing is after calculating new forecast, I run the position-sizing logic backwards to calculate what forecast my current position corresponds to(that takes current volatilises and everything current, not from the time these positions were established), then I compare that theoretical forecast of my current positions with the actual new forecast I just calculated, and will only trade if Abs(currentPositionsForecast - newForecast) > SystemAverageForecast * 0.3.
    Not really sure where 0.3 came from, I guess my thinking was along the lines:
    I have very little capital, so at best I can hope to hold max 4 contracts one way with maximum forecast, i.e. 2 with average forecast, which would correspond to the multiplier 0.5 to be able to buy in 1 contract increments. (so I would only have maximum 4 steps of position change each way), so I made it 0.3 to make it a bit more sensitive for contracts requiring less capital of which I can hold more than 4..

    I guess this corresponds to "as a proprotion of your average forecast"
     
    Last edited: Jun 18, 2020
    #2187     Jun 18, 2020
  8. Elder

    Elder

    Thanks GAT, I need to read up more on hysteresis. Its interesting that there are several people in this thread who seem to have an understanding of this concept, which further serves to highlight the high bar being set here. My intuition was that the signal/forecast has a lag which results from smoothing (e.g. carry variations) and this lag translates to a lag in position size changes. I guess what you are saying is only variable Y should respond to changes in itself with a lag for it to be considered hysteresis rather than respond to changes in variable X (which maps to variable Y) with a lag?
     
    Last edited: Jun 19, 2020
    #2188     Jun 19, 2020
    .sigma likes this.
  9. I think I agree with you, but to be honest I don't like the use of the word 'lag'. Annoyingly the first definition that pops up on google is 'the phenomenon in which the value of a physical property lags behind changes in the effect causing it...'. The (IMHO correct) wikipedia definition is "Hysteresis is the dependence of the state of a system on its history." That is not really the same as a lag, and is much more precise. For our purposes the 'state of the system' isn't really the current price, but the trading system that uses it. I think that is what you mean by X and Y.

    GAT
     
    #2189     Jun 19, 2020
    Elder likes this.
  10. Even if your signal/forecast has a lag is it possible that it causes oscillations in desired position size between 4.49 and 4.51. And thus results in multiple trades between 4 contracts (4.49 -> 4) and 5 contracts (4.51 -> 5), even though your desired position size is only changing by 0.02 contracts (which is noise). Lag alone is therefore not sufficient to protect your system from multiple trades due to oscillation around a threshold level (4.5 in this example). Tricks like hysteresis could be of help to prevent trades occurring in such situations.
     
    #2190     Jun 19, 2020
    Elder likes this.