Несколько 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
), и многое другое.
ascii2fts
| boxcox
| convertto
| datestr
| diff
| fillts
| filter
| fints
| fts2mat
| ftsbound
| lagts
| leadts
| peravg
| resamplets
| smoothts
| toannual
| todaily
| tomonthly
| toquarterly
| tosemi
| toweekly
| tsmovavg