Financial functions
ODDFPRICE
Matches all 6 recorded answers
Recorded: 6 workbook cells. How we measure this · See the Rust code
Local names in 40 languages
| Language | Name in Excel |
|---|---|
| Arabic | ODDFPRICE |
| Bulgarian | ODDFPRICE |
| Czech | ODDFPRICE |
| Danish | ULIGE.KURS.PÅLYDENDE |
| German | ODDFPRICE |
| Greek | ODDFPRICE |
| English (Australia) | ODDFPRICE |
| English (United Kingdom) | ODDFPRICE |
| English (United States) | ODDFPRICE |
| Spanish | PRECIO.PER.IRREGULAR.1 |
| Estonian | ODDFPRICE |
| Finnish | PARITON.ENS.NIMELLISARVO |
| French | PRIX.PCOUPON.IRREG |
| Hebrew | ODDFPRICE |
| Croatian | ODDFPRICE |
| Hungarian | ELTÉRŐ.EÁR |
| Indonesian | ODDFPRICE |
| Italian | ODDFPRICE |
| Japanese | ODDFPRICE |
| Korean | ODDFPRICE |
| Lithuanian | ODDFPRICE |
| Latvian | ODDFPRICE |
| Norwegian | AVVIKFP.PRIS |
| Dutch | AFW.ET.PRIJS |
| Polish | CENA.PIERW.OKR |
| Portuguese (Brazil) | ODDFPRICE |
| Portuguese (Portugal) | PREÇOPRIMINC |
| Romanian | ODDFPRICE |
| Russian | ЦЕНАПЕРВНЕРЕГ |
| Slovak | ODDFPRICE |
| Slovenian | ODDFPRICE |
| Serbian (Latin) | ODDFPRICE |
| Swedish | UDDAFPRIS |
| Thai | ODDFPRICE |
| Turkish | TEKYDEĞER işlevi |
| Ukrainian | ODDFPRICE |
| Vietnamese | ODDFPRICE |
| Chinese (Simplified) | ODDFPRICE |
| Chinese (Hong Kong) | ODDFPRICE |
| Chinese (Traditional) | ODDFPRICE |
Names from Microsoft's support site.
What it does
ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis])
ODDFPRICE computes clean price per 100 face value for a security with an irregular first coupon. Its dates are settlement, maturity, issue and first_coupon. They are followed by coupon rate, yield, redemption, frequency and optional basis.
Try it
=ODDFPRICE(DATE(2027,2,1),DATE(2027,10,1),DATE(2027,1,1),DATE(2027,4,1),0.06,0,100,2,0) gives a price near 104. The first coupon spans January to April, a short half-year coupon. Under 30/360 its payment is 1.5; the regular maturity coupon is three; accrued interest at February settlement is 0.5. At zero yield the clean price is 100+1.5+3-0.5=104.
Quirks
Basis defaults to zero: 0 US 30/360, 1 actual/actual, 2 actual/360, 3 actual/365, 4 European 30/360. Dates and selectors are truncated under their documented rules. Use DATE values rather than locale-dependent date text. The required date order is issue < settlement < first_coupon < maturity. Frequency is one, two or four. Negative coupon rate, invalid selectors and invalid amount/domain cases produce errors. These schedules cannot be reduced to PRICE by changing one date.
How to implement
Generate quasi-coupon periods aligned to first_coupon and maturity. Prorate the odd first coupon across those periods, discount it and later coupons/redemption, and subtract accrued interest. Long first periods can contain multiple quasi-coupons. The worked zero-yield example isolates the coupon and accrual arithmetic from discount powers. Calendar seams, long/short-period branches and residual numerical differences remain open where the recorded reports say so. The family combines a credited Apache-licensed ExcelFinancialFunctions translation in its odd-first kernel and calendar helpers with project-owned kernels and changes guided by recorded Excel answers.
Rust code
Show the CalcFunc source of this function
Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.
ODDFPRICE · 4 lines · calc-func/src/catalogue/bonds.rs on GitHub23 oddfprice_fn "ODDFPRICE" (8, 9) [V "settlement", V "maturity", V "issue", V "first_coupon", V "rate", V "yld", V "redemption", V "frequency", V "basis"] |s, a, sv| {
let dates = [date_1900(s, a, 0, sv)?, date_1900(s, a, 1, sv)?, date_1900(s, a, 2, sv)?, date_1900(s, a, 3, sv)?];
odd_out(s, odd::oddfprice_kernel(dates[0], dates[1], dates[2], dates[3], num(s, a, 4)?, num(s, a, 5)?, num(s, a, 6)?, num(s, a, 7)?, basis(s, a, 8)?))
}
Kernels shared with other functions
basiscatalogue/bondsodd_outcatalogue/bondsdate_1900catalogue/financialdays_from_civillocalecivil_from_dayslocaleexcel_serial_from_ymdlocaleymd_from_excel_seriallocaledays_in_monthported/day_count_commonus_30_360ported/day_count_commonparse_basisported/odd_bond_familyparse_frequencyported/odd_bond_familymax_excel_serialported/odd_bond_familyparse_date_serialported/odd_bond_familydays_in_yearported/odd_bond_familydays_in_monthported/odd_bond_familydays360_usported/odd_bond_familydays360_euported/odd_bond_familyday_countported/odd_bond_familyday_count_non_negativeported/odd_bond_familyymdported/odd_bond_familylast_day_of_monthported/odd_bond_familychange_monthported/odd_bond_familyfind_pcd_ncdported/odd_bond_familyfind_coupon_datesported/odd_bond_familyprevious_coupon_dateported/odd_bond_familynext_coupon_dateported/odd_bond_familynumber_of_couponsported/odd_bond_familycoup_daysported/odd_bond_familywhole_coupon_countported/odd_bond_familyaggr_indicesported/odd_bond_familyvalidate_positive_inputsported/odd_bond_familyexcel_bond_powported/odd_bond_familyoddfprice_kernelported/odd_bond_familymap_odd_bond_error_to_wsported/odd_bond_family
Argument and result plumbing
No implementation has been published with a Handbook test suite for this function.
Version differences
No same-input comparison between named Excel builds is recorded for this function here. The documented behaviour below is not a measurement of every Excel release.
Alternatives
ODDFYIELD solves yield from the same first-coupon schedule. ODDLPRICE handles an irregular final coupon; PRICE handles regular coupons.
Named variants
No named variants are recorded yet.
Suggest a correction or contribute an implementation · For agents