Фактически все финансовые данные выводят от временных рядов, функции в Financial Toolbox™ имеют обширные обрабатывающие дату возможности. Тулбокс функционирует дата поддержки или форматы даты и времени как векторы символов, массивы datetime или последовательные числа даты.
character vectors даты является текстом, которые представляют дату и время, которую можно использовать с несколькими форматами. Например, 'dd-mmm-yyyy HH:MM:SS'
, 'dd-mmm-yyyy'
и 'mm/dd/yyyy'
являются всеми поддерживаемыми текстовыми форматами для вектора символов даты. Чаще всего вы работаете с векторами символов даты (такими как 14-Sep-1999
) при контакте с датами.
Datetime arrays, созданное использование datetime
, является лучшим типом данных для представления моментов времени. значения datetime
имеют гибкие форматы отображения и до точности наносекунды и могут составлять часовые пояса, летнее время и секунды прыжка. Когда объекты datetime
используются в качестве входных параметров к другим функциям Financial Toolbox, формат объекта входа datetime
сохраняется. Например:
originalDate = datetime('now','Format','yyyy-MM-dd HH:mm:ss'); % Find the next business day b = busdate(originalDate) b = datetime 2017-04-20 14:47:39
Serial date numbers представляет календарную дату как номер дней, которые передали начиная с установленной основной даты. В MATLAB последовательный номер даты 1
является январем 1,0000 нашей эры. Financial Toolbox работает внутренне с последовательными числами даты (такой как, 730377
). MATLAB также использует последовательное время, чтобы представлять части дней, начинаясь в полночь. Например, 18:00 равняется 0.75
последовательные дни, таким образом, 18:00 на 14-Sep-1999
, в MATLAB, является последовательным номером даты 730377.75
Если вы задаете год 2D цифры, MATLAB принимает, что год находится в 100-летний период, сосредоточенный в текущий год. Смотрите функциональный datenum
для определенной информации. MATLAB внутренняя обработка даты и вычисления не генерирует неоднозначных значений. Однако, когда это возможно, используйте последовательные числа даты или векторы символов даты, содержащие год из четырех знаков.
Много функций Financial Toolbox, которые требуют дат как входных параметров, принимают векторы символов даты, массивы datetime или последовательные числа даты. Если вы имеете дело с несколькими датами на уровне командной строки MATLAB, векторы символов даты более удобны. Если вы используете функции Financial Toolbox на больших количествах дат, когда в анализе больших портфелей или потоков наличности, производительность улучшается, если вы используете массивы datetime или последовательные числа даты. Для получения дополнительной информации, См. Представление дат и времени в MATLAB (MATLAB).
Financial Toolbox обеспечивает функции, которые преобразовывают векторы символов даты в или от последовательных чисел даты. Кроме того, можно преобразовать векторы символов или последовательные числа даты к массивам datetime.
Функции, которые преобразовывают между форматами даты:
datedisp |
Отображает числовую матрицу с записями даты, отформатированными как векторы символов даты. |
datenum |
Преобразовывает вектор символов даты в последовательный номер даты. |
datestr |
Преобразовывает последовательный номер даты в вектор символов даты. |
datetime |
Преобразовывает от векторов символов даты или последовательных чисел даты, чтобы создать массив datetime. |
datevec | Преобразовывает последовательный номер даты или вектор символов даты к вектору даты, элементами которого является [Year Month Day Hour Minute Second] . |
m2xdate |
Преобразовывает MATLAB последовательный номер даты в Excel® последовательный номер даты. |
x2mdate |
Преобразовывает Microsoft® Excel последовательный номер даты в MATLAB последовательный номер даты. |
Для получения дополнительной информации смотрите, Преобразовывают Между Массивами datetime, Числами и текстом (MATLAB).
Дата может быть вектором символов, состоявшим из полей, связанных с определенной датой и временем. Существует несколько способов представлять даты и времена в нескольких текстовых форматах. Например, все следующее векторы символов, представляют 23 августа 2010 в 16:35:42:
'23-Aug-2010 04:35:06 PM' 'Wednesday, August 23' '08/23/10 16:35' 'Aug 23 16:35:42.946'
Вектор символов даты включает символы, которые разделяют поля, такие как дефис, пробел и двоеточие, используемое здесь:
d = '23-Aug-2010 16:35:42'
Преобразуйте один или несколько векторов символов даты в массив datetime
с помощью функции datetime
. Для лучшей производительности задайте формат векторов вводимого символа как вход к datetime
.
Спецификаторы, что использование datetime
, чтобы описать форматы даты и времени отличается от спецификаторов, которые принимают datestr
, datevec
и функции datenum
.
t = datetime(d,'InputFormat','dd-MMM-yyyy HH:mm:ss')
t = 23-Aug-2010 16:35:42
Несмотря на то, что строка даты, d
, и скаляр datetime
, t
, выглядит подобной, они не равны. Просмотрите размер и тип данных каждой переменной.
whos d t
Name Size Bytes Class Attributes d 1x20 40 char t 1x1 121 datetime
Преобразуйте массив datetime
в вектор символов, который использует char
или cellstr
. Например, преобразуйте текущую дату и время к метке времени, чтобы добавить к имени файла.
t = datetime('now','Format','yyyy-MM-dd''T''HHmmss')
t = datetime 2016-12-11T125628
S = char(t);
filename = ['myTest_',S]
filename = 'myTest_2016-12-11T125628'
Последовательное время может представлять части дней, начинающихся в полночь. Например, 18:00 равняется 0.75
последовательные дни, таким образом, вектор символов '31-Oct-2003, 6:00 PM'
в MATLAB является номером даты 731885.75
.
Преобразуйте одно или несколько последовательных чисел даты в массив datetime
с помощью функции datetime
. Задайте тип номера даты, который преобразовывается:
t = datetime(731885.75,'ConvertFrom','datenum')
t = datetime 31-Oct-2003 18:00:00
Некоторые функции MATLAB принимают типы числовых данных, но не значения datetime как входные параметры. Чтобы применить эти функции к вашим данным о дате и времени, во-первых, преобразовывают значения datetime в значимые числовые значения, и затем вызывают функцию. Например, функция log
принимает входные параметры double
, но не входные параметры datetime
. Предположим, что у вас есть массив datetime
дат, охватывающих курс изыскания или эксперимента.
t = datetime(2014,6,18) + calmonths(1:4)
t = 1×4 datetime array 18-Jul-2014 18-Aug-2014 18-Sep-2014 18-Oct-2014
Вычтите значение источника. Например, значение источника может быть стартовым днем эксперимента.
dt = t - datetime(2014,7,1)
dt = 1×4 duration array 408:00:00 1152:00:00 1896:00:00 2616:00:00
dt
является массивом duration
. Преобразуйте dt
в массив double
значений в модулях лет, дней, часов, минут или секунд при помощи years
, days
, hours
, minutes
или функции seconds
, соответственно.
x = hours(dt)
x = 408 1152 1896 2616
Передайте массив double
как вход к функции log
.
y = log(x)
y = 6.0113 7.0493 7.5475 7.8694
datenum
Функция datenum
важна для использования программного обеспечения Financial Toolbox эффективно. datenum
берет входной вектор символов даты в любом из нескольких форматов, с 'dd-mmm-yyyy'
, 'mm/dd/yyyy'
или форматами 'dd-mmm-yyyy, hh:mm:ss.ss'
, являющимися наиболее распространенным. Входной вектор символов даты может иметь до шести полей, сформированных буквами и числами, разделенными любыми другими символами, такими что:
Дневное поле является целым числом от 1
до 31
.
Поле месяца является или целым числом от 1
до 12
или вектором алфавитного символа по крайней мере с тремя символами.
Поле года является неотрицательным целым числом. Если только два числа заданы, то год принят, чтобы лечь в 100-летний период, сосредоточенный в текущий год. Если год не использован, текущий год является значением по умолчанию.
Часы, минуты и поля секунд являются дополнительными. Они - целые числа, разделенные двоеточиями или сопровождаемые 'am'
или 'pm'
.
Например, если текущий год 1999, то все эти даты эквивалентны:
'17-May-1999' '17-May-99' '17-may' 'May 17, 1999' '5/17/99' '5/17'
Кроме того, оба из этих форматов представляют то же время.
'17-May-1999, 18:30' '5/17/99/6:30 pm'
Формат по умолчанию для входа только для чисел следует соглашению США. Поэтому 3/6 6 марта, не 3 июня.
С datenum
можно преобразовать даты в последовательный формат даты, сохранить их в матричной переменной, и затем более поздней передаче переменная к функции. Также можно использовать datenum
непосредственно в списке входных аргументов функции.
Например, рассмотрите функциональный bndprice
, который вычисляет цену связи, учитывая доход до срока погашения. Сначала настройте переменные для дохода до срока погашения, купонной ставки и необходимых дат.
Yield = 0.07; CouponRate = 0.08; Settle = datenum('17-May-2000'); Maturity = datenum('01-Oct-2000');
Затем вызовите функцию с переменными.
bndprice(Yield,CouponRate,Settle,Maturity)
ans = 100.3503
Также преобразуйте векторы символов даты в последовательные числа даты непосредственно в списке входных аргументов функции.
bndprice(0.07,0.08,datenum('17-May-2000'),... datenum('01-Oct-2000'))
ans = 100.3503
bndprice
является примером функции, разработанной, чтобы обнаружить присутствие векторов символов даты и сделать преобразование автоматически. Для функций как bndprice
векторы символов даты могут быть переданы непосредственно.
bndprice(0.07,0.08,'17-May-2000','01-Oct-2000')
ans = 100.3503
Решение представлять даты или как векторы символов даты или как последовательные числа даты часто является вопросом удобства. Например, при форматировании данных для отображения или для отладки обрабатывающего дату кода, можно просмотреть даты более легко как векторы символов даты, потому что последовательные числа даты трудно интерпретировать. Поочередно, последовательные числа даты являются только другим типом числовых данных, которые можно поместить в матрицу наряду с любыми другими числовыми данными для удобной манипуляции.
Помните, что, если вы создаете вектор входных векторов символов даты, используйте вектор-столбец и убедитесь, что все векторы символов являются той же длиной. Чтобы гарантировать, что векторы символов являются той же длиной, заполните векторы символов с пробелами или нулями. Для получения дополнительной информации смотрите Вход Вектора символов.
datestr
Функция datestr
преобразовывает последовательный номер даты в один из 19 различных выходных форматов вектора символов даты, показывающих дату, время или оба. Вывод по умолчанию для дат является вектором символов дневного года месяца, например, 24-Aug-2000
. Функция datestr
полезна для подготовки выходных отчетов.
Формат |
Описание |
---|---|
|
дневной год месяца hour:minute:second |
|
дневной год месяца |
03/01/00 |
месяц/день/год |
|
месяц, три буквы |
|
месяц, одна буква |
3 |
номер месяца |
03/01 |
месяц/день |
1 |
день месяца |
|
день недели, трех букв |
|
день недели, одной буквы |
2000 |
год, четыре числа |
99 |
год, два числа |
|
год месяца |
15:45:17 |
hour:minute:second |
|
hour:minute:second AM или PM |
15:45 |
hour:minute |
|
hour:minute AM или PM |
|
год календарного квартала |
|
календарный квартал |
today
и функции now
возвращают последовательные числа даты для текущей даты и текущей даты и время, соответственно.
today
ans = 736675
now
ans = 7.3668e+05
Функция MATLAB date
возвращает вектор символов для текущей даты.
date
ans = '11-Dec-2016'
Financial Toolbox обеспечивает много функций для определения определенных дат. Например, примите, что вы планируете процедуру учета в течение прошлой пятницы каждого месяца. Используйте функцию lweekdate
, чтобы возвратить те даты в течение года 2000. Входной параметр 6
задает в пятницу.
Fridates = lweekdate(6,2000,1:12); Fridays = datestr(Fridates)
Fridays = 12×11 char array '28-Jan-2000' '25-Feb-2000' '31-Mar-2000' '28-Apr-2000' '26-May-2000' '30-Jun-2000' '28-Jul-2000' '25-Aug-2000' '29-Sep-2000' '27-Oct-2000' '24-Nov-2000' '29-Dec-2000'
Другой пример необходимости в определенных датах мог быть то, что ваша компания закрывает на Мартине Лютере Кинге День младший, который является третьим понедельником в январе. Можно использовать функцию thenweekdate
, чтобы определить те определенные даты 2 011 - 2014.
MLKDates = nweekdate(3,2,2011:2014,1); MLKDays = datestr(MLKDates)
MLKDays = 4×11 char array '17-Jan-2011' '16-Jan-2012' '21-Jan-2013' '20-Jan-2014'
Составление праздников и другие неторговые дни важно, когда вы исследуете финансовые даты. Financial Toolbox обеспечивает функцию holidays
, которая содержит праздники и специальные неторговые дни для Нью-Йоркской фондовой биржи от 1 950 до 2030, включительно. Кроме того, можно использовать nyseclosures
, чтобы оценить все известные или ожидаемые закрытия Нью-Йоркской фондовой биржи с 1 января 1885 до 31 декабря 2050. nyseclosures
возвращает вектор последовательных чисел даты, соответствующих закрытиям рынка между датами StartDate
и EndDate
, включительно.
В этом примере используйте holidays
, чтобы определить стандартные праздники в последней половине из 2 012.
LHHDates = holidays('1-Jul-2012','31-Dec-2012'); LHHDays = datestr(LHHDates)
LHHDays = 6×11 char array '04-Jul-2012' '03-Sep-2012' '29-Oct-2012' '30-Oct-2012' '22-Nov-2012' '25-Dec-2012'
Можно затем использовать функцию busdate
, чтобы определить на следующий рабочий день в 2 012 после этих праздников.
LHNextDates = busdate(LHHDates); LHNextDays = datestr(LHNextDates)
LHNextDays = 6×11 char array '05-Jul-2012' '04-Sep-2012' '31-Oct-2012' '31-Oct-2012' '23-Nov-2012' '26-Dec-2012'
Чтобы определить даты потока наличности ценных бумаг с регулярными платежами, используйте cfdates
. Эта функция составляет купоны в год, основание дневного количества и правило конца месяца. Например, можно определить даты потока наличности безопасности, которая платит четыре купона в год в прошлый день месяца с помощью основания дневного количества actual/365
. Для этого введите расчетный день, дату погашения и параметры для Period
, Basis
и EndMonthRule
.
PayDates = cfdates('14-Mar-2000','30-Nov-2001',4,3,1); PayDays = datestr(PayDates)
PayDays = 7×11 char array '31-May-2000' '31-Aug-2000' '30-Nov-2000' '28-Feb-2001' '31-May-2001' '31-Aug-2001' '30-Nov-2001'
busdate
| cfdates
| date
| datedisp
| datenum
| datestr
| datetime
| datevec
| format
| holidays
| lweekdate
| m2xdate
| nweekdate
| nyseclosures
| x2mdate