How should one correctly forward adjust historical prices given a time series of Open, High, Low, Close, Return?
Suppose that the data series is given below ('1' is the oldest interval; '5' is the latest one):
interval open high low close return
---------------------------------------
1 17.36 17.54 17.17 17.19 0.00%
2 17.38 17.41 17.2 17.28 0.52%
3 17.62 17.64 17.35 17.36 0.46%
4 17.42 17.6 17.34 17.58 1.27%
5 17.41 17.61 17.29 17.45 -0.74%
I thought of using the following approach. Start with an arbitrary 100
value for all fields on interval 1. So for interval = 1
, we have:
interval adj_open adj_high adj_low adj_close return
---------------------------------------------------
1 100 100 100 100
Then, for the following interval (interval 2
), we first calculate the adjusted close based on the return
from interval 1
to interval 2
:
adjusted_close_on_interval_2 = 100 * (1 + 0.52 / 100) = 100.5235
Then, we can calculate the adjusted open, high, and low on interval 2 based on the percentage distances from the actual close on interval 2
to these figures:
open_to_close_ratio_on_interval_2 = (17.38 - 17.28) / 17.28 = 0.5787%`
hence,
adjusted_open_on_interval_2 = 100.5235 * ( 1 + 0.5787% ) = 101.10529
In the same manner:
high_to_close_ratio_on_interval_2 = (17.41 - 17.28) / 17.28 = 0.7523%
hence,
adjusted_high_on_interval_2 = 100.5235 * ( 1 + 0.7523% ) = 101.2798
and
low_to_close_ratio_on_interval_2 = (17.2 - 17.28) / 17.28 = -0.4629%`
hence,
adjusted_high_on_interval_2 = 100.5235 * ( 1 + ( -0.4629% ) ) = 100.05817
In the same manner, we continue for the rest of the intervals and get the table of the forward adjusted prices:
interval adj_open adj_high adj_low adj_close
--------------------------------------------
1 100 100 100 100
2 101.11 101.28 100.06 100.52
3 102.5 102.62 100.93 100.99
4 101.34 102.39 100.87 102.27
5 101.28 102.44 100.58 101.51
(imagine that this time series continues for thousands of intervals...)
My questions:
Is this a valid approach for forward-adjusting of prices? Do you see any flaws in it? For example, suppose I adjust this way over the course of (say) 10 years of data. And suppose that I have a simulated trade where I buy in the ADJUSTED_LOW price of interval = 50 and sell at the ADJUSTED_CLOSE of interval = 359; will the trade % return that will be calculated from the adjusted prices, be the same as the return I would have gotten in practice, trading 'normal' prices? (neglecting t-costs etc)
Do you agree that this method would be valid even when a stock has a split or a dividend? (the new adjusted prices are ALWAYS calculated based on the interval's return, and this will be correct as it is independent of any corporate actions). If you disagree with this statement, please explain.
Are there alternative ways to forward adjust prices that you can suggest? Better approaches?
c++
/python
etc). the key is how do you forward adjust stock prices? $\endgroup$