Операции финансовых временных рядов

Несколько MATLAB® функции были перегружены для работы с объектами финансовых временных рядов. Перегруженные функции включают основные функции арифметики, такие как сложение, вычитание, умножение и деление, и другие функции, такая как арифметика среднего значения, фильтр и различие. Кроме того, были разработаны конкретные методы для работы с объектом финансовых временных рядов. Для списка функций, сгруппированных по типам, введите

help ftseries

в командной строке MATLAB.

Базовая арифметика

Объекты финансовых временных рядов позволяют вам выполнять сложение, вычитание, умножение и деление, либо на целом объекте, либо на определенных полях объекта. Это функция, которую не допускают структуры MATLAB. Вы не можете делать арифметические операции на целых структурах MATLAB, только на определенных полях структуры.

Можно выполнить арифметические операции с двумя объектами финансовых временных рядов, пока они совместимы. (Все содержимое совпадает, за исключением описания и значений, связанных с серией данных.)

Примечание

Совместимые временные ряды не совпадают с равными временными рядами. Два объекта временных рядов равны, когда все, кроме полей описания, одинаковы.

Вот некоторые примеры арифметических операций над объектами финансовых временных рядов.

Загрузите MAT-файл, содержащий некоторые выборки объектов финансовых временных рядов:

load dji30short

Один из объектов в dji30short называется myfts1:

myfts1 = 

desc:  DJI30MAR94.dat
freq:  Daily (1)

'dates: (20)'  'Open: (20)' 'High: (20)' 'Low: (20)' 'Close: (20)'
'04-Mar-1994'  [ 3830.90]   [ 3868.04]  [ 3800.50]   [ 3832.30]
'07-Mar-1994'  [ 3851.72]   [ 3882.40]  [ 3824.71]   [ 3856.22]
'08-Mar-1994'  [ 3858.48]   [ 3881.55]  [ 3822.45]   [ 3851.72]
'09-Mar-1994'  [ 3853.97]   [ 3874.52]  [ 3817.95]   [ 3853.41]
'10-Mar-1994'  [ 3852.57]   [ 3865.51]  [ 3801.63]   [ 3830.62]...

Создайте другой объект финансовых временных рядов, который идентичен myfts1:

newfts = fints(myfts1.dates, fts2mat(myfts1)/100,... 
{'Open','High','Low', 'Close'}, 1, 'New FTS')
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) 
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) 

newfts = 

desc:  New FTS
freq:  Daily (1)

'dates: (20)' 'Open: (20)' 'High: (20)' 'Low: (20)' 'Close:(20)'
'04-Mar-1994'  [ 38.31]     [ 38.68]     [ 38.01]    [ 38.32]
'07-Mar-1994'  [ 38.52]     [ 38.82]     [ 38.25]    [ 38.56]
'08-Mar-1994'  [ 38.58]     [ 38.82]     [ 38.22]    [ 38.52]
'09-Mar-1994'  [ 38.54]     [ 38.75]     [ 38.18]    [ 38.53]
'10-Mar-1994'  [ 38.53]     [ 38.66]     [ 38.02]    [ 38.31]...

Выполните операцию сложения для обоих объектов временных рядов:

addup = myfts1 + newfts
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In  +  (line 22) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 

addup = 

desc:  DJI30MAR94.dat
freq:  Daily (1)

'dates: (20)'  'Open: (20)' 'High: (20)' 'Low: (20)' 'Close: (20)'
'04-Mar-1994'  [ 3869.21]   [ 3906.72]   [ 3838.51]  [ 3870.62]
'07-Mar-1994'  [ 3890.24]   [ 3921.22]   [ 3862.96]  [ 3894.78]
'08-Mar-1994'  [ 3897.06]   [ 3920.37]   [ 3860.67]  [ 3890.24]
'09-Mar-1994'  [ 3892.51]   [ 3913.27]   [ 3856.13]  [ 3891.94]
'10-Mar-1994'  [ 3891.10]   [ 3904.17]   [ 3839.65]  [ 3868.93]...

Теперь выполните операцию вычитания для обоих объектов временных рядов:

subout = myfts1 - newfts
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In  -  (line 23) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 

subout = 

desc:  DJI30MAR94.dat
freq:  Daily (1)

'dates: (20)'  'Open: (20)' 'High: (20)' 'Low: (20)' 'Close: (20)'
'04-Mar-1994'  [ 3792.59]   [ 3829.36]   [ 3762.49]  [ 3793.98]
'07-Mar-1994'  [ 3813.20]   [ 3843.58]   [ 3786.46]  [ 3817.66]
'08-Mar-1994'  [ 3819.90]   [ 3842.73]   [ 3784.23]  [ 3813.20]
'09-Mar-1994'  [ 3815.43]   [ 3835.77]   [ 3779.77]  [ 3814.88]
'10-Mar-1994'  [ 3814.04]   [ 3826.85]   [ 3763.61]  [ 3792.31]...

Операции с объектами и матрицами

Можно также выполнить операции с объектом финансовых временных рядов и матрицей или скаляром:

addscalar = myfts1 + 10000
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In  +  (line 22) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 

addscalar = 

desc:  DJI30MAR94.dat
freq:  Daily (1)

