convert2daily

Совокупные данные о расписании к ежедневной периодичности

Описание

пример

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

пример

TT2 = convert2daily(TT1,Name,Value) дополнительные опции использования заданы одними или несколькими аргументами name-value.

Примеры

свернуть все

Загрузите симулированные данные о курсе акций и соответствующие логарифмические возвраты в SimulatedStockSeries.mat.

load SimulatedStockSeries

Расписание DataTable содержит измерения, зарегистрированные в различные, неправильные времена в течение торговых часов (9:30 к 16:00) Нью-Йоркской фондовой биржи (NYSE) с 1 января 2018, в течение 31 декабря 2020.

Например, отобразите первые несколько наблюдений.

head(DataTable)
ans=8×2 timetable
            Time            Price     Log_Return
    ____________________    ______    __________

    01-Jan-2018 11:52:48       100     -0.025375
    01-Jan-2018 13:23:13    101.14      0.011336
    01-Jan-2018 14:45:09     101.5     0.0035531
    01-Jan-2018 15:30:30    100.15      -0.01339
    02-Jan-2018 10:43:37     99.72    -0.0043028
    03-Jan-2018 10:02:21    100.11     0.0039033
    03-Jan-2018 11:22:37    103.96      0.037737
    03-Jan-2018 13:42:27    107.05       0.02929

DataTable не включает осведомленность бизнес-календаря. Если вы хотите с учетом нерабочих дней (выходные, праздники и закрытия рынка), и вы имеете лицензию Financial Toolbox™, добавляете осведомленность бизнес-календаря при помощи addBusinessCalendar функция.

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

DailyPrice = convert2daily(DataTable(:,"Price"));
tail(DailyPrice)
ans=8×1 timetable
       Time        Price 
    ___________    ______

    24-Dec-2020    286.35
    25-Dec-2020    286.26
    26-Dec-2020    285.68
    27-Dec-2020    285.61
    28-Dec-2020    294.36
    29-Dec-2020    300.44
    30-Dec-2020    303.84
    31-Dec-2020    301.04

DailyPrice расписание, содержащее окончательные цены в течение каждого дня, о котором сообщают, в DataTable.

В этом примере показано, как задать соответствующий метод агрегации для модулей переменной.

Загрузите симулированные данные о курсе акций и соответствующие логарифмические возвраты SimulatedStockSeries.mat.

load SimulatedStockSeries

Ценовая серия Price содержит абсолютные измерения, тогда как журнал возвращает серию Log_Return скорость изменения ценового ряда среди последовательных наблюдений. Поскольку ряды имеют различные модули, необходимо задать соответствующий метод, когда вы агрегировали ряд. А именно, если вы сообщаете об окончательной цене за данную периодичность, необходимо сообщить, что сумма журнала возвращается в каждый период.

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

DailyTT = convert2daily(DataTable,Aggregation=["lastvalue" "sum"])
DailyTT=1096×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    01-Jan-2018    100.15     -0.023876
    02-Jan-2018     99.72    -0.0043028
    03-Jan-2018    105.57      0.057008
    04-Jan-2018    109.01      0.032065
    05-Jan-2018    110.69      0.015294
    06-Jan-2018    110.48     -0.001899
    07-Jan-2018    113.83      0.029872
    08-Jan-2018    116.41      0.022412
    09-Jan-2018    118.54      0.018132
    10-Jan-2018    120.46      0.016067
    11-Jan-2018    120.87     0.0033978
    12-Jan-2018    119.91    -0.0079741
    13-Jan-2018    117.38     -0.021325
    14-Jan-2018    116.04     -0.011482
    15-Jan-2018    114.72     -0.011441
    16-Jan-2018    115.28     0.0048696
      ⋮

DailyTT1 расписание, содержащее ежедневные окончательные цены, и журнал возвращается.

Проверьте результаты на 1 января 2018 в течение 3 января 2018.

jan42018 = datetime(2018,01,04);
DataTable(DataTable.Time < jan42018,:)
ans=9×2 timetable
            Time            Price     Log_Return
    ____________________    ______    __________

    01-Jan-2018 11:52:48       100     -0.025375
    01-Jan-2018 13:23:13    101.14      0.011336
    01-Jan-2018 14:45:09     101.5     0.0035531
    01-Jan-2018 15:30:30    100.15      -0.01339
    02-Jan-2018 10:43:37     99.72    -0.0043028
    03-Jan-2018 10:02:21    100.11     0.0039033
    03-Jan-2018 11:22:37    103.96      0.037737
    03-Jan-2018 13:42:27    107.05       0.02929
    03-Jan-2018 14:45:20    105.57     -0.013922

