| 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 | ![]() |