Main Content

adjustedClosingPrices

Adjust closing stock prices for splits and cash dividends

Since R2024a

Description

TT2 = adjustedclosingprices(TT1) adjusts raw closing prices for splits and cash dividends.

adjustedclosingprices adjusts raw closing prices for stock splits by dividing by the split ratio (for example, dividing by 2 for a 2:1 split or 1.5 for a 3:2 split). adjustedclosingprices adjusts closing prices for cash dividends by scaling them by a dividend multiplier in which it expresses the dividend as a fraction of the last closing price preceding the ex-dividend date. To avoid negative prices, this scaling operation adheres to the Center for Research in Security Prices (CRSP) standard.

example

TT2 = adjustedclosingprices(___,Name=Value) specifies options using one or more name-value arguments in addition to the input arguments in the previous syntax.

example

Examples

collapse all

This example shows how to adjust a time series of closing stock prices that includes a 2-for-1 split and pays a 0.17 cash dividend. First, you store the closing prices, split ratios, and cash dividends in timetable TT1 and then pass them to adjustedClosingPrices.

Create a timetable (TT1) for a single stock. TT1 contains raw closing prices, split ratios, and cash dividends, but TT1 can also contain other variables such as Open, High, Low, Volume, and so on.

dates = [(datetime(2023,2,18) + caldays(0:4)') ; datetime(2023,2,[25 26]')];
close = [100 102.79 53.12  53.01  53.10  52.20  52.22]';
split = [1 1 2 1 1 1 1]';
dividend = [0 0 0 0 0 0.17 0]';
TT1 = timetable(close,split,dividend,RowTimes=dates,VariableNames=["Close" "Split" "Dividend"])
TT1=7×3 timetable
       Time        Close     Split    Dividend
    ___________    ______    _____    ________

    18-Feb-2023       100      1           0  
    19-Feb-2023    102.79      1           0  
    20-Feb-2023     53.12      2           0  
    21-Feb-2023     53.01      1           0  
    22-Feb-2023      53.1      1           0  
    25-Feb-2023      52.2      1        0.17  
    26-Feb-2023     52.22      1           0  

To adjust the closing stock prices for the splits and cash dividends in TT1, use adjustedClosingPrices and output the results in TT2.

TT2 = adjustedClosingPrices(TT1)
TT2=7×1 timetable
       Time        Adjusted_Close
    ___________    ______________

    18-Feb-2023        49.84     
    19-Feb-2023        51.23     
    20-Feb-2023        52.95     
    21-Feb-2023        52.84     
    22-Feb-2023        52.93     
    25-Feb-2023         52.2     
    26-Feb-2023        52.22     

The output timetable TT2 has the same dates as TT1, but TT2 contains only the adjusted closing prices. However, since TT1 and TT2 share the same dates, you can combine the data of both timetables.

[TT1 TT2]
ans=7×4 timetable
       Time        Close     Split    Dividend    Adjusted_Close
    ___________    ______    _____    ________    ______________

    18-Feb-2023       100      1           0          49.84     
    19-Feb-2023    102.79      1           0          51.23     
    20-Feb-2023     53.12      2           0          52.95     
    21-Feb-2023     53.01      1           0          52.84     
    22-Feb-2023      53.1      1           0          52.93     
    25-Feb-2023      52.2      1        0.17           52.2     
    26-Feb-2023     52.22      1           0          52.22     

Input Arguments

collapse all

Timetable containing the raw closing stock prices to adjust for splits and cash dividends, specified as a timetable.

Note

TT1 must have datetime stamps in strictly ascending or descending order. All observations in TT1 are associated with whole dates that you specify as datetime values but have no HH:MM:SS time component.

Optionally, TT1 can also contain split ratios and cash dividends per share.

Data Types: timetable

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: TT2 = adjustedClosingPrices(TT1,ClosingPriceVariable="closong_price_variable")

Variable specification to select the raw closing price variable from TT1, specified as a positive scalar numeric index, a scalar variable name (string or character vector), or a logical vector with one true element.

Note

If no variable contains "Close", then this function issues an error.

Data Types: double | char | string | logical

Variable specification to select the cash dividend variable from TT1, specified as a positive scalar numeric index, a scalar variable name (string or character vector), or a logical vector with one true element.

Note

If no variable contains "Dividend", then this function does not make a dividend adjustment.

Data Types: double | char | string | logical

Variable specification to select the split ratio variable from TT1, specified as a positive scalar numeric index, a scalar variable name (string or character vector), or a logical vector with one true element.

Note

If no variable contains "Split", then this function makes split adjustment.

Data Types: double | char | string | logical

Output Arguments

collapse all

Timetable with the same dates as TT1 containing adjusted closing prices associated with the raw closing prices of variable ClosingPriceVariable, returned as a timetable.

If the raw closing price variable in TT1 contains "Close", then the function obtains the adjusted closing price variable by inserting "Adjusted_" immediately before "Close". Otherwise, the function obtains the adjusted closing price variable by prepending "Adjusted_" to the variable in TT1 containing the raw closing prices. If the function makes no adjustments, it copies the raw closing prices of TT1 to the adjusted closing prices of TT2. If the dates of TT1 are in ascending or descending order, then the dates of TT2 are in ascending or descending order, respectively.

The naming convention of the adjusted closing price variable in TT2 is:

  • If the closing price variable in TT1 is "XYZ_Close" (TT1.XYZ_Close), then the adjusted closing price variable in TT2 is "XYZ_Adjusted_Close" (TT2.XYZ_Adjusted_Close).

  • If the closing price variable in TT1 is "XYZ" (TT1.XYZ), then the adjusted closing price variable in TT2 is "Adjusted_XYZ" (TT2.Adjusted_XYZ).

Version History

Introduced in R2024a