Financial Time Series Toolbox | ![]() ![]() |
Fill missing values in time series
Syntax
newfts = fillts(oldfts,fill_method
) newfts = fillts(oldfts,fill_method
, newdates
) newfts = fillts(oldfts,fill_method
, newdates
, {'T1','T2',...}) newfts = fillts(oldfts,fill_method
, newdates
, 'SPAN', {'TS','TE'}, delta) newfts = fillts(...sortmode
)
Arguments
Description
newfts = fillts(oldfts,
replaces missing values (represented by fill_method
)
NaN
) in the financial time series object oldfts
with real values, using either a constant or the interpolation process indicated by fill_method
.
newfts = fillts(oldfts,
replaces all the missing values on the specified dates fill_method
, newdates
)
newdates
added to the financial time series oldfts
with new values. The values may be a single constant or values obtained through the interpolation process designated by fill_method
. If any of the dates in newdates
exists in oldfts
, the existing one has precedence.
newfts = fillts(oldfts,
additionally allows the designation of specific times of day for addition or replacement of data.fill_method
, newdates
, {'T1','T2',...})
newfts = fillts(oldfts,
is similar to the previous format except that you designate only a start time and an end time. You follow these times with a spanning time interval, fill_method
, newdates
, 'SPAN', {'TS','TE'},
delta)
delta
.
If you specify only one date for newdates
, specifying a start and end time generates only times for that specific date.
newfts = fillts(... sortmode)
additionally denotes whether you want the order of the dates in the output object to stay the same as in the input object or to be sorted chronologically.
sortmode = 0
(unsorted) appends any new dates to the end. The interpolation process that calculates the values for the new dates works on a sorted object. Upon completion, the existing dates are reordered as they were originally, and the new dates are appended to the end.
sortmode = 1
sorts the output. After interpolation, no reordering of the date sequence occurs.
Examples
Create a financial time series object with missing data in the fourth and fifth rows.
dates = ['01-Jan-2001';'01-Jan-2001'; '02-Jan-2001';... '02-Jan-2001'; '03-Jan-2001';'03-Jan-2001']; times = ['11:00';'12:00';'11:00';'12:00';'11:00';'12:00']; dates_times = cellstr([dates, repmat(' ',size(dates,1),1),... times]); OpenFts = fints(dates_times,[(1:3)'; nan; nan; 6],{'Data1'},1,... 'Open Financial Time Series');
OpenFts = desc: Open Financial Time Series freq: Daily (1) 'dates: (6)' 'times: (6)' 'Data1: (6)' '01-Jan-2001' '11:00' [ 1] ' " ' '12:00' [ 2] '02-Jan-2001' '11:00' [ 3] ' " ' '12:00' [ NaN] '03-Jan-2001' '11:00' [ NaN] ' " ' '12:00' [ 6]
Example1. Fill the missing data in OpenFts
using cubic interpolation.
FilledFts = fillts(OpenFts,'cubic') FilledFts = desc: Filled Open Financial Time Series freq: Unknown (0) 'dates: (6)' 'times: (6)' 'Data1: (6)' '01-Jan-2001' '11:00' [ 1] ' " ' '12:00' [ 2] '02-Jan-2001' '11:00' [ 3] ' " ' '12:00' [ 3.0663] '03-Jan-2001' '11:00' [ 5.8411] ' " ' '12:00' [ 6.0000]
Example 2. Fill the missing data in OpenFts
with a constant value.
FilledFts = fillts(OpenFts,0.3) FilledFts = desc: Filled Open Financial Time Series freq: Unknown (0) 'dates: (6)' 'times: (6)' 'Data1: (6)' '01-Jan-2001' '11:00' [ 1] ' " ' '12:00' [ 2] '02-Jan-2001' '11:00' [ 3] ' " ' '12:00' [ 0.3000] '03-Jan-2001' '11:00' [ 0.3000] ' " ' '12:00' [ 6]
Example 3. You can use fillts
to identify a specific time on a specific day for the replacement of missing data. This example shows how to replace missing data at 12:00 on January 2 and 11:00 on January 3.
FilltimeFts = fillts(OpenFts,'c',... {'02-Jan-2001';'03-Jan-2001'}, {'12:00';'11:00'},0) FilltimeFts = desc: Filled Open Financial Time Series freq: Unknown (0) 'dates: (6)' 'times: (6)' 'Data1: (6)' '01-Jan-2001' '11:00' [ 1] ' " ' '12:00' [ 2] '02-Jan-2001' '11:00' [ 3] ' " ' '12:00' [ 3.0663] '03-Jan-2001' '11:00' [ 5.8411] ' " ' '12:00' [ 6.0000]
Example 4. Use a spanning time interval to add an additional day to OpenFts
.
SpanFts = fillts(OpenFts,'c','04-Jan-2001','span',... {'11:00';'12:00'},60,0) SpanFts = desc: Filled Open Financial Time Series freq: Unknown (0) 'dates: (8)' 'times: (8)' 'Data1: (8)' '01-Jan-2001' '11:00' [ 1] ' " ' '12:00' [ 2] '02-Jan-2001' '11:00' [ 3] ' " ' '12:00' [ 3.0663] '03-Jan-2001' '11:00' [ 5.8411] ' " ' '12:00' [ 6.0000] '04-Jan-2001' '11:00' [ 9.8404] ' " ' '12:00' [ 9.9994]
See Also
interp1
in the MATLAB documentation
![]() | fieldnames | filter | ![]() |