'dates: (20)'  'Open: (20)' 'High: (20)' 'Low: (20)' 'Close: (20)'
'04-Mar-1994'  [ 13830.90]  [ 13868.04]  [ 13800.50] [ 13832.30]
'07-Mar-1994'  [ 13851.72]  [ 13882.40]  [ 13824.71] [ 13856.22]
'08-Mar-1994'  [ 13858.48]  [ 13881.55]  [ 13822.45] [ 13851.72]
'09-Mar-1994'  [ 13853.97]  [ 13874.52]  [ 13817.95] [ 13853.41]
'10-Mar-1994'  [ 13852.57]  [ 13865.51]  [ 13801.63] [ 13862.70]...

Для операций с объектом и матрицей размер матрицы должен совпадать с размером объекта. Для примера матрица, которая будет вычитаться из myfts1 должен быть 20-by- 4, с myfts1 имеет 20 дат и 4 серии данных:

submtx = myfts1 - randn(20, 4)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In  -  (line 23) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 

submtx = 

desc:  DJI30MAR94.dat
freq:  Daily (1)

'dates: (20)'  'Open: (20)' 'High: (20)' 'Low: (20)' 'Close: (20)'
'04-Mar-1994'  [ 3831.33]   [ 3867.75]   [ 3802.10]  [ 3832.63]
'07-Mar-1994'  [ 3853.39]   [ 3883.74]   [ 3824.45]  [ 3857.06]
'08-Mar-1994'  [ 3858.35]   [ 3880.84]   [ 3823.51]  [ 3851.22]
'09-Mar-1994'  [ 3853.68]   [ 3872.90]   [ 3816.53]  [ 3851.92]
'10-Mar-1994'  [ 3853.72]   [ 3866.20]   [ 3802.44]  [ 3831.17]...

Арифметические операции с различными именами рядов данных

Для арифметических операций с двумя объектами, которые имеют одинаковый размер, но содержат различные имена рядов данных, требуется функция fts2mat. Эта функция извлекает значения в объекте и помещает их в матрицу или вектор, в зависимости от того, что уместно.

Чтобы увидеть пример, создайте другой объект финансовых временных рядов такого же размера, как myfts1 но с различными значениями и именами рядов данных:

newfts2 = fints(myfts1.dates, fts2mat(myfts1/10000),... 
{'Rat1','Rat2', 'Rat3','Rat4'}, 1, 'New FTS')
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  /  (line 25) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/fts2mat (line 29) 
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) 

newfts2 = 
 
    desc:  New FTS
    freq:  Daily (1)

    'dates:  (20)'    'Rat1:  (20)'    'Rat2:  (20)'    'Rat3:  (20)'    'Rat4:  (20)'
    '04-Mar-1994'     [       0.38]    [       0.39]    [       0.38]    [       0.38]
    '07-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '08-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '09-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '10-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.38]
    '11-Mar-1994'     [       0.38]    [       0.39]    [       0.38]    [       0.39]
    '14-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '15-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.38]
    '16-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.38]
    '17-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '18-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '21-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '22-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '23-Mar-1994'     [       0.39]    [       0.39]    [       0.38]    [       0.39]
    '24-Mar-1994'     [       0.38]    [       0.39]    [       0.38]    [       0.38]...

Если вы пытаетесь добавить (или вычесть и так далее) этот новый объект в myfts1ошибка указывает, что объекты не идентичны. Несмотря на то, что они содержат одни и те же даты, количество дат, количество рядов данных и частоту, эти два объекта временных рядов не имеют одинаковых имен рядов данных. Использовать fts2mat чтобы обойти эту задачу:

addother = myfts1 + fts2mat(newfts2)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/fts2mat (line 29) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In  +  (line 22) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 
 
addother = 
 
    desc:  DJI30MAR94.dat
    freq:  Daily (1)

    'dates:  (20)'    'Open:  (20)'    'High:  (20)'    'Low:  (20)'    'Close:  (20)'
    '04-Mar-1994'     [    3831.28]    [    3868.43]    [   3800.88]    [     3832.68]
    '07-Mar-1994'     [    3852.11]    [    3882.79]    [   3825.09]    [     3856.61]
    '08-Mar-1994'     [    3858.87]    [    3881.94]    [   3822.83]    [     3852.11]
    '09-Mar-1994'     [    3854.36]    [    3874.91]    [   3818.33]    [     3853.80]
    '10-Mar-1994'     [    3852.96]    [    3865.90]    [   3802.01]    [     3831.00]
    '11-Mar-1994'     [    3832.96]    [    3873.22]    [   3807.07]    [     3863.09]
    '14-Mar-1994'     [    3870.68]    [    3894.60]    [   3836.34]    [     3863.37]
    '15-Mar-1994'     [    3863.80]    [    3888.85]    [   3827.23]    [     3849.97]
    '16-Mar-1994'     [    3851.42]    [    3879.92]    [   3820.32]    [     3848.53]
    '17-Mar-1994'     [    3854.01]    [    3891.73]    [   3822.04]    [     3865.53]
    '18-Mar-1994'     [    3865.81]    [    3912.17]    [   3839.03]    [     3896.04]
    '21-Mar-1994'     [    3878.77]    [    3898.64]    [   3839.03]    [     3865.24]
    '22-Mar-1994'     [    3866.10]    [    3896.62]    [   3841.04]    [     3862.94]...

Эта операция добавляет матрицу, которая содержит содержимое ряда данных в объекте newfts2 на myfts1. Следует тщательно изучить эффекты на данные перед принятием решения об объединении объектов финансовых временных рядов таким образом.

Другие арифметические операции

В дополнение к базовым арифметическим операциям несколько других математических функций работают непосредственно с объектами финансовых временных рядов. Эти функции включают экспоненциальные (exp), естественный логарифм (log), общий логарифм (log10), и многое другое.

См. также

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

Похожие темы