Работа с объектами финансовых временных рядов

Введение

Объект финансовых временных рядов используется, как если бы это был MATLAB® структура. (Описание структур MATLAB или как использовать MATLAB в целом см. в документации MATLAB.)

Эта часть руководства предполагает, что вы знаете, как использовать MATLAB и знакомы со структурами MATLAB. Терминология подобна терминологии структуры MATLAB. Компонент термина объекта финансовых временных рядов является взаимозаменяемым с полем термина структуры MATLAB.

Структура объекта финансовых временных рядов

Объект финансовых временных рядов всегда содержит три имени компонентов: desc (поле описания), freq(поле индикатора частоты), и dates (вектор дат). Если вы создаете объект с помощью конструктора fints, значение по умолчанию для поля описания является пустым вектором символов (''). Если вы создаете объект из текстового файла данных, используя ascii2fts, по умолчанию это имя текстового файла данных. Значение по умолчанию для поля индикатора частоты 0 (Unknown частота). Объекты, созданные из операций, могут задать по умолчанию значение 0. Например, если вы решите выборочно выбрать значения из объекта, частота нового объекта может быть не такой, как у объекта, из которого он пришел.

Вектор дат dates не имеет множества значений по умолчанию. Когда вы создаете объект, вы должны задать вектор даты. Вектор дат можно изменить после, но во время создания объекта необходимо указать набор дат.

Конечным компонентом объекта финансовых временных рядов является один или несколько векторов ряда данных. Если вы не задаете имя для ряда данных, то имя по умолчанию series1. Если у вас есть несколько рядов данных в объекте и вы не задаете имена, по умолчанию это серия имен, за которой следует число, например series1, series2, и series3.

Извлечение данных

Вот упражнение по извлечению данных из объекта финансовых временных рядов. Как упоминалось ранее, можно представить объект как структуру MATLAB. Выделите каждую строку в упражнении в браузере MATLAB Help, нажмите правую кнопку мыши и выберите Evaluate Selection, чтобы выполнить его.

Для начала создайте объект финансовых временных рядов с именем 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 объект выглядит следующим образом:

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). (Вектор последовательной даты может включать информацию о времени суток.)

The long g формат отображения отображает числа без экспоненции. (Чтобы вернуться к формату отображения по умолчанию, используйте format short. (См. format описание форматов отображения MATLAB.) Помните, что и вектор, и матрица имеют 101 строку данных, как в исходном объекте myfts но показаны здесь усеченными.

См. также

| | | | | | | | | | | | | | | | | | | | |

Похожие темы