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
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
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.
As has already been alluded to, it's unlikely to be an issue unless you are managing relatively large amounts of money. GAT
GAT, I would strongly recommend you type hint all of your Python code. It saved me hours of debugging as my code base grew.
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"
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?
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
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.