Объект финансового временного ряда используется как структура MATLAB ®. (Описание структур MATLAB или использование MATLAB в целом см. в документации MATLAB.)
В этой части учебного пособия предполагается, что вы знаете, как использовать MATLAB, и знакомы со структурами MATLAB. Терминология аналогична терминологии структуры MATLAB. Компонент термина объекта финансового временного ряда является взаимозаменяемым с полем термина структуры MATLAB.
Объект финансового временного ряда всегда содержит три имени компонентов: desc (поле описания), freq(поле индикатора частоты), и dates (вектор даты). При построении объекта с помощью конструктора fints, значением по умолчанию для поля описания является пустой символьный вектор (''). При построении объекта из текстового файла данных с помощью ascii2fts, по умолчанию - имя текстового файла данных. Значение по умолчанию для поля индикатора частоты: 0 (Unknown частота). Объекты, созданные из операций, могут иметь значение по умолчанию 0. Например, если выбрать значения выборочно из объекта, частота нового объекта может отличаться от частоты объекта, из которого он получен.
Вектор даты
dates не имеет набора значений по умолчанию. При создании объекта необходимо указать вектор даты. После этого можно изменить вектор дат, но во время создания объекта необходимо указать набор дат.
Последним компонентом объекта финансового временного ряда является один или несколько векторов рядов данных. Если имя для серии данных не указано, по умолчанию используется имя series1. Если в объекте имеется несколько рядов данных и имена не указаны, то по умолчанию используется ряд имен, за которым следует число, например: series1, series2, и series3.
Ниже приведено упражнение по извлечению данных из объекта финансового временного ряда. Как упоминалось выше, объект можно рассматривать как структуру MATLAB. Выделите каждую строку в упражнении в браузере справки MATLAB, нажмите правую кнопку мыши и выберите «Оценить выбор» для его выполнения.
Для начала создайте объект финансового временного ряда с именем 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)
myfts объект выглядит следующим образом:
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]...
В объекте больше дат; здесь показаны только первые несколько строк.
Примечание
Фактические данные в series1 и series2 отличается от приведённого выше из-за использования случайных чисел.
Теперь создайте другой объект только со значениями для 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]...
Новый объект srs2 содержит все даты в myfts, но единственный ряд данных - series2. Имя серии данных сохраняет свое имя от исходного объекта, myfts.
Примечание
Результатом ссылки на поле серии данных или индексирования объекта финансового временного ряда всегда является другой объект финансового временного ряда. Исключениями являются ссылки на поля описания, индикатора частоты и даты, а также индексирование в поле дат.
Функция fts2mat извлекает даты и/или значения рядов данных из объекта и помещает их в вектор или матрицу. Поведение по умолчанию извлекает только значения в вектор или матрицу. Посмотрите на следующий пример:
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...
Если требуется включить даты в матрицу вывода, укажите второй входной аргумент и задайте для него значение 1. В результате получается матрица, первый столбец которой является вектором серийных номеров дат:
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
Вектор srs2_vec содержит series2 значения. Матрица srs2_mtx содержит даты в первом столбце и значения series2 серии данных во втором. Даты в первом столбце имеют формат серийных дат. Формат серийной даты является представлением формата вектора символов даты (например, серийная дата = 1 эквивалентно 01-Jan-0000). (Вектор серийной даты может включать информацию о времени суток.)
long g отображение чисел без возведения в степень. (Чтобы вернуться к формату отображения по умолчанию, используйте format short. (См. раздел format описание форматов отображения MATLAB.) Помните, что и вектор, и матрица имеют 101 строку данных, как в исходном объекте myfts но здесь показаны усеченными.
ascii2fts | boxcox | convertto | datestr | diff | fillts | filter | fints | fts2mat | ftsbound | lagts | leadts | peravg | resamplets | smoothts | toannual | todaily | tomonthly | toquarterly | tosemi | toweekly | tsmovavg