Фактически все финансовые данные выводят из временных рядов, функции в 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
дни
часы
минуты
, или 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