A financial time series object is used as if it were a MATLAB® structure. (See the MATLAB documentation for a description of MATLAB structures or how to use MATLAB in general.)
This part of the tutorial assumes that you know how to use MATLAB and are familiar with MATLAB structures. The terminology is similar to that of a MATLAB structure. The financial time series object term component is interchangeable with the MATLAB structure term field.
A financial time series object always contains three component names:
desc (description field), freq (frequency
indicator field), and dates (date vector). If you build the
object using the constructor fints, the default value for the description field is a blank character vector (''). If you build the
object from a text data file using ascii2fts, the default is the name
of the text data file. The default for the frequency indicator field is 0 (Unknown frequency).
Objects created from operations can default the setting to 0. For
example, if you decide to pick out values selectively from an object, the frequency
of the new object might not be the same as that of the object from which it
came.
The date vector
dates does not have a default set of values. When you create an
object, you have to supply the date vector. You can change the date vector afterward
but, at object creation time, you must provide a set of dates.
The final component of a financial time series object is one or more data series vectors. If you do not supply a name for the data series, the default
name is series1. If you have multiple data series in an object
and do not supply the names, the default is the name series followed by a number,
for example, series1, series2, and
series3.
Here is an exercise on how to extract data from a financial time series object. As mentioned before, you can think of the object as a MATLAB structure. Highlight each line in the exercise in the MATLAB Help browser, press the right mouse button, and select Evaluate Selection to execute it.
To begin, create a financial time series object called
myfts:
dates = (datenum('05/11/99'):datenum('05/11/99')+100)'; data_series1 = exp(randn(1, 101))'; data_series2 = exp(randn(1, 101))'; data = [data_series1 data_series2]; myfts = fints(dates, data)
The myfts object looks like this:
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints (line 165)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
myfts =
desc: (none)
freq: Unknown (0)
'dates: (101)' 'series1: (101)' 'series2: (101)'
'11-May-1999' [ 2.8108] [ 0.9323]
'12-May-1999' [ 0.2454] [ 0.5608]
'13-May-1999' [ 0.3568] [ 1.5989]
'14-May-1999' [ 0.5255] [ 3.6682]
'15-May-1999' [ 1.1862] [ 5.1284]
'16-May-1999' [ 3.8376] [ 0.4952]
'17-May-1999' [ 6.9329] [ 2.2417]
'18-May-1999' [ 2.0987] [ 0.3579]
'19-May-1999' [ 2.2524] [ 3.6492]
'20-May-1999' [ 0.8669] [ 1.0150]
'21-May-1999' [ 0.9050] [ 1.2445]
'22-May-1999' [ 0.4493] [ 5.5466]
'23-May-1999' [ 1.6376] [ 0.1251]
'24-May-1999' [ 3.4472] [ 1.1195]
'25-May-1999' [ 3.6545] [ 0.3374]...
There are more dates in the object; only the first few lines are shown here.
Note
The actual data in your series1 and
series2 differs from the above because of the use of
random numbers.
Now create another object with only the values for
series2:
srs2 = myfts.series2
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
srs2 =
desc: (none)
freq: Unknown (0)
'dates: (101)' 'series2: (101)'
'11-May-1999' [ 0.9323]
'12-May-1999' [ 0.5608]
'13-May-1999' [ 1.5989]
'14-May-1999' [ 3.6682]
'15-May-1999' [ 5.1284]
'16-May-1999' [ 0.4952]
'17-May-1999' [ 2.2417]
'18-May-1999' [ 0.3579]
'19-May-1999' [ 3.6492]
'20-May-1999' [ 1.0150]
'21-May-1999' [ 1.2445]
'22-May-1999' [ 5.5466]
'23-May-1999' [ 0.1251]
'24-May-1999' [ 1.1195]
'25-May-1999' [ 0.3374]...
The new object srs2 contains all the dates in
myfts, but the only data series is
series2. The name of the data series retains its name from the
original object, myfts.
Note
The output from referencing a data series field or indexing a financial time series object is always another financial time series object. The exceptions are referencing the description, frequency indicator, and dates fields, and indexing into the dates field.
The function fts2mat extracts the dates and/or
the data series values from an object and places them into a vector or a matrix. The
default behavior extracts just the values into a vector or a matrix. Look at the
next example:
srs2_vec = fts2mat(myfts.series2)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/fts2mat (line 29)
srs2_vec =
0.9323
0.5608
1.5989
3.6682
5.1284
0.4952
2.2417
0.3579
3.6492
1.0150
1.2445
5.5466
0.1251
1.1195
0.3374...
If you want to include the dates in the output matrix, provide a second input
argument and set it to 1. This results in a matrix whose first
column is a vector of serial date numbers:
format long g srs2_mtx = fts2mat(myfts.series2, 1)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/fts2mat (line 29)
srs2_mtx =
730251 0.932251754559576
730252 0.560845677519876
730253 1.59888712183914
730254 3.6681500883527
730255 5.12842215360269
730256 0.49519254119977
730257 2.24174134286213
730258 0.357918065917634
730259 3.64915665824198
730260 1.01504236943148
730261 1.24446420606078
730262 5.54661849025711
730263 0.12507959735904
730264 1.11953883096805
730265 0.337398214166607
The vector srs2_vec contains series2 values.
The matrix srs2_mtx contains dates in the first column and the
values of the series2 data series in the second. Dates in the
first column are in serial date format. Serial date format is a representation of
the date character vector format (for example, serial date = 1 is
equivalent to 01-Jan-0000). (The serial date vector can include time-of-day
information.)
The long g display format displays the numbers without
exponentiation. (To revert to the default display format, use format
short. (See the format for a description of
MATLAB display formats.) Remember that both the vector and the matrix have
101 rows of data as in the original object myfts but are shown
truncated here.
ascii2fts | boxcox | convertto | datestr | diff | fillts | filter | fints | fts2mat | ftsbound | lagts | leadts | peravg | resamplets | smoothts | toannual | todaily | tomonthly | toquarterly | tosemi | toweekly | tsmovavg