the initial challenge was integrating it with my current backend.
here's roughly the workflow I had:
> calculate signals for all assets (within universe)
> rank signals
> pick from top/bottom ranked signals for today's exposures
> adjust daily exposures based on threshold diff from expected exposures
however, to be truly delta-neutral at all times, I need to be continuously evaluating signal based on current holdings.
for example, if I am going long/short the top/bottom deciles, I only care for signal before it is ranked, since after I will go short even if the signal is positive, to achieve that neutrality (there's different methods but for now I will keep this).
in a highly correlated asset class like crypto, its unlikely I can have quality equal amount of long/short momo signals in the top 100 by market cap (or wtv threshold you use), so we need to force it.
so I had to design almost a secondary signal to infer my allocation, on my current design of inventory management.
the weight of the signal tells me to allocate roughly 99% of size.
the realized volatility is around 68%.
so the target position size is (target_vol / max_pos) / current_vol * port_size * signal weight
(0.4 / 1) / 0.68 * 100 * 1 = $59
the quantities align , and dont need any adjustment , because we are using a daily buffer of 10% between our target size and the actual size on any given day.
so if we measure the continuous signal of a simple ma crossover (for simplicity) , I can see that it is pretty noisy.
there seems to be some relationship there, especially on the tails , but pretty weak close to 0, as expected.
however there's something missing here.
I am measuring forward absolute returns, which is influenced by the asset's own volatility at the time.
earlier points will have higher vol as market caps were lower and things were a lot more jumpy.
I noticed that I was scaling the ma_distance into a -1 , 1 range, which is fine, but I dont want to do that yet.
I reverted it back to a sma absolute distance, and this is what it looks like.
however, as I am normalizing the return, I think I should also normalize the distance, to make sure it is fairly measured across different regimes and assets.