Eugene,

Sorry it took me a while to get back to this topic. Thank you 
for implementing the Kalman filter. I have tested the implementation and it 
looks good. Actually, as I will explain below, Kalman filter is far more 
intuitive to set up than the EMA and hugely more powerful.
  
In EMA the averaging parameter K is constant and determined from the desired 
period length. Usually the period length is chosen somewhat arbitrarily, 
supposedly long enough to smooth out the time series noise. But what if you do 
not know what the future noise levels will be? What if the future noise levels 
change? When they do, the EMA may lag the fast changing signal or not average 
enough a slowing one. There is very little intuition to setting the EMA for the 
future unknown signal.


Let standard deviation of prices before the averaging be ex ante tracking error 
and standard deviation of prices around the average be ex post tracking error. 
In KF, the averaging parameter K = (V + Q) / (V + Q + M). Here, V is the ex 
ante 
predicted tracking error and is computed by the algorirthm at each time step. Q 
is the process noise and M is the measurement noise and both are set by the 
user. The reason Q and M got their names has to do with their origins in 
engineering. In reality, for our purposes, M is the maximum ex post tracking 
error that you are willing to accept from your filter.

If you are filtering price time series (denominated in dollars) and want your 
filter to give you the smoothest possible time series that is most of the time 
within, for example, $0.5 (or less) of the actual observed prices, then you set 
M = (0.5)^2. If the price volatility will increase, V will increase and K in 
the 
above formula will increase to maintain the desired tracking error and vice 
versa. Thus, unlike EMA, KF is adaptive to changing volatility.

By increasing the value of Q, the tracking error will be pushed closer to M.

If, instead of choosing a constant tracking M, you let M be proportional to the 
ex ante tracking error, i.e. M = b*(V+Q), then K = 1/ (1+ b), where b is 
proportionality constant. Then K is constant and KF reduces to EMA. As you can 
see, EMA is a special case of KF, where you are willing to accept a randomly 
varying tracking error.

I hope that Kalman helps you in your strategies.


________________________________
From: nonlinear5 <[email protected]>
To: JBookTrader <[email protected]>
Sent: Wed, December 1, 2010 10:25:54 AM
Subject: [JBookTrader] Re: Status of Kalman filter?

By experimentation, I was able to match EMA filters with the Kalman
filters:
http://groups.google.com/group/jbooktrader/web/EMAvsKalman.PNG

In this image,
"price" is 1-second price
"emafast" is the 60-second exponential average of price
"emaslow" is the 600-second exponential average of price
"kalmanfast" is the kalman filter of price with the measurement noise
set to 1
"kalmanslow" is the kalman filter of price with the measurement noise
set to 100

The good news is the EMA and Kalman filters closely match. The bad
news is that the Kalman filter is less intuitive to set up. In
particular, the error 100 works for the price, but to get comparable
smoothing for balance, the error should probably be in the single
digits. By contrast, using the EMA requires setting the period length,
and works regardless of the range of data.

-- 
You received this message because you are subscribed to the Google Groups 
"JBookTrader" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jbooktrader?hl=en.


      

-- 
You received this message because you are subscribed to the Google Groups 
"JBookTrader" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jbooktrader?hl=en.

Reply via email to