exponenta event banner

convert2semiannual

Агрегирование данных по расписанию на полугодовую периодичность

Описание

пример

TT2 = convert2semiannual(TT1) агрегирует данные (например, данные, записанные ежедневно или еженедельно) до полугодовой периодичности.

пример

TT2 = convert2semiannual(___,Name,Value) указывает параметры, использующие один или несколько необязательных аргументов пары имя-значение в дополнение к входному аргументу в предыдущем синтаксисе.

Примеры

свернуть все

Применение отдельных методов агрегации к связанным переменным в timetable при сохранении согласованности между агрегированными результатами при преобразовании в полугодовую периодичность. Вы можете использовать convert2semiannual для агрегирования как внутрисуточных, так и агрегированных квартальных данных. Эти методы приводят к эквивалентным полугодичным агрегатам.

Загрузить расписание (TT) смоделированных данных цены акций и соответствующих логарифмических доходностей. Данные, хранящиеся в TT фиксируется в разное время в течение всего дня на Нью-Йоркской фондовой бирже (NYSE) в рабочие дни с 1 января 2018 года по 31 2020 декабря. Расписание TT также включает осведомленность о бизнес-календаре NYSE. Если ваше расписание не учитывает нерабочие дни (выходные, праздничные дни и закрытие рынка), добавьте информацию о бизнес-календаре с помощью addBusinessCalendar во-первых.

load('SimulatedStock.mat','TT');
head(TT)
ans=8×2 timetable
            Time            Price     Log_Return
    ____________________    ______    __________

    02-Jan-2018 11:52:11    100.71     0.0070749
    02-Jan-2018 13:23:09    103.11      0.023551
    02-Jan-2018 14:45:30    100.24     -0.028229
    02-Jan-2018 15:30:48    101.37       0.01121
    03-Jan-2018 10:02:21    101.81     0.0043311
    03-Jan-2018 11:22:37    100.17      -0.01624
    03-Jan-2018 14:45:20     99.66    -0.0051043
    03-Jan-2018 14:55:39    100.12     0.0046051

Использовать convert2quarterly для агрегирования внутрисуточных цен и возврата к квартальной периодичности. Для поддержания непротиворечивости между ценами и доходностью, для любого данного квартала, агрегированные цены, сообщая последнюю зарегистрированную цену с помощью "lastvalue" и суммировать результаты суммированием всех логарифмических результатов с использованием "sum".

TT1 = convert2quarterly(TT,'Aggregation',["lastvalue" "sum"])
TT1=12×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    29-Mar-2018     108.9      0.08526 
    29-Jun-2018     96.24     -0.12358 
    28-Sep-2018    111.37      0.14601 
    31-Dec-2018     92.72     -0.18327 
    29-Mar-2019      78.7     -0.16394 
    28-Jun-2019    110.54      0.33973 
    30-Sep-2019    180.13       0.4883 
    31-Dec-2019    163.65    -0.095949 
    31-Mar-2020    177.46     0.081015 
    30-Jun-2020    168.96    -0.049083 
    30-Sep-2020    260.77      0.43398 
    31-Dec-2020    274.75     0.052223 

Использовать convert2semiannual агрегировать данные до полугодовой периодичности и сравнивать результаты двух различных подходов. Первый подход вычисляет полугодовые результаты путем агрегирования квартальных агрегатов, а второй подход вычисляет полугодовые результаты путем прямого агрегирования исходных данных внутри дня. Обратите внимание, что convert2semiannual сообщает результаты за последний рабочий день июня и декабря.

tt1 = convert2semiannual(TT1,'Aggregation',["lastvalue" "sum"])  % Quarterly to semiannual
tt1=6×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    29-Jun-2018     96.24    -0.038325 
    31-Dec-2018     92.72    -0.037261 
    28-Jun-2019    110.54      0.17579 
    31-Dec-2019    163.65      0.39235 
    30-Jun-2020    168.96     0.031932 
    31-Dec-2020    274.75       0.4862 

tt2 = convert2semiannual(TT ,'Aggregation',["lastvalue" "sum"])  % Intra-daily to semiannual
tt2=6×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    29-Jun-2018     96.24    -0.038325 
    31-Dec-2018     92.72    -0.037261 
    28-Jun-2019    110.54      0.17579 
    31-Dec-2019    163.65      0.39235 
    30-Jun-2020    168.96     0.031932 
    31-Dec-2020    274.75       0.4862 

Результаты этих двух подходов одинаковы, поскольку каждый полугодовой период содержит ровно два календарных квартала.

Входные аргументы

свернуть все

Данные для агрегирования до полугодовой периодичности, указанные в расписании. Полугодовые результаты агрегирования сообщаются в последний рабочий день июня и декабря.

Примечание

NaNs указывает на отсутствие значений. Метки времени должны быть в порядке возрастания или убывания.

По умолчанию все дни являются рабочими днями. Если ваше расписание не учитывает нерабочие дни (выходные, праздничные дни и закрытие рынка), добавьте информацию о бизнес-календаре с помощью addBusinessCalendar во-первых. Например, следующая команда добавляет логику бизнес-календаря для включения только рабочих дней NYSE.

