Skip to content

Commit 94f7c06

Browse files
Added newly implemented volume 3 release formulae
1 parent 475301a commit 94f7c06

File tree

4 files changed

+1908
-0
lines changed

4 files changed

+1908
-0
lines changed

WindowsForms/Calculation-Engine/Supported-Formulas/Financial-Formulas.md

Lines changed: 356 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,3 +744,359 @@ _INTRATE(settlement, maturity, investment, redemption, [basis])_
744744
* Redemption :The amount to be received at maturity.
745745

746746
* Basis : The type of specifies the day count basis to used in the calculation.
747+
748+
749+
750+
## NOMINAL
751+
752+
the function `NOMINAL` returns the nominal annual interest rate, given the effective rate and the number of compounding periods per year.
753+
754+
**Syntax:**
755+
756+
_NOMINAL(effect_rate, npery)_
757+
758+
**Where:**
759+
760+
* effect_rate: The effective interest rate.
761+
762+
* npery: The number of compounding periods per year.
763+
764+
**Remarks:**
765+
766+
* Npery is truncated to an integer.
767+
768+
* If either argument is nonnumeric, `NOMINAL` returns the `#VALUE!` error value.
769+
770+
* If effect_rate ≤ 0 or if npery < 1, `NOMINAL` returns the `#NUM!` error value.
771+
772+
* `NOMINAL` is related to `EFFECT` function. The relationship between `NOMINAL` and `EFFECT` is shown in the following equation:
773+
774+
`effective_rate = (1 + (nominal_rate / npery))^npery - 1`
775+
776+
777+
778+
## MDURATION
779+
780+
The function `MDURATION` returns the modified Macauley duration for a security with an assumed par value of $100.
781+
782+
**Syntax:**
783+
784+
_MDURATION(settlement, maturity, coupon, yld, frequency, [basis])_
785+
786+
**Where:**
787+
788+
* settlement: The security's settlement date.
789+
790+
* maturity: The security's maturity date.
791+
792+
* coupon: The security's annual coupon rate.
793+
794+
* yld: The security's annual yield.
795+
796+
* frequency: The number of coupon payments per year (1 for annual, 2 for semiannual, 4 for quarterly).
797+
798+
* basis (Optional): The day count basis to use (default is 0: US (NASD) 30/360):
799+
800+
* 0 or omitted: US (NASD) 30/360
801+
802+
* 1: Actual/actual
803+
804+
* 2: Actual/360
805+
806+
* 3: Actual/365
807+
808+
* 4: European 30/360
809+
810+
**Remarks:**
811+
812+
* Dates are stored as serial numbers. For example, January 1, 1900 is 1, and January 1, 2008 is 39448.
813+
814+
* If settlement or maturity is not valid, `MDURATION` returns `#VALUE!`.
815+
816+
* If yld < 0 or coupon < 0, it returns `#NUM!`. If frequency is not 1, 2, or 4, it returns `#NUM!`.
817+
818+
* If basis is outside the range 0-4, it returns `#NUM!`.
819+
820+
* If settlement is greater than or equal to maturity, it returns `#NUM!`.
821+
822+
* Equation to calculate `MDURATION` is `Modified Duration = Macauley Duration / (1 + (yld / frequency))`.
823+
824+
825+
826+
## PDURATION
827+
828+
The function `PDURATION` returns the number of periods required by an investment to reach a specified value.
829+
830+
**Syntax:**
831+
832+
_PDURATION(rate, pv, fv)_
833+
834+
**Where:**
835+
836+
* rate: The interest rate per period.
837+
838+
* pv: The present value of the investment.
839+
840+
* fv: The desired future value of the investment.
841+
842+
**Remarks:**
843+
844+
* If rate is less than or equal to 0, or if pv or fv is less than or equal to 0, `PDURATION` returns the `#NUM!` error value.
845+
846+
* If any argument is nonnumeric, `PDURATION` returns the `#VALUE!` error value.
847+
848+
* The `PDURATION` function calculates the number of periods required using the following equation:
849+
850+
`PDURATION = LOG(fv / pv) / LOG(1 + rate)`
851+
852+
853+
854+
## COUPDAYS
855+
856+
The function `COUPDAYS` returns the number of days in the coupon period that contains the settlement date.
857+
858+
**Syntax:**
859+
860+
_COUPDAYS(settlement, maturity, frequency, [basis])_
861+
862+
**Where:**
863+
864+
* settlement: The security's settlement date.
865+
866+
* maturity: The security's maturity date.
867+
868+
* frequency: The number of coupon payments per year (1 for annual, 2 for semiannual, 4 for quarterly).
869+
870+
* basis (Optional): The type of day count basis to use:
871+
872+
* 0 or omitted: US (NASD) 30/360
873+
874+
* 1: Actual/actual
875+
876+
* 2: Actual/360
877+
878+
* 3: Actual/365
879+
880+
* 4: European 30/360
881+
882+
**Remarks:**
883+
884+
* Dates are stored as serial numbers. For example, January 1, 1900 is 1, and January 1, 2008 is 39448.
885+
886+
* If settlement or maturity is not a valid date, `COUPDAYS` returns `#VALUE!`.
887+
888+
* If frequency is any number other than 1, 2, or 4, `COUPDAYS` returns `#NUM!`.
889+
890+
* If basis is outside the range 0-4, `COUPDAYS` returns `#NUM!`.
891+
892+
* If settlement is greater than or equal to maturity, `COUPDAYS` returns `#NUM!`.
893+
894+
895+
896+
## COUPDAYBS
897+
898+
The function `COUPDAYBS` returns the number of days from the beginning of a coupon period until its settlement date.
899+
900+
**Syntax:**
901+
902+
_COUPDAYBS(settlement, maturity, frequency, [basis])_
903+
904+
**Where:**
905+
906+
* settlement: The security's settlement date.
907+
908+
* maturity: The security's maturity date.
909+
910+
* frequency: The number of coupon payments per year (1 for annual, 2 for semiannual, 4 for quarterly).
911+
912+
* basis (Optional): The day count basis to use (default is 0: US (NASD) 30/360):
913+
914+
* 0 or omitted: US (NASD) 30/360
915+
916+
* 1: Actual/actual
917+
918+
* 2: Actual/360
919+
920+
* 3: Actual/365
921+
922+
* 4: European 30/360
923+
924+
**Remarks:**
925+
926+
* Dates are stored as serial numbers. For example, January 1, 1900 is 1, and January 1, 2008 is 39448.
927+
928+
* If settlement or maturity is not valid, `COUPDAYBS` returns `#VALUE!`.
929+
930+
* If frequency is any number other than 1, 2, or 4, `COUPDAYBS` returns `#NUM!`.
931+
932+
* If basis is outside the range 0-4, it returns `#NUM!`.
933+
934+
* If settlement is greater than or equal to maturity, it returns `#NUM!`.
935+
936+
937+
938+
## COUPDAYSNC
939+
940+
The function `COUPDAYSNC` returns the number of days from the settlement date to the next coupon date.
941+
942+
**Syntax:**
943+
944+
_COUPDAYSNC(settlement, maturity, frequency, [basis])_
945+
946+
**Where:**
947+
948+
* settlement: The security's settlement date.
949+
950+
* maturity: The security's maturity date.
951+
952+
* frequency: The number of coupon payments per year (1 for annual, 2 for semiannual, 4 for quarterly).
953+
954+
* basis (Optional): The day count basis to use (default is 0: US (NASD) 30/360):
955+
956+
* 0 or omitted: US (NASD) 30/360
957+
958+
* 1: Actual/actual
959+
960+
* 2: Actual/360
961+
962+
* 3: Actual/365
963+
964+
* 4: European 30/360
965+
966+
**Remarks:**
967+
968+
* Dates are stored as serial numbers. For example, January 1, 1900 is 1, and January 1, 2008 is 39448.
969+
970+
* If settlement or maturity is not valid, `COUPDAYSNC` returns `#VALUE!`.
971+
972+
* If frequency is any number other than 1, 2, or 4, `COUPDAYSNC` returns `#NUM!`.
973+
974+
* If basis is outside the range 0-4, it returns `#NUM!`.
975+
976+
* If settlement is greater than or equal to maturity, it returns `#NUM!`.
977+
978+
979+
980+
## COUPPCD
981+
982+
The function `COUPPCD` returns a number that represents the previous coupon date before the settlement date.
983+
984+
**Syntax:**
985+
986+
_COUPPCD(settlement, maturity, frequency, [basis])_
987+
988+
**Where:**
989+
990+
* settlement: The security's settlement date.
991+
992+
* maturity: The security's maturity date.
993+
994+
* frequency: The number of coupon payments per year (1 for annual, 2 for semiannual, 4 for quarterly).
995+
996+
* basis (Optional): The day count basis to use (default is 0: US (NASD) 30/360):
997+
998+
* 0 or omitted: US (NASD) 30/360
999+
1000+
* 1: Actual/actual
1001+
1002+
* 2: Actual/360
1003+
1004+
* 3: Actual/365
1005+
1006+
* 4: European 30/360
1007+
1008+
**Remarks:**
1009+
1010+
* Dates are stored as serial numbers. For example, January 1, 1900 is 1, and January 1, 2008 is 39448.
1011+
1012+
* If settlement or maturity is not valid, `COUPPCD` returns `#VALUE!`.
1013+
1014+
* If frequency is any number other than 1, 2, or 4, `COUPPCD` returns `#NUM!`.
1015+
1016+
* If basis is outside the range 0-4, it returns `#NUM!`.
1017+
1018+
* If settlement is greater than or equal to maturity, it returns `#NUM!`.
1019+
1020+
1021+
1022+
## COUPNCD
1023+
1024+
The function `COUPNCD` returns a number that represents the next coupon date after the settlement date.
1025+
1026+
**Syntax:**
1027+
1028+
_COUPNCD(settlement, maturity, frequency, [basis])_
1029+
1030+
**Where:**
1031+
1032+
* settlement: The security's settlement date.
1033+
1034+
* maturity: The security's maturity date.
1035+
1036+
* frequency: The number of coupon payments per year (1 for annual, 2 for semiannual, 4 for quarterly).
1037+
1038+
* basis (Optional): The day count basis to use (default is 0: US (NASD) 30/360):
1039+
1040+
* 0 or omitted: US (NASD) 30/360
1041+
1042+
* 1: Actual/actual
1043+
1044+
* 2: Actual/360
1045+
1046+
* 3: Actual/365
1047+
1048+
* 4: European 30/360
1049+
1050+
**Remarks:**
1051+
1052+
* Dates are stored as serial numbers. For example, January 1, 1900 is 1, and January 1, 2008 is 39448.
1053+
1054+
* If settlement or maturity is not valid, `COUPNCD` returns `#VALUE!`.
1055+
1056+
* If frequency is any number other than 1, 2, or 4, `COUPNCD` returns `#NUM!`.
1057+
1058+
* If basis is outside the range 0-4, it returns `#NUM!`.
1059+
1060+
* If settlement is greater than or equal to maturity, it returns `#NUM!`.
1061+
1062+
1063+
1064+
## COUPNUM
1065+
1066+
The function `COUPNUM` returns the number of coupons payable between the settlement date and maturity date, rounded up to the nearest whole coupon.
1067+
1068+
**Syntax:**
1069+
1070+
_COUPNUM(settlement, maturity, frequency, [basis])_
1071+
1072+
**Where:**
1073+
1074+
* settlement: The security's settlement date.
1075+
1076+
* maturity: The security's maturity date.
1077+
1078+
* frequency: The number of coupon payments per year (1 for annual, 2 for semiannual, 4 for quarterly).
1079+
1080+
* basis (Optional): The day count basis to use (default is 0: US (NASD) 30/360):
1081+
1082+
* 0 or omitted: US (NASD) 30/360
1083+
1084+
* 1: Actual/actual
1085+
1086+
* 2: Actual/360
1087+
1088+
* 3: Actual/365
1089+
1090+
* 4: European 30/360
1091+
1092+
**Remarks:**
1093+
1094+
* Dates are stored as serial numbers. For example, January 1, 1900 is 1, and January 1, 2008 is 39448.
1095+
1096+
* If settlement or maturity is not valid, `COUPNUM` returns `#VALUE!`.
1097+
1098+
* If frequency is any number other than 1, 2, or 4, `COUPNUM` returns `#NUM!`.
1099+
1100+
* If basis is outside the range 0-4, `COUPNUM` returns `#NUM!`.
1101+
1102+
* If settlement is greater than or equal to maturity, `COUPNUM` returns `#NUM!`.

0 commit comments

Comments
 (0)