[R-SIG-Finance] adjustOHLC.R issues
Ernie Stokely
wizardchef at gmail.com
Tue Apr 12 20:59:20 CEST 2016
Yes, TTR is 0.23.1 and quantmod is 0.4.5. I think my question boils down
to the difference between using use.Adjusted = TRUE or FALSE. I have
found prior articles that talk about why the adjusted close values from
the two methods do not always match, so I conclude that it depends on
how Yahoo is computing their adjusted close values and the underlying
data. Since my code is used to compare various innovations and I am not
concerned about absolute values, I think either method will give
adjusted data that are suitable for my purposes.
Ernie
> Joshua Ulrich <mailto:josh.m.ulrich at gmail.com>
> April 12, 2016 at 7:21 AM
> On Mon, Apr 11, 2016 at 8:48 PM, Ernie Stokely<wizardchef at gmail.com> wrote:
>> OK, I am prepared for the stones that will be thrown at me for being naive,
>> but here goes anyway.
>>
>> Most of the references on adjusting OHLC values for splits and dividends say
>> to use the following adjustment:
>>
>> K = Ca/C
>> Om = K * O
>> Hm = K * H
>> Lm = K * L
>> Cm = K * C = Ca
>>
>> where: Ca = adjusted close, OHLC are the unadjusted values, and OmHmLmCm are
>> the modified (adjusted) values of OHLC.
>>
> The adjusted close from Yahoo used to only have 2 decimal places, so
> what you describe would have been subject to massive loss of accuracy
> when there were many adjustments. That's the entire reason I wrote
> TTR::adjRatios and why quantmod::adjustOHLC exists.
>
> That said, they provide more decimal places now, and adjustOHLC
> provides a use.Adjusted argument, so you could have used the
> adjustments you describe above by calling: adjustOHLC(VTI,
> use.Adjusted=TRUE).
>
>> If I use adjustOHLC() in quantmod to do the adjustment I find these are not
>> the equations being used. For example, for VTI here is the unadjusted
>> OHLCadjC data read from Yahoo:
>>
>> VTI.Open VTI.High VTI.Low VTI.Close VTI.Volume VTI.Adjusted
>> 2006-03-01 128.15 128.90 127.79 128.70 216400 52.56795
>> 2006-03-02 128.50 128.76 128.01 128.61 148800 52.53119
>> 2006-03-03 128.26 129.43 128.20 128.40 323200 52.44541
>> 2006-03-06 128.64 128.64 127.27 127.46 279800 52.06147
>> 2006-03-07 127.15 127.31 126.65 126.94 218400 51.84907
>> 2006-03-08 126.72 127.49 126.20 127.30 491800 51.99612
>>
>> If I apply adjustOHLC() to these data I get:
>>
>> VTI.Open VTI.High VTI.Low VTI.Close VTI.Volume VTI.Adjusted
>> 2006-03-01 59.15007 59.49625 58.98391 59.40394 216400 52.56795
>> 2006-03-02 59.31162 59.43163 59.08545 59.36240 148800 52.53119
>> 2006-03-03 59.20084 59.74088 59.17315 59.26546 323200 52.44541
>> 2006-03-06 59.37624 59.37624 58.74389 58.83159 279800 52.06147
>> 2006-03-07 58.68851 58.76235 58.45772 58.59158 218400 51.84907
>> 2006-03-08 58.49003 58.84544 58.25001 58.75774 491800 51.99612
>>
> Works fine for me using the latest quantmod and TTR on CRAN:
>
> R> getSymbols("VTI", from="2006-03-01")
> [1] "VTI"
> R> first(VTI)
> VTI.Open VTI.High VTI.Low VTI.Close VTI.Volume VTI.Adjusted
> 2006-03-01 128.15 128.9 127.79 128.7 216400 52.56795
> R> first(adjustOHLC(VTI))
> VTI.Open VTI.High VTI.Low VTI.Close VTI.Volume VTI.Adjusted
> 2006-03-01 52.3433 52.64964 52.19626 52.56795 216400 52.56795
>
> Perhaps you're using an older version of one/both packages?
>
>> Obviously, VTI.Adjusted (Ca) is not equal to VTI.Close (Cm) as required by
>> the formula above. I have a colleague who has been trading for 40 years and
>> he says this is an erroneous result (that Cm must equal Ca). When I explore
>> the package reference file for adjustOHLC() I see this paragraph:
>>
>> "New columns are derived by taking the ratio of adjusted value to original
>> Close, and multiplying by the difference of the respective column and the
>> original Close. This is then added to the modified Close column to arrive at
>> the remaining adjusted Open, High, Low column values."
>>
>> I am not quite sure how to translate this verbal description into an
>> equation, but it doesn't sound like the same correction I see recommended
>> elsewhere and described at the beginning of this note.
>>
>> Can someone shed some light on this discrepancy or send me a link to more
>> enlightenment? Thanks in advance.
>>
> Yahoo describes their adjusted close column here:
> https://help.yahoo.com/kb/finance/SLN2311.html
>
>> Ernie
>>
>> _______________________________________________
>> R-SIG-Finance at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>> -- Subscriber-posting only. If you want to post, subscribe first.
>> -- Also note that this is not the r-help list where general R questions
>> should go.
>
>
>
> Ernie Stokely <mailto:wizardchef at gmail.com>
> April 11, 2016 at 8:48 PM
> OK, I am prepared for the stones that will be thrown at me for being
> naive, but here goes anyway.
>
> Most of the references on adjusting OHLC values for splits and
> dividends say to use the following adjustment:
>
> K = Ca/C
> Om = K * O
> Hm = K * H
> Lm = K * L
> Cm = K * C = Ca
>
> where: Ca = adjusted close, OHLC are the unadjusted values, and
> OmHmLmCm are the modified (adjusted) values of OHLC.
>
> If I use adjustOHLC() in quantmod to do the adjustment I find these
> are not the equations being used. For example, for VTI here is the
> unadjusted OHLCadjC data read from Yahoo:
>
> VTI.Open VTI.High VTI.Low VTI.Close VTI.Volume VTI.Adjusted
> 2006-03-01 128.15 128.90 127.79 128.70 216400 52.56795
> 2006-03-02 128.50 128.76 128.01 128.61 148800 52.53119
> 2006-03-03 128.26 129.43 128.20 128.40 323200 52.44541
> 2006-03-06 128.64 128.64 127.27 127.46 279800 52.06147
> 2006-03-07 127.15 127.31 126.65 126.94 218400 51.84907
> 2006-03-08 126.72 127.49 126.20 127.30 491800 51.99612
>
> If I apply adjustOHLC() to these data I get:
>
> VTI.Open VTI.High VTI.Low VTI.Close VTI.Volume VTI.Adjusted
> 2006-03-01 59.15007 59.49625 58.98391 59.40394 216400 52.56795
> 2006-03-02 59.31162 59.43163 59.08545 59.36240 148800 52.53119
> 2006-03-03 59.20084 59.74088 59.17315 59.26546 323200 52.44541
> 2006-03-06 59.37624 59.37624 58.74389 58.83159 279800 52.06147
> 2006-03-07 58.68851 58.76235 58.45772 58.59158 218400 51.84907
> 2006-03-08 58.49003 58.84544 58.25001 58.75774 491800 51.99612
>
> Obviously, VTI.Adjusted (Ca) is not equal to VTI.Close (Cm) as
> required by the formula above. I have a colleague who has been trading
> for 40 years and he says this is an erroneous result (that Cm must
> equal Ca). When I explore the package reference file for adjustOHLC()
> I see this paragraph:
>
> "New columns are derived by taking the ratio of adjusted value to
> original Close, and multiplying by the difference of the respective
> column and the original Close. This is then added to the modified
> Close column to arrive at the remaining adjusted Open, High, Low
> column values."
>
> I am not quite sure how to translate this verbal description into an
> equation, but it doesn't sound like the same correction I see
> recommended elsewhere and described at the beginning of this note.
>
> Can someone shed some light on this discrepancy or send me a link to
> more enlightenment? Thanks in advance.
>
> Ernie
>
>
[[alternative HTML version deleted]]
More information about the R-SIG-Finance
mailing list