TT = addBusinessCalendar(TT);

Типы данных: timetable

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: TT2 = convert2semiannual(TT1,'Aggregation',["lastvalue" "sum"])

Метод агрегирования для TT1 данные за полугодовой период до полугодовой периодичности (междневная агрегация), указанные как пара, разделенная запятыми, состоящая из 'Aggregation' и символьный вектор, строка или дескриптор функции, примененный ко всем временным рядам в TT1, или вектор ячейки символьных векторов, строковый вектор или вектор ячейки функции обрабатывает ту же длину, что и число переменных в TT1.

Методы агрегирования определяют способ агрегирования данных в течение рабочих дней в полугодовом периоде до полугодичного агрегирования периодичности. Доступные методы агрегирования:

  • 'sum' - суммирование значений за каждый полугодовой период или день.

  • 'mean' - вычислять среднее значение значений в каждом полугодовом периоде или дне.

  • 'prod' - Вычисление произведения значений в каждом полугодовом периоде или дне.

  • 'min' - Вычислите минимум значений в каждом полугодовом периоде или дне.

  • 'max' - рассчитать максимум значений в каждом полугодовом периоде или дне.

  • 'firstvalue' - использовать первое значение в каждом полугодовом периоде или дне.

  • 'lastvalue' - использовать последнее значение в каждом полугодовом периоде или дне.

Все перечисленные выше методы пропускают отсутствующие данные (NaNs) в расчетах прямой агрегации. Однако в ситуациях, когда отсутствующие значения появляются в первой строке TT1, отсутствующие значения также могут отображаться в агрегированных результатах TT2.

Кроме того, в качестве дескрипторов функций можно указать методы агрегации. Чтобы включить отсутствующие данные, укажите функции в качестве дескрипторов функций, которые включают отсутствующие данные при агрегировании данных. Функции агрегации должны принимать базовые данные, сохраненные в TT1 и возвращает выходной сигнал, который является скалярным вектором или вектором строки и должен принимать пустые входные данные. Каждая функция агрегации применяется к соответствующей переменной и вызывается по одной. Каждая переменная должна содержать либо один числовой вектор, либо числовую матрицу. Например, рассмотрим ежедневное расписание, представляющее TT1 с тремя переменными.

          Time         AAA       BBB             CCC       
      ___________    ______    ______    _________________
      01-Jan-2018    100.00    200.00    300.00     400.00
      02-Jan-2018    100.02    200.04    300.06     400.08
      03-Jan-2018     99.96    199.92    299.88     399.84
          .             .         .         .          .
          .             .         .         .          .
          .             .         .         .          .
      28-Jun-2018     69.63    139.26    208.89     278.52
      29-Jun-2018     70.15     140.3    210.45     280.60
      30-Jun-2018     75.77    151.54    227.31     303.08
      01-Jul-2018     75.68    151.36    227.04     302.72
      02-Jul-2018     71.34    142.68    214.02     285.36
      03-Jul-2018     69.25    138.50    207.75     277.00
          .             .         .         .          .
          .             .         .         .          .
          .             .         .         .          .
      29-Dec-2018    249.16    498.32    747.48     996.64
      30-Dec-2018    250.21    500.42    750.63    1000.84
      31-Dec-2018    256.75    513.50    770.25    1027.00

Соответствующие полугодичные результаты по умолчанию, представляющие TT2 (в котором все дни являются рабочими днями и 'lastvalue' сообщается в последний рабочий день каждого полугодового периода) являются следующими.

           Time         AAA       BBB            CCC       
      ___________    ______    ______    ________________
      30-Jun-2018     75.77    151.54    227.31    303.08
      31-Dec-2018    256.75    513.50    770.25   1027.00

Типы данных: char | string | cell | function_handle

Метод внутрисуточной агрегации данных в TT1, указанная как пара, разделенная запятыми, состоящая из 'Daily' и вектор скалярных символов, строка или дескриптор функции, применяемые ко всем временным рядам в TT1, или вектор ячейки символьных векторов, строковый массив или вектор ячейки функции, обрабатывающий то же самое число переменных в TT1.

Типы данных: char | string | cell | function_handle

Выходные аргументы

свернуть все

Полугодовые данные, возвращенные в виде расписания. Функция возвращает NaNs для переменных в TT2 для полугодовых периодов, когда данные не записываются ни в какие рабочие дни для этих переменных в TT1. Если TT1 находится в порядке возрастания, так же TT2, и если TT1 находится в порядке убывания, так же TT2.

Первая дата в TT2 является последней рабочей датой полугодового периода, в котором первая дата TT1 происходит, при условии TT1 имеет рабочие даты в этом полугодовом периоде, в противном случае первая дата в TT2 является следующей рабочей датой конца полугодового периода.

Последняя дата в TT2 - последняя рабочая дата полугодового периода, в котором последняя дата в TT1 происходит, при условии TT1 имеет рабочие даты в этом полугодовом периоде, в противном случае последняя дата в TT2 - это предыдущая рабочая дата окончания полугодового периода.

Представлен в R2021a