exponenta event banner

convert2weekly

Сводные данные по расписанию на еженедельную периодичность

Описание

пример

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

пример

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

Примеры

свернуть все

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

Загрузить расписание (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

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

TT1 = convert2daily(TT,'Aggregation',["lastvalue" "sum"]);
head(TT1)
ans=8×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    02-Jan-2018    101.37     0.013607 
    03-Jan-2018    100.12    -0.012408 
    04-Jan-2018    106.76     0.064214 
    05-Jan-2018    112.78     0.054856 
    08-Jan-2018    119.07     0.054273 
    09-Jan-2018    119.46      0.00327 
    10-Jan-2018    124.44     0.040842 
    11-Jan-2018    125.63    0.0095174 

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

tt1 = convert2weekly(TT1,'Aggregation',["lastvalue" "sum"]);   % Daily to weekly
tt2 = convert2weekly(TT ,'Aggregation',["lastvalue" "sum"]);   % Intra-daily to weekly

head(tt1)
ans=8×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    05-Jan-2018    112.78      0.12027 
    12-Jan-2018    125.93      0.11029 
    19-Jan-2018    117.67    -0.067842 
    26-Jan-2018     118.8    0.0095573 
    02-Feb-2018    120.85     0.017109 
    09-Feb-2018    123.68     0.023147 
    16-Feb-2018    124.33    0.0052417 
    23-Feb-2018    127.09     0.021956 

head(tt2)
ans=8×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    05-Jan-2018    112.78      0.12027 
    12-Jan-2018    125.93      0.11029 
    19-Jan-2018    117.67    -0.067842 
    26-Jan-2018     118.8    0.0095573 
    02-Feb-2018    120.85     0.017109 
    09-Feb-2018    123.68     0.023147 
    16-Feb-2018    124.33    0.0052417 
    23-Feb-2018    127.09     0.021956 

Обратите внимание, что результаты двух подходов одинаковы и что convert2weekly отчеты по пятницам по умолчанию. Для недель, в которых пятница не является торговым днем NYSE, функция сообщает результаты за предыдущий рабочий день. Кроме того, можно использовать convert2weekly необязательный аргумент пара имя-значение 'EndOfWeekDay«чтобы указать другой день недели, заканчивающийся рабочими неделями».

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

свернуть все

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

Примечание

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

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

TT = addBusinessCalendar(TT);

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

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

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

Пример: TT2 = convert2weekly(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.03    200.06    300.09    400.12
      03-Jan-2018    100.07    200.14    300.21    400.28
      04-Jan-2018    100.08    200.16    300.24    400.32
      05-Jan-2018    100.25    200.50    300.75    401.00
      06-Jan-2018    100.19    200.38    300.57    400.76
      07-Jan-2018    100.54    201.08    301.62    402.16
      08-Jan-2018    100.59    201.18    301.77    402.36
      09-Jan-2018    101.40    202.80    304.20    405.60
      10-Jan-2018    101.94    203.88    305.82    407.76
      11-Jan-2018    102.53    205.06    307.59    410.12
      12-Jan-2018    103.35    206.70    310.05    413.40
      13-Jan-2018    103.40    206.80    310.20    413.60
      14-Jan-2018    103.91    207.82    311.73    415.64
      15-Jan-2018    103.89    207.78    311.67    415.56
      16-Jan-2018    104.44    208.88    313.32    417.76
      17-Jan-2018    104.44    208.88    313.32    417.76
      18-Jan-2018    104.04    208.08    312.12    416.16
      19-Jan-2018    104.94    209.88    314.82    419.76

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

        Time         AAA       BBB            CCC       
      ___________    ______    ______    ________________
      05-Jan-2018    100.25    200.50    300.75    401.00
      12-Jan-2018    103.35    206.70    310.05    413.40
      19-Jan-2018    104.94    209.88    314.82    419.76

Дефолт 'lastvalue' возвращает самые последние данные, наблюдаемые на данной неделе для всех переменных в TT1.

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

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

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

День недели, заканчивающийся рабочими неделями, определяемый как пара, разделенная запятыми, состоящая из 'EndOfWeekDay' и строка, символьный вектор или скалярное целое число. Если указанный день окончания недели на данной неделе не является рабочим днем, то предыдущий рабочий день завершает неделю.

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

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

свернуть все

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

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

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

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