DBA Data[Home] [Help]

APPS.QRM_MM_FORMULAS dependencies on QRM_MM_FORMULAS

Line 1: PACKAGE BODY QRM_MM_FORMULAS AS

1: PACKAGE BODY QRM_MM_FORMULAS AS
2: /* $Header: qrmmmflb.pls 120.14 2004/07/02 16:18:37 jhung ship $ */
3:
4: /*--------------------------------------------------------------------------
5: BLACK_OPTION_SENS Calculates sensitivities of the interest rate option price using Blacks Formula.(Hull's 4th Edition p.540)

Line 98: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.BLACK_OPTION_SENS');

94:
95: BEGIN
96:
97: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
98: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.BLACK_OPTION_SENS');
99: END IF;
100:
101: IF (v_vol = 0) THEN
102: raise e_option_vol_zero;

Line 195: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.BLACK_OPTION_SENS');

191: p_out_rec.p_gamma := (v_n_d1_a*EXP(-v_spot*v_t1))/(v_forward*v_vol*SQRT(v_t1));
192: p_out_rec.p_vega := v_forward*SQRT(v_t1)*v_n_d1_a*EXP(-v_spot*v_t1);
193:
194: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
195: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.BLACK_OPTION_SENS');
196: END IF;
197:
198: END black_option_sens;
199:

Line 239: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.DURATION');

235:
236: BEGIN
237:
238: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
239: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.DURATION');
240: END IF;
241:
242: -- fra or ni calculation if p_pvc_array is null
243: if (p_pvc_array is null) then

Line 268: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.DURATION');

264: RETURN p_num_sum/p_denom_sum;
265: end if;
266:
267: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
268: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.DURATION');
269: END IF;
270:
271: END duration;
272:

Line 304: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.MOD_DURATION');

300:
301: BEGIN
302:
303: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
304: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.MOD_DURATION');
305: END IF;
306:
307: if (p_num_payments = 0) then
308: RAISE_APPLICATION_ERROR

Line 315: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.MOD_DURATION');

311: RETURN p_duration/(1 + p_yld/p_num_payments);
312: end if;
313:
314: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
315: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.MOD_DURATION');
316: END IF;
317:
318: END mod_duration;
319:

Line 352: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.BOND_CONVEXITY');

348: p_yld NUMBER := p_yield/100;
349:
350: BEGIN
351: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
352: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.BOND_CONVEXITY');
353: END IF;
354: -- arrays should be the same size
355: if (p_cf_array.count <> p_days_array.count) then
356: -- do exception handling here

Line 376: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.BOND_CONVEXITY');

372: END LOOP;
373: -- now divide numerator and denominator
374: XTR_RISK_DEBUG_PKG.dlog('convexity before 100: '||p_num_sum/p_dirty_price);
375: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
376: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.BOND_CONVEXITY');
377: END IF;
378: RETURN p_num_sum/p_dirty_price;
379: end if;
380: END bond_convexity;

Line 409: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.DELTA_MD');

405:
406: p_delta_yield NUMBER := 0.01;
407: BEGIN
408: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
409: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.DELTA_MD');
410: END IF;
411: if (p_out = 'DELTA') then
412: RETURN -1 * p_dirty_price * p_delta_yield * p_mod_duration;
413: elsif (p_out = 'DOLLAR') then

Line 420: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.DELTA_MD');

416: RAISE_APPLICATION_ERROR
417: (-20001,'p_OUT must be ''DELTA'' or ''DOLLAR''.');
418: end if;
419: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
420: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.DELTA_MD');
421: END IF;
422: END delta_md;
423:
424: -- addition by fhu 6/13/01

Line 625: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.CALCULATE_IMPLIED_VOL');

621: iro_option_price_out XTR_MM_COVERS.BLACK_OPT_CV_OUT_REC_TYPE;
622:
623: BEGIN
624: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
625: xtr_risk_debug_pkg.dpush(null,'QRM_MM_FORMULAS.CALCULATE_IMPLIED_VOL');
626: END IF;
627: if (p_indicator='FXO') THEN
628: fx_option_price_in.p_SPOT_DATE:= p_spot_date;
629: fx_option_price_in.p_MATURITY_DATE := p_expiration_date;

Line 783: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.CALCULATE_IMPLIED_VOL');

779: v_vol_high:= v_vol_mid;
780: end if;
781: END LOOP;
782: IF (g_proc_level>=g_debug_level) THEN --bug 3236479
783: xtr_risk_debug_pkg.dpop(null,'QRM_MM_FORMULAS.CALCULATE_IMPLIED_VOL');
784: END IF;
785: END calculate_implied_volatility;
786:
787:

Line 818: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.calculate_fwd_rate');

814:
815:
816: BEGIN
817: IF (g_proc_level>=g_debug_level) THEN
818: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.calculate_fwd_rate');
819: END IF;
820: if p_deal_subtype in ('BUY', 'FUND', 'BCAP', 'SCAP') then
821: p_side := 'A';
822: else

Line 913: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.calculate_fwd_rate');

909: p_fwd_rate := p_mm_out.p_fra_rate;
910: END IF;
911:
912: IF (g_proc_level>=g_debug_level) THEN
913: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.calculate_fwd_rate');
914: END IF;
915: RETURN p_fwd_rate;
916:
917:

Line 971: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_fra');

967: p_conv_out XTR_RATE_CONVERSION.rate_conv_out_rec_type;
968:
969: BEGIN
970: IF (g_proc_level>=g_debug_level) THEN
971: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_fra');
972: XTR_RISK_DEBUG_PKG.dlog('fv_fra: ' || 'contract rate day count basis: '||p_day_count_basis);
973: END IF;
974:
975: IF (p_price_model = p_fra_dis_price_model OR

Line 1120: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_fra');

1116: END IF;
1117:
1118: END IF;
1119: IF (g_proc_level>=g_debug_level) THEN
1120: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_fra');
1121: END IF;
1122: END fv_fra;
1123:
1124:

Line 1162: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_iro');

1158: p_long_rate NUMBER;
1159:
1160: BEGIN
1161: IF (g_proc_level>=g_debug_level) THEN
1162: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_iro');
1163: END IF;
1164: IF (p_price_model = 'BLACK') THEN
1165: -- convert strike rate to Actual/365
1166: IF (p_day_count_basis_strike <> p_day_count_basis) THEN

Line 1379: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_iro');

1375: p_fair_value := p_fair_value * (-1);
1376: END IF;
1377: END IF;
1378: IF (g_proc_level>=g_debug_level) THEN
1379: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_iro');
1380: END IF;
1381: END fv_iro;
1382:
1383:

Line 1426: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_ni');

1422: p_if_out XTR_MM_COVERS.int_forw_rate_out_rec_type;
1423:
1424: BEGIN
1425: IF (g_proc_level>=g_debug_level) THEN
1426: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_ni');
1427: END IF;
1428: IF (p_price_model = 'DISC_METHOD') THEN
1429: -- get market data side
1430: -- only calculate BUY, SHORT, and ISSUE b/c COVER/SELL updates original

Line 1612: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_ni');

1608: p_reval_rate := p_conv_out.p_rate_out;
1609: END IF;
1610: END IF;
1611: IF (g_proc_level>=g_debug_level) THEN
1612: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_ni');
1613: END IF;
1614: END fv_ni;
1615:
1616:

Line 1664: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_bond');

1660: p_py_out XTR_MM_COVERS.bond_price_yield_out_rec_type;
1661:
1662: BEGIN
1663: IF (g_proc_level>=g_debug_level) THEN
1664: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_bond');
1665: END IF;
1666: IF (p_price_model = 'MARKET') THEN
1667: IF (p_deal_subtype = 'BUY') THEN
1668: p_side := 'B';

Line 1803: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_bond');

1799: XTR_RISK_DEBUG_PKG.dlog('fv_bond: ' || 'bond fair value: '||p_fair_value);
1800: END IF;
1801: END IF;
1802: IF (g_proc_level>=g_debug_level) THEN
1803: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_bond');
1804: END IF;
1805: END fv_bond;
1806:
1807:

Line 1894: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm.present_value_tmm');

1890: p_present_out XTR_MM_COVERS.presentValue_out_rec_type;
1891:
1892: BEGIN
1893: IF (g_proc_level>=g_debug_level) THEN
1894: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm.present_value_tmm');
1895: XTR_RISK_DEBUG_PKG.dlog('fv_tmm_irs_rtmm: ' || 'spot date', p_spot_date);
1896: XTR_RISK_DEBUG_PKG.dlog('fv_tmm_irs_rtmm: ' || 'start date', p_start_date);
1897: END IF;
1898: XTR_CALC_P.calc_days_run_c(p_spot_date, p_start_date,

Line 1947: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm.present_val_tmm');

1943: END IF;
1944: XTR_MM_COVERS.present_value(p_present_in, p_present_out);
1945: IF (g_proc_level>=g_debug_level) THEN
1946: XTR_RISK_DEBUG_PKG.dlog('fv_tmm_irs_rtmm: ' || 'present val', p_present_out.p_present_val);
1947: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm.present_val_tmm');
1948: END IF;
1949: return p_present_out.p_present_val;
1950: END present_val_tmm;
1951: BEGIN

Line 1953: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm');

1949: return p_present_out.p_present_val;
1950: END present_val_tmm;
1951: BEGIN
1952: IF (g_proc_level>=g_debug_level) THEN
1953: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm');
1954: END IF;
1955: IF ((p_maturity_dates.count <> p_length) OR
1956: (p_settle_dates.count <> p_length) OR
1957: (p_principal_actions.count <> p_length) OR

Line 2265: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm');

2261:
2262: END IF;
2263: END IF;
2264: IF (g_proc_level>=g_debug_level) THEN
2265: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.fv_tmm_irs_rtmm');
2266: END IF;
2267: END fv_tmm_irs_rtmm;
2268:
2269:

Line 2311: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.calculate_accrued_interest');

2307: p_annual_basis NUMBER;
2308: p_accrued_interest NUMBER;
2309: BEGIN
2310: IF (g_proc_level>=g_debug_level) THEN
2311: XTR_RISK_DEBUG_PKG.dpush(null,'QRM_MM_FORMULAS.calculate_accrued_interest');
2312: END IF;
2313: IF (p_start_date <= p_ref_date) THEN
2314: IF (p_indicator='M') THEN
2315: IF (p_maturity_date >= p_ref_date) THEN

Line 2357: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.calculate_accrued_interest');

2353: ELSE
2354: p_accrued_interest := 0;
2355: END IF;
2356: IF (g_proc_level>=g_debug_level) THEN
2357: XTR_RISK_DEBUG_PKG.dpop(null,'QRM_MM_FORMULAS.calculate_accrued_interest');
2358: END IF;
2359: RETURN p_accrued_interest;
2360:
2361: END calculate_accrued_interest;