DailyTT(DailyTT.Time < jan42018,:)
ans=3×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    01-Jan-2018    100.15     -0.023876
    02-Jan-2018     99.72    -0.0043028
    03-Jan-2018    105.57      0.057008

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

verify = diff(log(DailyTT.Price));
verify(1:2)
ans = 2×1

   -0.0043
    0.0570

Входные параметры

свернуть все

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

Каждая переменная может быть числовым вектором (одномерный ряд) или числовая матрица (многомерный ряд).

Примечание

  • NaNs указывают на отсутствующие значения.

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

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

TT = addBusinessCalendar(TT);

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

Аргументы name-value

Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

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

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

  • "sum" — Суммируйте значения в каждом году или день.

  • "mean" — Вычислите среднее значение значений в каждом году или день.

  • "prod" — Вычислите продукт значений в каждом году или день.

  • "min" — Вычислите минимум значений в каждом году или день.

  • "max" — Вычислите максимум значений в каждом году или день.

  • "firstvalue" — Используйте первое значение в каждом году или день.

  • "lastvalue" — Используйте последнее значение в каждом году или день.

  • @customfcn — Пользовательский метод агрегации, который принимает расписание и возвращает числовой скаляр (для одномерного ряда) или вектор-строка (для многомерного ряда). Функция должна принять пустые входные параметры [].

Если вы задаете отдельный метод, convert2daily применяет заданный метод ко всем временным рядам в TT1. Если вы задаете вектор строки или вектор ячейки aggregation, convert2daily применяет агрегацию (j) к TT1 (: J); convert2daily применяет каждый метод агрегации по одному (для получения дополнительной информации, смотрите retime). Например, рассмотрите ежедневное расписание, представляющее TT1 с тремя переменными.

              Time             AAA       BBB            CCC       
      ____________________    ______    ______    ________________
      01-Jan-2018 09:45:47    100.00    200.00    300.00    400.00
      01-Jan-2018 12:48:09    100.03    200.06    300.09    400.12
      02-Jan-2018 10:27:32    100.07    200.14    300.21    400.28
      02-Jan-2018 12:46:09    100.08    200.16    300.24    400.32
      02-Jan-2018 14:14:13    100.25    200.50    300.75    401.00
      02-Jan-2018 15:52:31    100.19    200.38    300.57    400.76
      03-Jan-2018 09:47:11    100.54    201.08    301.62    402.16
      03-Jan-2018 11:24:23    100.59    201.18    301.77    402.36
      03-Jan-2018 14:41:17    101.40    202.80    304.20    405.60
      03-Jan-2018 16:00:00    101.94    203.88    305.82    407.76
      04-Jan-2018 09:55:51    102.53    205.06    307.59    410.12
      04-Jan-2018 10:07:12    103.35    206.70    310.05    413.40
      04-Jan-2018 14:26:23    103.40    206.80    310.20    413.60
      05-Jan-2018 13:13:12    103.91    207.82    311.73    415.64
      05-Jan-2018 14:57:53    103.89    207.78    311.67    415.56
Соответствующее значение по умолчанию ежедневно заканчивается, представляя TT2 (где 'lastvalue' сообщается в течение каждого дня), следующие.
        Time         AAA       BBB            CCC       
      ___________    ______    ______    ________________
      01-Jan-2018    100.03    200.06    300.09    400.12
      02-Jan-2018    100.19    200.38    300.57    400.76
      03-Jan-2018    101.94    203.88    305.82    407.76
      04-Jan-2018    103.40    206.80    310.20    413.60
      05-Jan-2018    103.89    207.78    311.67    415.56

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

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

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

свернуть все

Ежедневные данные, возвращенные как расписание. Временная договоренность TT1 и TT2 то же самое.

Если переменная TT1 не имеет никаких записей в течение рабочего дня в промежутке времени выборки, convert2daily возвращает NaN в течение того переменного и рабочего дня в TT2.

Первое свидание в TT2 первая бизнес-дата на или после первого свидания в TT1. Последняя дата в TT2 последняя бизнес-дата на или перед последней датой в TT1.

Введенный в R2021a