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