yearfrac

Доля года между датами

Описание

пример

YearFraction = yearfrac(StartDate,EndDate,Basis) возвращает долю в годах, основанную на количестве дней между датами StartDate и EndDate использование заданной дневной Basis.

Количество дней в году (365 или 366) равно количеству дней в календарном году после StartDate. Если EndDate является более ранним, чем StartDate, YearFraction отрицательно.

Все указанные аргументы должны быть количеством инструментов (NUMINST-by- 1) или (1-by- NUMINST) соответствующие векторы или скалярные аргументы.

Примеры

свернуть все

Учитывая Basis от 0 и a Basis от 1, вычислить yearfrac.

Определите StartDate и EndDate использование Basis от 0.

YearFraction = yearfrac('14 mar 01', '14 sep 01', 0)
YearFraction = 0.5041

Определите StartDate и EndDate использование Basis от 1.

YearFraction = yearfrac('14 mar 01', '14 sep 01', 1)
YearFraction = 0.5000

Учитывая Basis от 0, вычислить yearfrac когда календарь после StartDate находится в високосном году.

Определите StartDate и EndDate использование Basis от 0.

yearFraction = yearfrac(' 14 mar 03', '14 sep 03', 0)
yearFraction = 0.5027

Есть 184 дня между 14 марта и 14 сентября, и календарный год после StartDate это високосный год, так что yearfrac возвращает 184/366 = 0.5027.

Чтобы получить часть года между '31-Jul-2015' и '30-Sep-2015' с использованием фактического/фактического базиса:

yearfrac('31-Jul-2015', '30-Sep-2015', 0)*2
ans = 0.3333

Для фактического/фактического базиса, доля года вычисляется как:

(Actual Days between Start Date and End Date)/(Actual Days between Start Date and exactly one year after Start Date)

Между 61 и 31-Jul-2015 30-Sep-2015 дней. Поскольку следующий год является високосным, между 31-Jul-2015 и 31-Jul-2016 остается 366 дней. Итак, существует 61/366, что в точности равно 1/6. Таким образом, учитывая это, именно 2/6 является ожидаемым результатом для части шестимесячного периода.

Использование Basis из 12 для вычисления yearfrac когда части области значений дат находятся в високосном году и в не високосном году. Область выхода YearFraction - это доля в годах, основанная на количестве дней между StartDate и EndDate.

YearFraction = yearfrac('1-Jan-2016','30-Jan-2017',12)
YearFraction = 1.0795

Учитывая Basis от 9, вычислить yearfrac когда StartDate и EndDate задаются с помощью массивов datetime.

yearfrac(datetime('1-Jan-2000','Locale','en_US'), '1/1/2001', 9)
ans = 1.0167

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

свернуть все

Дата начала, заданная как N-by- 1 или 1-by- N вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени.

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

Дата окончания, заданная как N-by- 1 или 1-by- N вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени.

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

Базис отсчета дней для каждого набора дат, заданный как N-by- 1 или 1-by- N вектор целых чисел со значениями 0 через 13.

  • 0 = факт/факт (по умолчанию)

  • 1 = 30/360 (SIA)

  • 2 = факт/360

  • 3 = факт/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (европейский)

  • 7 = факт/365 (японский)

  • 8 = факт/факт (ICMA)

  • 9 = факт/360 (ICMA)

  • 10 = факт/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = факт/365 (ISDA)

  • 13 = BUS/252

Для получения дополнительной информации см. раздел Базиса.

Типы данных: single | double

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

свернуть все

Вещественные числа, идентифицирующие интервал в годах между StartDate и EndDate, вернул N-by- 1 или 1-by- N вектор.

Подробнее о

свернуть все

Различие между yearfrac и date2time

Разница между yearfrac и date2time является ли это date2time отсчитывает полные периоды как целое число, даже если количество фактических дней в периодах различно. yearfrac не подсчитывает полные периоды.

Для примера,

yearfrac('1/1/2000', '1/1/2001', 9)

ans =

    1.0167

yearfrac для Basis 9 (ACT/360 ICMA) вычисляет 366/360 = 1,0167. Таким образом, даже если даты имеют одинаковые месяц и дату, с различием в 1 в году, возвращаемое значение может быть не совсем 1. С другой стороны, date2time вычисляет один период полного года:

date2time('1/1/2000', '1/1/2001', 1, 9)

ans =

     1

Представлено до R2006a