123:
124:
125:
126: PROCEDURE fx_calculator(p_date_args IN SYSTEM.QRM_DATE_TABLE,
127: p_varchar_args IN OUT NOCOPY SYSTEM.QRM_VARCHAR_TABLE,
128: p_num_args IN OUT NOCOPY xtr_md_num_table) IS
129:
130: p_spot_date date := p_date_args(1);
131: p_forward_date date := p_date_args(2);
182: p_rho_base_ask number := p_num_args(29);
183: p_rho_contra_bid number := p_num_args(30);
184: p_rho_contra_ask number := p_num_args(31);
185:
186: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
187: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
188: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
183: p_rho_contra_bid number := p_num_args(30);
184: p_rho_contra_ask number := p_num_args(31);
185:
186: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
187: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
188: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
184: p_rho_contra_ask number := p_num_args(31);
185:
186: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
187: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
188: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
185:
186: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
187: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
188: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
193: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
186: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
187: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
188: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
193: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
194: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
187: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
188: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
193: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
194: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
195: p_spot_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
188: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
193: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
194: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
195: p_spot_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
196:
189: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
193: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
194: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
195: p_spot_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
196:
197: p_rates_table xtr_md_num_table;
190: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
193: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
194: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
195: p_spot_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
196:
197: p_rates_table xtr_md_num_table;
198:
191: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
192: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
193: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
194: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
195: p_spot_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
196:
197: p_rates_table xtr_md_num_table;
198:
199: p_day_count_base number;
226:
227: df_in_rec XTR_RATE_CONVERSION.df_in_rec_type;
228: df_out_rec XTR_RATE_CONVERSION.df_out_rec_type;
229: p_int_rates xtr_md_num_table;
230: p_day_counts SYSTEM.QRM_VARCHAR_TABLE;
231: p_dis_factors xtr_md_num_table := xtr_md_num_table();
232:
233: p_delta xtr_md_num_table;
234: p_rho xtr_md_num_table;
258: p_contra_day_count := 'ACTUAL/ACTUAL';
259: p_usd_day_count := 'ACTUAL/ACTUAL';
260: -- ****************** --
261:
262: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD');
263: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_contra_ccy,'USD');
264:
265: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
266: p_contra_currencies);
259: p_usd_day_count := 'ACTUAL/ACTUAL';
260: -- ****************** --
261:
262: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD');
263: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_contra_ccy,'USD');
264:
265: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
266: p_contra_currencies);
267: p_base_curve := p_curve_codes(1);
291: p_ow_spot_rates);
292: p_base_quote_usd := p_spot_quote_bases(1);
293: p_contra_quote_usd := p_spot_quote_bases(2);
294: if (p_base_ccy = 'USD' AND p_contra_ccy <> 'USD') then
295: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
296: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
297: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
298: p_contra_quote_usd);
299: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
292: p_base_quote_usd := p_spot_quote_bases(1);
293: p_contra_quote_usd := p_spot_quote_bases(2);
294: if (p_base_ccy = 'USD' AND p_contra_ccy <> 'USD') then
295: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
296: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
297: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
298: p_contra_quote_usd);
299: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
300: elsif (p_contra_ccy = 'USD' AND p_base_ccy <> 'USD') then
293: p_contra_quote_usd := p_spot_quote_bases(2);
294: if (p_base_ccy = 'USD' AND p_contra_ccy <> 'USD') then
295: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
296: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
297: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
298: p_contra_quote_usd);
299: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
300: elsif (p_contra_ccy = 'USD' AND p_base_ccy <> 'USD') then
301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
295: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
296: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
297: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
298: p_contra_quote_usd);
299: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
300: elsif (p_contra_ccy = 'USD' AND p_base_ccy <> 'USD') then
301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd,p_base_quote_usd);
297: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
298: p_contra_quote_usd);
299: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
300: elsif (p_contra_ccy = 'USD' AND p_base_ccy <> 'USD') then
301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd,p_base_quote_usd);
304: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
305: elsif (p_base_ccy <> 'USD' AND p_contra_ccy <> 'USD') then
298: p_contra_quote_usd);
299: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
300: elsif (p_contra_ccy = 'USD' AND p_base_ccy <> 'USD') then
301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd,p_base_quote_usd);
304: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
305: elsif (p_base_ccy <> 'USD' AND p_contra_ccy <> 'USD') then
306: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
299: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
300: elsif (p_contra_ccy = 'USD' AND p_base_ccy <> 'USD') then
301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd,p_base_quote_usd);
304: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
305: elsif (p_base_ccy <> 'USD' AND p_contra_ccy <> 'USD') then
306: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
307: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
300: elsif (p_contra_ccy = 'USD' AND p_base_ccy <> 'USD') then
301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd,p_base_quote_usd);
304: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
305: elsif (p_base_ccy <> 'USD' AND p_contra_ccy <> 'USD') then
306: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
307: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
308: p_contra_ccy, p_contra_ccy);
302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd,p_base_quote_usd);
304: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
305: elsif (p_base_ccy <> 'USD' AND p_contra_ccy <> 'USD') then
306: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
307: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
308: p_contra_ccy, p_contra_ccy);
309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
310: p_contra_quote_usd,p_contra_quote_usd);
303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd,p_base_quote_usd);
304: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
305: elsif (p_base_ccy <> 'USD' AND p_contra_ccy <> 'USD') then
306: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
307: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
308: p_contra_ccy, p_contra_ccy);
309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
310: p_contra_quote_usd,p_contra_quote_usd);
311: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
305: elsif (p_base_ccy <> 'USD' AND p_contra_ccy <> 'USD') then
306: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
307: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
308: p_contra_ccy, p_contra_ccy);
309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
310: p_contra_quote_usd,p_contra_quote_usd);
311: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
312: end if;
313:
307: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
308: p_contra_ccy, p_contra_ccy);
309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
310: p_contra_quote_usd,p_contra_quote_usd);
311: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
312: end if;
313:
314: p_rates_table := get_rates_from_base(p_rate_types, p_base_currencies,
315: p_contra_currencies, p_quote_bases,
338: -- now do Interest Rates
339: p_rate_types.delete;
340: p_base_currencies.delete;
341: p_data_sides.delete;
342: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
343: 'DEFAULT','DEFAULT');
344: p_quote_bases := null;
345: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
346: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy,
341: p_data_sides.delete;
342: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
343: 'DEFAULT','DEFAULT');
344: p_quote_bases := null;
345: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
346: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy,
347: p_contra_ccy, p_contra_ccy);
348: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
349: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count, p_base_day_count,
342: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
343: 'DEFAULT','DEFAULT');
344: p_quote_bases := null;
345: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
346: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy,
347: p_contra_ccy, p_contra_ccy);
348: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
349: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count, p_base_day_count,
350: p_contra_day_count,
344: p_quote_bases := null;
345: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
346: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy,
347: p_contra_ccy, p_contra_ccy);
348: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
349: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count, p_base_day_count,
350: p_contra_day_count,
351: p_contra_day_count);
352: if (p_neither_usd) then
345: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
346: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy,
347: p_contra_ccy, p_contra_ccy);
348: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
349: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count, p_base_day_count,
350: p_contra_day_count,
351: p_contra_day_count);
352: if (p_neither_usd) then
353: p_rate_types.extend(2);
409: -- ****************** --
410:
411: -- GET DEFAULT CURVES
412: if (p_base_curve IS null) then
413: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
414: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
415: p_curve_codes := get_curves_from_base(p_curve_types,
416: p_base_currencies,
417: p_contra_currencies);
410:
411: -- GET DEFAULT CURVES
412: if (p_base_curve IS null) then
413: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
414: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
415: p_curve_codes := get_curves_from_base(p_curve_types,
416: p_base_currencies,
417: p_contra_currencies);
418: p_base_curve := p_curve_codes(1);
417: p_contra_currencies);
418: p_base_curve := p_curve_codes(1);
419: end if;
420: if (p_contra_curve IS null) then
421: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
422: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
423: p_curve_codes := get_curves_from_base(p_curve_types,
424: p_base_currencies,
425: p_contra_currencies);
418: p_base_curve := p_curve_codes(1);
419: end if;
420: if (p_contra_curve IS null) then
421: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
422: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
423: p_curve_codes := get_curves_from_base(p_curve_types,
424: p_base_currencies,
425: p_contra_currencies);
426: p_contra_curve := p_curve_codes(1);
429: -- USD curve is required, but it is null
430: -- get default USD curve
431: if (p_neither_usd) then
432: if (p_usd_curve IS null) then
433: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
434: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
435: p_curve_codes := get_curves_from_base(p_curve_types,
436: p_base_currencies,
437: p_contra_currencies);
430: -- get default USD curve
431: if (p_neither_usd) then
432: if (p_usd_curve IS null) then
433: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
434: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
435: p_curve_codes := get_curves_from_base(p_curve_types,
436: p_base_currencies,
437: p_contra_currencies);
438: p_usd_curve := p_curve_codes(1);
452: p_ow_spot_rates);
453: p_base_quote_usd := p_spot_quote_bases(1);
454: p_contra_quote_usd := p_spot_quote_bases(2);
455: if (p_base_ccy = 'USD' AND p_contra_ccy <> 'USD') then
456: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
457: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
458: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
459: p_contra_quote_usd);
460: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
453: p_base_quote_usd := p_spot_quote_bases(1);
454: p_contra_quote_usd := p_spot_quote_bases(2);
455: if (p_base_ccy = 'USD' AND p_contra_ccy <> 'USD') then
456: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
457: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
458: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
459: p_contra_quote_usd);
460: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
461: elsif (p_base_ccy <> 'USD' AND p_contra_ccy = 'USD') then
454: p_contra_quote_usd := p_spot_quote_bases(2);
455: if (p_base_ccy = 'USD' AND p_contra_ccy <> 'USD') then
456: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
457: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
458: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
459: p_contra_quote_usd);
460: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
461: elsif (p_base_ccy <> 'USD' AND p_contra_ccy = 'USD') then
462: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
456: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
457: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy, p_contra_ccy);
458: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
459: p_contra_quote_usd);
460: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
461: elsif (p_base_ccy <> 'USD' AND p_contra_ccy = 'USD') then
462: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
463: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
464: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd);
458: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd,
459: p_contra_quote_usd);
460: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
461: elsif (p_base_ccy <> 'USD' AND p_contra_ccy = 'USD') then
462: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
463: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
464: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd);
465: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
466: elsif (p_neither_usd) then
459: p_contra_quote_usd);
460: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
461: elsif (p_base_ccy <> 'USD' AND p_contra_ccy = 'USD') then
462: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
463: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
464: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd);
465: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
466: elsif (p_neither_usd) then
467: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
460: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
461: elsif (p_base_ccy <> 'USD' AND p_contra_ccy = 'USD') then
462: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
463: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
464: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd);
465: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
466: elsif (p_neither_usd) then
467: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
468: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
461: elsif (p_base_ccy <> 'USD' AND p_contra_ccy = 'USD') then
462: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
463: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
464: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd);
465: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
466: elsif (p_neither_usd) then
467: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
468: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
469: p_contra_ccy,p_contra_ccy);
463: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy, p_base_ccy);
464: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd);
465: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
466: elsif (p_neither_usd) then
467: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
468: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
469: p_contra_ccy,p_contra_ccy);
470: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
471: p_contra_quote_usd,p_contra_quote_usd);
464: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd);
465: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
466: elsif (p_neither_usd) then
467: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
468: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
469: p_contra_ccy,p_contra_ccy);
470: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
471: p_contra_quote_usd,p_contra_quote_usd);
472: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
466: elsif (p_neither_usd) then
467: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
468: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
469: p_contra_ccy,p_contra_ccy);
470: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
471: p_contra_quote_usd,p_contra_quote_usd);
472: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
473: end if;
474:
468: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
469: p_contra_ccy,p_contra_ccy);
470: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd, p_base_quote_usd,
471: p_contra_quote_usd,p_contra_quote_usd);
472: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
473: end if;
474:
475: p_rates_table := get_rates_from_curves(p_rate_types,p_curve_codes,
476: p_base_currencies,
499: p_contra_spot_ask := p_rates_table(4);
500: end if;
501:
502: -- now get INTEREST RATES
503: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
504: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_base_curve,p_base_curve,
505: p_contra_curve,p_contra_curve);
506: p_base_currencies.delete;
507: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
500: end if;
501:
502: -- now get INTEREST RATES
503: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
504: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_base_curve,p_base_curve,
505: p_contra_curve,p_contra_curve);
506: p_base_currencies.delete;
507: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
508: p_contra_ccy,p_contra_ccy);
503: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
504: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_base_curve,p_base_curve,
505: p_contra_curve,p_contra_curve);
506: p_base_currencies.delete;
507: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
508: p_contra_ccy,p_contra_ccy);
509: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation,
510: p_base_interpolation, p_contra_interpolation, p_contra_interpolation);
511:
505: p_contra_curve,p_contra_curve);
506: p_base_currencies.delete;
507: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy,p_base_ccy,
508: p_contra_ccy,p_contra_ccy);
509: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation,
510: p_base_interpolation, p_contra_interpolation, p_contra_interpolation);
511:
512: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
513: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count,p_base_day_count,
508: p_contra_ccy,p_contra_ccy);
509: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation,
510: p_base_interpolation, p_contra_interpolation, p_contra_interpolation);
511:
512: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
513: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count,p_base_day_count,
514: p_contra_day_count,p_contra_day_count);
515: p_quote_bases := null;
516: if (p_neither_usd) then
509: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation,
510: p_base_interpolation, p_contra_interpolation, p_contra_interpolation);
511:
512: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
513: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count,p_base_day_count,
514: p_contra_day_count,p_contra_day_count);
515: p_quote_bases := null;
516: if (p_neither_usd) then
517: p_rate_types.extend(2);
565: END IF;
566: -- if a spot rate is missing, go to base(defaults) section
567: if (p_base_spot_bid IS null) then
568: if (p_base_ccy <> 'USD') then
569: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
570: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
571: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
572: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
573: p_rates_table := get_rates_from_curves(p_rate_types,
566: -- if a spot rate is missing, go to base(defaults) section
567: if (p_base_spot_bid IS null) then
568: if (p_base_ccy <> 'USD') then
569: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
570: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
571: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
572: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
573: p_rates_table := get_rates_from_curves(p_rate_types,
574: p_curve_codes,
567: if (p_base_spot_bid IS null) then
568: if (p_base_ccy <> 'USD') then
569: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
570: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
571: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
572: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
573: p_rates_table := get_rates_from_curves(p_rate_types,
574: p_curve_codes,
575: p_base_currencies,
568: if (p_base_ccy <> 'USD') then
569: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
570: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
571: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
572: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
573: p_rates_table := get_rates_from_curves(p_rate_types,
574: p_curve_codes,
575: p_base_currencies,
576: p_contra_currencies,
589:
590: end if;
591: if (p_base_spot_ask IS null) then
592: if (p_base_ccy <> 'USD') then
593: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
594: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
595: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
596: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
597: p_rates_table := get_rates_from_curves(p_rate_types,
590: end if;
591: if (p_base_spot_ask IS null) then
592: if (p_base_ccy <> 'USD') then
593: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
594: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
595: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
596: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
597: p_rates_table := get_rates_from_curves(p_rate_types,
598: p_curve_codes,
591: if (p_base_spot_ask IS null) then
592: if (p_base_ccy <> 'USD') then
593: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
594: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
595: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
596: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
597: p_rates_table := get_rates_from_curves(p_rate_types,
598: p_curve_codes,
599: p_base_currencies,
592: if (p_base_ccy <> 'USD') then
593: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
594: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
595: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_quote_usd);
596: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
597: p_rates_table := get_rates_from_curves(p_rate_types,
598: p_curve_codes,
599: p_base_currencies,
600: p_contra_currencies,
611: end if;
612: end if;
613: if (p_contra_spot_bid IS null) then
614: if (p_contra_ccy <> 'USD') then
615: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
616: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
617: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
618: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
619: p_rates_table := get_rates_from_curves(p_rate_types,
612: end if;
613: if (p_contra_spot_bid IS null) then
614: if (p_contra_ccy <> 'USD') then
615: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
616: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
617: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
618: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
619: p_rates_table := get_rates_from_curves(p_rate_types,
620: p_curve_codes,
613: if (p_contra_spot_bid IS null) then
614: if (p_contra_ccy <> 'USD') then
615: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
616: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
617: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
618: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
619: p_rates_table := get_rates_from_curves(p_rate_types,
620: p_curve_codes,
621: p_base_currencies,
614: if (p_contra_ccy <> 'USD') then
615: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
616: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
617: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
618: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
619: p_rates_table := get_rates_from_curves(p_rate_types,
620: p_curve_codes,
621: p_base_currencies,
622: p_contra_currencies,
633: end if;
634: end if;
635: if (p_contra_spot_ask IS null) then
636: if (p_contra_ccy <> 'USD') then
637: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
638: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
639: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
640: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
641: p_rates_table := get_rates_from_curves(p_rate_types,
634: end if;
635: if (p_contra_spot_ask IS null) then
636: if (p_contra_ccy <> 'USD') then
637: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
638: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
639: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
640: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
641: p_rates_table := get_rates_from_curves(p_rate_types,
642: p_curve_codes,
635: if (p_contra_spot_ask IS null) then
636: if (p_contra_ccy <> 'USD') then
637: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
638: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
639: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
640: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
641: p_rates_table := get_rates_from_curves(p_rate_types,
642: p_curve_codes,
643: p_base_currencies,
636: if (p_contra_ccy <> 'USD') then
637: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
638: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
639: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_quote_usd);
640: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
641: p_rates_table := get_rates_from_curves(p_rate_types,
642: p_curve_codes,
643: p_base_currencies,
644: p_contra_currencies,
658: -- if INTEREST RATES are missing, first check if curve section is filled
659: -- if so, use curve;
660: -- else, go to base(defaults) section and default curve in curves section
661: if (p_base_int_rate_bid IS null) then
662: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
663: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
664: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
665: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
666: -- if curve section is null, go to defaults
659: -- if so, use curve;
660: -- else, go to base(defaults) section and default curve in curves section
661: if (p_base_int_rate_bid IS null) then
662: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
663: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
664: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
665: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
666: -- if curve section is null, go to defaults
667: if (p_base_curve IS null) then
660: -- else, go to base(defaults) section and default curve in curves section
661: if (p_base_int_rate_bid IS null) then
662: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
663: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
664: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
665: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
666: -- if curve section is null, go to defaults
667: if (p_base_curve IS null) then
668: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
661: if (p_base_int_rate_bid IS null) then
662: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
663: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
664: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
665: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
666: -- if curve section is null, go to defaults
667: if (p_base_curve IS null) then
668: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
669: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
664: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
665: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
666: -- if curve section is null, go to defaults
667: if (p_base_curve IS null) then
668: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
669: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
670: p_curve_codes := get_curves_from_base(p_curve_types,
671: p_base_currencies,
672: p_contra_currencies);
665: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
666: -- if curve section is null, go to defaults
667: if (p_base_curve IS null) then
668: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
669: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
670: p_curve_codes := get_curves_from_base(p_curve_types,
671: p_base_currencies,
672: p_contra_currencies);
673: -- calculate rate
683: END IF;
684: p_base_interpolation := p_interp_methods(1);
685: else
686: -- curve section not null, use curve
687: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_base_curve);
688: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation);
689: -- calculate rate
690: p_rates_table := get_rates_from_curves(p_rate_types,
691: p_curve_codes,p_base_currencies,p_contra_currencies,
684: p_base_interpolation := p_interp_methods(1);
685: else
686: -- curve section not null, use curve
687: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_base_curve);
688: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation);
689: -- calculate rate
690: p_rates_table := get_rates_from_curves(p_rate_types,
691: p_curve_codes,p_base_currencies,p_contra_currencies,
692: p_quote_bases,p_interp_methods,p_data_sides,
698: xtr_risk_debug_pkg.dlog('fx_calculator: ' || 'defaulted base bid rate',p_base_int_rate_bid);
699: END IF;
700: end if;
701: if (p_base_int_rate_ask IS null) then
702: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
703: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
705: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
706: -- if curve section is null, go to defaults
699: END IF;
700: end if;
701: if (p_base_int_rate_ask IS null) then
702: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
703: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
705: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
706: -- if curve section is null, go to defaults
707: if (p_base_curve IS null) then
700: end if;
701: if (p_base_int_rate_ask IS null) then
702: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
703: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
705: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
706: -- if curve section is null, go to defaults
707: if (p_base_curve IS null) then
708: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
701: if (p_base_int_rate_ask IS null) then
702: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
703: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_base_ccy);
704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
705: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
706: -- if curve section is null, go to defaults
707: if (p_base_curve IS null) then
708: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
709: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
705: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
706: -- if curve section is null, go to defaults
707: if (p_base_curve IS null) then
708: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
709: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
710: p_curve_codes := get_curves_from_base(p_curve_types,
711: p_base_currencies,
712: p_contra_currencies);
705: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_base_day_count);
706: -- if curve section is null, go to defaults
707: if (p_base_curve IS null) then
708: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
709: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
710: p_curve_codes := get_curves_from_base(p_curve_types,
711: p_base_currencies,
712: p_contra_currencies);
713: -- calculate rate
723: END IF;
724: p_base_interpolation := p_interp_methods(1);
725: else
726: -- curve section not null, use curve
727: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_base_curve);
728: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation);
729: p_rates_table := get_rates_from_curves(p_rate_types,
730: p_curve_codes,p_base_currencies,p_contra_currencies,
731: p_quote_bases,p_interp_methods,p_data_sides,
724: p_base_interpolation := p_interp_methods(1);
725: else
726: -- curve section not null, use curve
727: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_base_curve);
728: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_base_interpolation);
729: p_rates_table := get_rates_from_curves(p_rate_types,
730: p_curve_codes,p_base_currencies,p_contra_currencies,
731: p_quote_bases,p_interp_methods,p_data_sides,
732: p_day_count_bases,p_interest_quote,p_currency_quote,
737: xtr_risk_debug_pkg.dlog('fx_calculator: ' || 'defaulted base ask rate',p_base_int_rate_ask);
738: END IF;
739: end if;
740: if (p_contra_int_rate_bid IS null) then
741: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
742: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
743: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
744: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
745: -- if curve section is null, go to defaults
738: END IF;
739: end if;
740: if (p_contra_int_rate_bid IS null) then
741: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
742: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
743: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
744: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
745: -- if curve section is null, go to defaults
746: if (p_contra_curve IS null) then
739: end if;
740: if (p_contra_int_rate_bid IS null) then
741: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
742: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
743: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
744: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
745: -- if curve section is null, go to defaults
746: if (p_contra_curve IS null) then
747: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
740: if (p_contra_int_rate_bid IS null) then
741: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
742: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
743: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
744: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
745: -- if curve section is null, go to defaults
746: if (p_contra_curve IS null) then
747: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
748: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
743: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
744: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
745: -- if curve section is null, go to defaults
746: if (p_contra_curve IS null) then
747: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
748: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
749: p_curve_codes := get_curves_from_base(p_curve_types,
750: p_base_currencies,
751: p_contra_currencies);
744: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
745: -- if curve section is null, go to defaults
746: if (p_contra_curve IS null) then
747: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
748: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
749: p_curve_codes := get_curves_from_base(p_curve_types,
750: p_base_currencies,
751: p_contra_currencies);
752: -- calculate rate
762: END IF;
763: p_contra_interpolation := p_interp_methods(1);
764: else
765: -- curve section not null, use curve
766: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_contra_curve);
767: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_contra_interpolation);
768: p_rates_table := get_rates_from_curves(p_rate_types,
769: p_curve_codes,p_base_currencies,p_contra_currencies,
770: p_quote_bases,p_interp_methods,p_data_sides,
763: p_contra_interpolation := p_interp_methods(1);
764: else
765: -- curve section not null, use curve
766: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_contra_curve);
767: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_contra_interpolation);
768: p_rates_table := get_rates_from_curves(p_rate_types,
769: p_curve_codes,p_base_currencies,p_contra_currencies,
770: p_quote_bases,p_interp_methods,p_data_sides,
771: p_day_count_bases,p_interest_quote,p_currency_quote,
776: xtr_risk_debug_pkg.dlog('fx_calculator: ' || 'defaulted contra bid rate',p_contra_int_rate_bid);
777: END IF;
778: end if;
779: if (p_contra_int_rate_ask IS null) then
780: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
781: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
782: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
783: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
784: -- if curve section is null, go to defaults
777: END IF;
778: end if;
779: if (p_contra_int_rate_ask IS null) then
780: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
781: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
782: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
783: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
784: -- if curve section is null, go to defaults
785: if (p_contra_curve IS null) then
778: end if;
779: if (p_contra_int_rate_ask IS null) then
780: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
781: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
782: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
783: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
784: -- if curve section is null, go to defaults
785: if (p_contra_curve IS null) then
786: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
779: if (p_contra_int_rate_ask IS null) then
780: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
781: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_contra_ccy);
782: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
783: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
784: -- if curve section is null, go to defaults
785: if (p_contra_curve IS null) then
786: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
787: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
782: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
783: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
784: -- if curve section is null, go to defaults
785: if (p_contra_curve IS null) then
786: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
787: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
788: p_curve_codes := get_curves_from_base(p_curve_types,
789: p_base_currencies,
790: p_contra_currencies);
783: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count);
784: -- if curve section is null, go to defaults
785: if (p_contra_curve IS null) then
786: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
787: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
788: p_curve_codes := get_curves_from_base(p_curve_types,
789: p_base_currencies,
790: p_contra_currencies);
791: -- calculate rate
801: END IF;
802: p_contra_interpolation := p_interp_methods(1);
803: else
804: -- curve section not null, use curve
805: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_contra_curve);
806: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_contra_interpolation);
807: p_rates_table := get_rates_from_curves(p_rate_types,
808: p_curve_codes,p_base_currencies,p_contra_currencies,
809: p_quote_bases,p_interp_methods,p_data_sides,
802: p_contra_interpolation := p_interp_methods(1);
803: else
804: -- curve section not null, use curve
805: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_contra_curve);
806: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_contra_interpolation);
807: p_rates_table := get_rates_from_curves(p_rate_types,
808: p_curve_codes,p_base_currencies,p_contra_currencies,
809: p_quote_bases,p_interp_methods,p_data_sides,
810: p_day_count_bases,p_interest_quote,p_currency_quote,
816: END IF;
817: end if;
818: if (p_neither_usd) then
819: if (p_usd_int_rate_bid IS null) then
820: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
821: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
822: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
823: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
824: -- if curve section is null, go to defaults
817: end if;
818: if (p_neither_usd) then
819: if (p_usd_int_rate_bid IS null) then
820: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
821: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
822: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
823: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
824: -- if curve section is null, go to defaults
825: if (p_usd_curve IS null) then
818: if (p_neither_usd) then
819: if (p_usd_int_rate_bid IS null) then
820: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
821: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
822: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
823: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
824: -- if curve section is null, go to defaults
825: if (p_usd_curve IS null) then
826: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
819: if (p_usd_int_rate_bid IS null) then
820: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
821: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
822: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
823: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
824: -- if curve section is null, go to defaults
825: if (p_usd_curve IS null) then
826: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
827: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
822: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
823: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
824: -- if curve section is null, go to defaults
825: if (p_usd_curve IS null) then
826: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
827: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
828: p_curve_codes := get_curves_from_base(p_curve_types,
829: p_base_currencies,
830: p_contra_currencies);
823: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
824: -- if curve section is null, go to defaults
825: if (p_usd_curve IS null) then
826: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
827: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
828: p_curve_codes := get_curves_from_base(p_curve_types,
829: p_base_currencies,
830: p_contra_currencies);
831: -- calculate rate
841: END IF;
842: p_usd_interpolation := p_interp_methods(1);
843: else
844: -- curve section not null, use curve
845: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_usd_curve);
846: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_usd_interpolation);
847: p_rates_table := get_rates_from_curves(p_rate_types,
848: p_curve_codes,p_base_currencies,p_contra_currencies,
849: p_quote_bases,p_interp_methods,p_data_sides,
842: p_usd_interpolation := p_interp_methods(1);
843: else
844: -- curve section not null, use curve
845: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_usd_curve);
846: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_usd_interpolation);
847: p_rates_table := get_rates_from_curves(p_rate_types,
848: p_curve_codes,p_base_currencies,p_contra_currencies,
849: p_quote_bases,p_interp_methods,p_data_sides,
850: p_day_count_bases,p_interest_quote,p_currency_quote,
855: xtr_risk_debug_pkg.dlog('fx_calculator: ' || 'defaulted usd bid rate',p_usd_int_rate_bid);
856: END IF;
857: end if;
858: if (p_usd_int_rate_ask IS null) then
859: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
860: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
861: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
862: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
863: -- if curve section is null, go to defaults
856: END IF;
857: end if;
858: if (p_usd_int_rate_ask IS null) then
859: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
860: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
861: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
862: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
863: -- if curve section is null, go to defaults
864: if (p_usd_curve IS null) then
857: end if;
858: if (p_usd_int_rate_ask IS null) then
859: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
860: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
861: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
862: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
863: -- if curve section is null, go to defaults
864: if (p_usd_curve IS null) then
865: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
858: if (p_usd_int_rate_ask IS null) then
859: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
860: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE('USD');
861: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
862: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
863: -- if curve section is null, go to defaults
864: if (p_usd_curve IS null) then
865: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
866: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
861: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
862: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
863: -- if curve section is null, go to defaults
864: if (p_usd_curve IS null) then
865: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
866: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
867: p_curve_codes := get_curves_from_base(p_curve_types,
868: p_base_currencies,
869: p_contra_currencies);
862: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_usd_day_count);
863: -- if curve section is null, go to defaults
864: if (p_usd_curve IS null) then
865: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
866: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
867: p_curve_codes := get_curves_from_base(p_curve_types,
868: p_base_currencies,
869: p_contra_currencies);
870: -- calculate rate
880: END IF;
881: p_usd_interpolation := p_interp_methods(1);
882: else
883: -- curve section not null, use curve
884: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_usd_curve);
885: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_usd_interpolation);
886: p_rates_table := get_rates_from_curves(p_rate_types,
887: p_curve_codes,p_base_currencies,p_contra_currencies,
888: p_quote_bases,p_interp_methods,p_data_sides,
881: p_usd_interpolation := p_interp_methods(1);
882: else
883: -- curve section not null, use curve
884: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_usd_curve);
885: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_usd_interpolation);
886: p_rates_table := get_rates_from_curves(p_rate_types,
887: p_curve_codes,p_base_currencies,p_contra_currencies,
888: p_quote_bases,p_interp_methods,p_data_sides,
889: p_day_count_bases,p_interest_quote,p_currency_quote,
1119: -- delta spot
1120: p_int_rates := xtr_md_num_table(p_contra_int_rate_bid,p_contra_int_rate_ask,
1121: p_base_int_rate_bid, p_base_int_rate_ask,
1122: p_usd_int_rate_bid, p_usd_int_rate_ask);
1123: p_day_counts := SYSTEM.QRM_VARCHAR_TABLE(p_contra_day_count, p_contra_day_count,
1124: p_base_day_count, p_base_day_count,
1125: p_usd_day_count, p_usd_day_count);
1126: IF (g_proc_level>=g_debug_level) THEN
1127: xtr_risk_debug_pkg.dpush('fx_calculator: ' || 'Calculating Delta Spot');
1271: END fx_calculator;
1272:
1273:
1274:
1275: FUNCTION get_curves_from_base (p_curve_types SYSTEM.QRM_VARCHAR_TABLE,
1276: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1277: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE)
1278: RETURN SYSTEM.QRM_VARCHAR_TABLE IS
1279:
1272:
1273:
1274:
1275: FUNCTION get_curves_from_base (p_curve_types SYSTEM.QRM_VARCHAR_TABLE,
1276: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1277: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE)
1278: RETURN SYSTEM.QRM_VARCHAR_TABLE IS
1279:
1280:
1273:
1274:
1275: FUNCTION get_curves_from_base (p_curve_types SYSTEM.QRM_VARCHAR_TABLE,
1276: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1277: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE)
1278: RETURN SYSTEM.QRM_VARCHAR_TABLE IS
1279:
1280:
1281: -- ** main cursors for defaulting ** --
1274:
1275: FUNCTION get_curves_from_base (p_curve_types SYSTEM.QRM_VARCHAR_TABLE,
1276: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1277: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE)
1278: RETURN SYSTEM.QRM_VARCHAR_TABLE IS
1279:
1280:
1281: -- ** main cursors for defaulting ** --
1282:
1297: (ccy=p_contra_ccy and contra_ccy=p_base_ccy)
1298: ORDER BY creation_date;
1299:
1300: v_curve_code varchar2(20);
1301: v_curve_codes_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1302:
1303:
1304: BEGIN
1305: IF (g_proc_level>=g_debug_level) THEN
1360:
1361:
1362:
1363: -- also extracts spot rates
1364: FUNCTION get_rates_from_curves (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1365: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE,
1366: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1361:
1362:
1363: -- also extracts spot rates
1364: FUNCTION get_rates_from_curves (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1365: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE,
1366: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1369: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1362:
1363: -- also extracts spot rates
1364: FUNCTION get_rates_from_curves (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1365: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE,
1366: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1369: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1370: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1363: -- also extracts spot rates
1364: FUNCTION get_rates_from_curves (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1365: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE,
1366: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1369: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1370: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1371: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1364: FUNCTION get_rates_from_curves (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1365: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE,
1366: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1369: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1370: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1371: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1372: p_interest_quote_basis VARCHAR2,
1365: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE,
1366: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1369: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1370: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1371: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1372: p_interest_quote_basis VARCHAR2,
1373: p_currency_quote_basis VARCHAR2,
1366: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1369: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1370: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1371: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1372: p_interest_quote_basis VARCHAR2,
1373: p_currency_quote_basis VARCHAR2,
1374: p_spot_date DATE,
1367: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1368: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1369: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1370: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1371: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1372: p_interest_quote_basis VARCHAR2,
1373: p_currency_quote_basis VARCHAR2,
1374: p_spot_date DATE,
1375: p_future_date DATE)
1379: v_table_size number := p_rate_types.count;
1380: v_rate_type varchar2(1);
1381:
1382: v_rates_table xtr_md_num_table := xtr_md_num_table();
1383: v_sides_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1384:
1385: v_in_rec_type XTR_MARKET_DATA_P.md_from_curve_in_rec_type;
1386: v_out_rec_type XTR_MARKET_DATA_P.md_from_curve_out_rec_type;
1387:
1633: end if;
1634: END get_rates_from_curves;
1635:
1636:
1637: FUNCTION get_rates_from_base (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1638: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1639: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1640: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1641: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1634: END get_rates_from_curves;
1635:
1636:
1637: FUNCTION get_rates_from_base (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1638: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1639: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1640: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1641: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1642: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1635:
1636:
1637: FUNCTION get_rates_from_base (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1638: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1639: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1640: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1641: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1642: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1643: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1636:
1637: FUNCTION get_rates_from_base (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1638: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1639: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1640: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1641: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1642: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1643: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1644: p_interest_quote_basis VARCHAR2,
1637: FUNCTION get_rates_from_base (p_rate_types SYSTEM.QRM_VARCHAR_TABLE,
1638: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1639: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1640: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1641: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1642: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1643: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1644: p_interest_quote_basis VARCHAR2,
1645: p_currency_quote_basis VARCHAR2,
1638: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE,
1639: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1640: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1641: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1642: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1643: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1644: p_interest_quote_basis VARCHAR2,
1645: p_currency_quote_basis VARCHAR2,
1646: p_spot_date DATE,
1639: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE,
1640: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE,
1641: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE,
1642: p_data_sides SYSTEM.QRM_VARCHAR_TABLE,
1643: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE,
1644: p_interest_quote_basis VARCHAR2,
1645: p_currency_quote_basis VARCHAR2,
1646: p_spot_date DATE,
1647: p_future_date DATE)
1646: p_spot_date DATE,
1647: p_future_date DATE)
1648: RETURN xtr_md_num_table IS
1649:
1650: v_curves_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1651: --v_sides_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1652: v_rates_table xtr_md_num_table := xtr_md_num_table();
1653:
1654: v_rate_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1647: p_future_date DATE)
1648: RETURN xtr_md_num_table IS
1649:
1650: v_curves_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1651: --v_sides_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1652: v_rates_table xtr_md_num_table := xtr_md_num_table();
1653:
1654: v_rate_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1655: v_base_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1650: v_curves_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1651: --v_sides_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1652: v_rates_table xtr_md_num_table := xtr_md_num_table();
1653:
1654: v_rate_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1655: v_base_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1656: v_contra_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1657: v_curve SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1658:
1651: --v_sides_table SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1652: v_rates_table xtr_md_num_table := xtr_md_num_table();
1653:
1654: v_rate_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1655: v_base_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1656: v_contra_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1657: v_curve SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1658:
1659: v_in_rec_type XTR_MARKET_DATA_P.md_from_curve_in_rec_type;
1652: v_rates_table xtr_md_num_table := xtr_md_num_table();
1653:
1654: v_rate_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1655: v_base_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1656: v_contra_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1657: v_curve SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1658:
1659: v_in_rec_type XTR_MARKET_DATA_P.md_from_curve_in_rec_type;
1660: v_out_rec_type XTR_MARKET_DATA_P.md_from_curve_out_rec_type;
1653:
1654: v_rate_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1655: v_base_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1656: v_contra_ccy SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1657: v_curve SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1658:
1659: v_in_rec_type XTR_MARKET_DATA_P.md_from_curve_in_rec_type;
1660: v_out_rec_type XTR_MARKET_DATA_P.md_from_curve_out_rec_type;
1661:
1744: FUNCTION get_spot_quotation_basis(p_base_currency IN VARCHAR2,
1745: p_contra_currency IN VARCHAR2,
1746: p_overwrite_sys IN BOOLEAN)
1747:
1748: RETURN SYSTEM.QRM_VARCHAR_TABLE IS
1749:
1750: p_ccy_a varchar2(15);
1751: p_ccy_b varchar2(15);
1752: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1748: RETURN SYSTEM.QRM_VARCHAR_TABLE IS
1749:
1750: p_ccy_a varchar2(15);
1751: p_ccy_b varchar2(15);
1752: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1753:
1754: p_no_usd boolean := (p_base_currency <> 'USD' AND
1755: p_contra_currency <> 'USD');
1756:
1852: v_fra_rec_out XTR_MM_COVERS.INT_FORW_RATE_OUT_REC_TYPE;
1853: CURSOR default_currency_cursor is
1854: select param_value from xtr_pro_param
1855: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
1856: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
1857: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve,p_rate_curve);
1858: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1853: CURSOR default_currency_cursor is
1854: select param_value from xtr_pro_param
1855: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
1856: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
1857: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve,p_rate_curve);
1858: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1854: select param_value from xtr_pro_param
1855: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
1856: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
1857: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve,p_rate_curve);
1858: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1862: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
1855: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
1856: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
1857: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve,p_rate_curve);
1858: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1862: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
1863: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis,p_day_count_basis);
1856: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
1857: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve,p_rate_curve);
1858: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1862: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
1863: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis,p_day_count_basis);
1864: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
1857: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve,p_rate_curve);
1858: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1862: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
1863: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis,p_day_count_basis);
1864: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
1865: v_default_curve SYSTEM.QRM_VARCHAR_TABLE;
1858: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1862: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
1863: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis,p_day_count_basis);
1864: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
1865: v_default_curve SYSTEM.QRM_VARCHAR_TABLE;
1866: BEGIN
1859: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
1860: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation,p_interpolation);
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1862: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
1863: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis,p_day_count_basis);
1864: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
1865: v_default_curve SYSTEM.QRM_VARCHAR_TABLE;
1866: BEGIN
1867: --xtr_risk_debug_pkg.start_debug('/sqlcom/out/findv11i','sktest.dbg');
1861: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
1862: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
1863: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis,p_day_count_basis);
1864: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
1865: v_default_curve SYSTEM.QRM_VARCHAR_TABLE;
1866: BEGIN
1867: --xtr_risk_debug_pkg.start_debug('/sqlcom/out/findv11i','sktest.dbg');
1868: --xtr_risk_debug_pkg.start_debug;
1869: IF (g_proc_level>=g_debug_level) THEN
2090: v_fra_rec_out XTR_MM_COVERS.FRA_SETTLEMENT_OUT_REC_TYPE;
2091: CURSOR default_currency_cursor is
2092: select param_value from xtr_pro_param
2093: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
2094: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2095: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve);
2096: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2091: CURSOR default_currency_cursor is
2092: select param_value from xtr_pro_param
2093: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
2094: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2095: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve);
2096: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2099: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_quote_basis);
2092: select param_value from xtr_pro_param
2093: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
2094: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2095: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve);
2096: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2099: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_quote_basis);
2100: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
2093: where param_name = 'SYSTEM_FUNCTIONAL_CCY';
2094: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2095: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve);
2096: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2099: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_quote_basis);
2100: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
2101: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis);
2094: v_curve_type SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2095: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve);
2096: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2099: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_quote_basis);
2100: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
2101: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis);
2102: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2095: v_curve_code SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_rate_curve);
2096: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2099: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_quote_basis);
2100: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
2101: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis);
2102: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2103: v_days_array XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2096: v_base_currency SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2099: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_quote_basis);
2100: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
2101: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis);
2102: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2103: v_days_array XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2104: v_pvc_array XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2097: v_interpolation SYSTEM.QRM_VARCHAR_TABLE :=
2098: SYSTEM.QRM_VARCHAR_TABLE(p_interpolation);
2099: v_data_side SYSTEM.QRM_VARCHAR_TABLE := SYSTEM.QRM_VARCHAR_TABLE(p_quote_basis);
2100: v_day_count_basis SYSTEM.QRM_VARCHAR_TABLE :=
2101: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis);
2102: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2103: v_days_array XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2104: v_pvc_array XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2105: v_default_curve SYSTEM.QRM_VARCHAR_TABLE;
2101: SYSTEM.QRM_VARCHAR_TABLE(p_day_count_basis);
2102: v_rates XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2103: v_days_array XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2104: v_pvc_array XTR_MD_NUM_TABLE := XTR_MD_NUM_TABLE();
2105: v_default_curve SYSTEM.QRM_VARCHAR_TABLE;
2106: v_ss_bid NUMBER;
2107: v_ss_ask NUMBER;
2108: v_sm_bid NUMBER;
2109: v_sm_ask NUMBER;
2360:
2361: --added by jbrodsky 11/02/01
2362:
2363: PROCEDURE fxo_calculator(p_date_args IN SYSTEM.QRM_DATE_TABLE,
2364: p_varchar_args IN OUT NOCOPY SYSTEM.QRM_VARCHAR_TABLE,
2365: p_num_args IN OUT NOCOPY xtr_md_num_table) IS
2366:
2367: p_spot_date date := p_date_args(1);
2368: p_exp_date date := p_date_args(2);
2436:
2437: --Inputs for implied volatility calculation
2438: p_rates_table XTR_MD_NUM_TABLE;
2439: p_interest_rates XTR_MD_NUM_TABLE;
2440: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
2441: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
2442: p_compound_freq XTR_MD_NUM_TABLE;
2443: p_spot_rates XTR_MD_NUM_TABLE;
2444: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
2437: --Inputs for implied volatility calculation
2438: p_rates_table XTR_MD_NUM_TABLE;
2439: p_interest_rates XTR_MD_NUM_TABLE;
2440: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
2441: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
2442: p_compound_freq XTR_MD_NUM_TABLE;
2443: p_spot_rates XTR_MD_NUM_TABLE;
2444: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
2445: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
2440: p_day_count_bases SYSTEM.QRM_VARCHAR_TABLE;
2441: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
2442: p_compound_freq XTR_MD_NUM_TABLE;
2443: p_spot_rates XTR_MD_NUM_TABLE;
2444: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
2445: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
2446: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
2447: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
2448: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
2441: p_rate_types SYSTEM.QRM_VARCHAR_TABLE;
2442: p_compound_freq XTR_MD_NUM_TABLE;
2443: p_spot_rates XTR_MD_NUM_TABLE;
2444: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
2445: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
2446: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
2447: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
2448: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
2449: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
2442: p_compound_freq XTR_MD_NUM_TABLE;
2443: p_spot_rates XTR_MD_NUM_TABLE;
2444: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
2445: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
2446: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
2447: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
2448: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
2449: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
2450: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
2443: p_spot_rates XTR_MD_NUM_TABLE;
2444: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
2445: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
2446: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
2447: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
2448: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
2449: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
2450: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
2451:
2444: p_curve_types SYSTEM.QRM_VARCHAR_TABLE;
2445: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
2446: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
2447: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
2448: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
2449: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
2450: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
2451:
2452: --indicator of whether either currency is USD
2445: p_curve_codes SYSTEM.QRM_VARCHAR_TABLE;
2446: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
2447: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
2448: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
2449: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
2450: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
2451:
2452: --indicator of whether either currency is USD
2453: p_neither_usd boolean := (p_foreign_ccy<>'USD' AND p_domestic_ccy<>'USD');
2446: p_base_currencies SYSTEM.QRM_VARCHAR_TABLE;
2447: p_contra_currencies SYSTEM.QRM_VARCHAR_TABLE;
2448: p_quote_bases SYSTEM.QRM_VARCHAR_TABLE;
2449: p_interp_methods SYSTEM.QRM_VARCHAR_TABLE;
2450: p_data_sides SYSTEM.QRM_VARCHAR_TABLE;
2451:
2452: --indicator of whether either currency is USD
2453: p_neither_usd boolean := (p_foreign_ccy<>'USD' AND p_domestic_ccy<>'USD');
2454: -- indicator of whether to overwrite quotation basis against usd
2507: xtr_risk_debug_pkg.dpush('fxo_calculator: ' || 'Calculation Based On Defaults');
2508: END IF;
2509:
2510: p_volatility_curve:='';
2511: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD');
2512: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy);
2513: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
2514: p_contra_currencies);
2515:
2508: END IF;
2509:
2510: p_volatility_curve:='';
2511: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD');
2512: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy);
2513: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
2514: p_contra_currencies);
2515:
2516: p_foreign_curve := p_curve_codes(1);
2539: p_foreign_quote_usd:= p_quote_bases(1);
2540: p_domestic_quote_usd:= p_quote_bases(2);
2541:
2542: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
2543: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2544: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2545: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2546: p_domestic_quote_usd);
2547: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2540: p_domestic_quote_usd:= p_quote_bases(2);
2541:
2542: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
2543: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2544: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2545: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2546: p_domestic_quote_usd);
2547: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2548: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2541:
2542: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
2543: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2544: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2545: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2546: p_domestic_quote_usd);
2547: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2548: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2549: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2543: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2544: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2545: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2546: p_domestic_quote_usd);
2547: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2548: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2549: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2550: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2551: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2545: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2546: p_domestic_quote_usd);
2547: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2548: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2549: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2550: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2551: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2552: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2553: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2546: p_domestic_quote_usd);
2547: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2548: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2549: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2550: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2551: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2552: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2553: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2554: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2547: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2548: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2549: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2550: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2551: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2552: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2553: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2554: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2555: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2548: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2549: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2550: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2551: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2552: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2553: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2554: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2555: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2556: p_domestic_ccy, p_domestic_ccy);
2550: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2551: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2552: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2553: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2554: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2555: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2556: p_domestic_ccy, p_domestic_ccy);
2557: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2558: p_domestic_quote_usd,p_domestic_quote_usd);
2551: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2552: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2553: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2554: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2555: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2556: p_domestic_ccy, p_domestic_ccy);
2557: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2558: p_domestic_quote_usd,p_domestic_quote_usd);
2559: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2553: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2554: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2555: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2556: p_domestic_ccy, p_domestic_ccy);
2557: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2558: p_domestic_quote_usd,p_domestic_quote_usd);
2559: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2560: end if;
2561:
2555: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2556: p_domestic_ccy, p_domestic_ccy);
2557: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2558: p_domestic_quote_usd,p_domestic_quote_usd);
2559: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2560: end if;
2561:
2562: p_rates_table := get_rates_from_base(p_rate_types, p_base_currencies,
2563: p_contra_currencies, p_quote_bases,
2589: -- now do Interest Rates
2590: p_rate_types.delete;
2591: p_base_currencies.delete;
2592: p_data_sides.delete;
2593: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
2594: 'DEFAULT','DEFAULT');
2595: p_quote_bases := null;
2596: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2597: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
2592: p_data_sides.delete;
2593: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
2594: 'DEFAULT','DEFAULT');
2595: p_quote_bases := null;
2596: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2597: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
2598: p_domestic_ccy, p_domestic_ccy);
2599: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2600: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365', 'ACTUAL365',
2593: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
2594: 'DEFAULT','DEFAULT');
2595: p_quote_bases := null;
2596: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2597: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
2598: p_domestic_ccy, p_domestic_ccy);
2599: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2600: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365', 'ACTUAL365',
2601: 'ACTUAL365',
2595: p_quote_bases := null;
2596: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2597: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
2598: p_domestic_ccy, p_domestic_ccy);
2599: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2600: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365', 'ACTUAL365',
2601: 'ACTUAL365',
2602: 'ACTUAL365'); -- bug 3611158
2603:
2596: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2597: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
2598: p_domestic_ccy, p_domestic_ccy);
2599: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2600: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365', 'ACTUAL365',
2601: 'ACTUAL365',
2602: 'ACTUAL365'); -- bug 3611158
2603:
2604:
2637:
2638:
2639: --If all curves are not input, defaults are gotten
2640: if (p_foreign_curve IS null) then
2641: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2642: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2643: p_curve_codes := get_curves_from_base(p_curve_types,
2644: p_base_currencies,
2645: p_contra_currencies);
2638:
2639: --If all curves are not input, defaults are gotten
2640: if (p_foreign_curve IS null) then
2641: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2642: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2643: p_curve_codes := get_curves_from_base(p_curve_types,
2644: p_base_currencies,
2645: p_contra_currencies);
2646: p_foreign_curve := p_curve_codes(1);
2645: p_contra_currencies);
2646: p_foreign_curve := p_curve_codes(1);
2647: end if;
2648: if (p_domestic_curve IS null) then
2649: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2650: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2651: p_curve_codes := get_curves_from_base(p_curve_types,
2652: p_base_currencies,
2653: p_contra_currencies);
2646: p_foreign_curve := p_curve_codes(1);
2647: end if;
2648: if (p_domestic_curve IS null) then
2649: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2650: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2651: p_curve_codes := get_curves_from_base(p_curve_types,
2652: p_base_currencies,
2653: p_contra_currencies);
2654: p_domestic_curve := p_curve_codes(1);
2668: p_foreign_quote_usd:= p_quote_bases(1);
2669: p_domestic_quote_usd:= p_quote_bases(2);
2670:
2671: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
2672: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2673: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2674: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2675: p_domestic_quote_usd);
2676: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2669: p_domestic_quote_usd:= p_quote_bases(2);
2670:
2671: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
2672: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2673: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2674: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2675: p_domestic_quote_usd);
2676: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2677: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2670:
2671: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
2672: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2673: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2674: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2675: p_domestic_quote_usd);
2676: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2677: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2678: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2672: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2673: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
2674: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2675: p_domestic_quote_usd);
2676: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2677: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2678: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2680: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2674: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
2675: p_domestic_quote_usd);
2676: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2677: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2678: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2680: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2681: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2682: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2675: p_domestic_quote_usd);
2676: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2677: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2678: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2680: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2681: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2682: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2683: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2676: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2677: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2678: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2680: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2681: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2682: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2683: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2684: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2677: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
2678: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
2679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2680: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2681: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2682: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2683: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2684: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2685: p_domestic_ccy, p_domestic_ccy);
2679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
2680: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2681: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2682: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2683: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2684: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2685: p_domestic_ccy, p_domestic_ccy);
2686: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2687: p_domestic_quote_usd,p_domestic_quote_usd);
2680: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
2681: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
2682: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2683: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2684: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2685: p_domestic_ccy, p_domestic_ccy);
2686: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2687: p_domestic_quote_usd,p_domestic_quote_usd);
2688: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2682: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
2683: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
2684: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2685: p_domestic_ccy, p_domestic_ccy);
2686: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2687: p_domestic_quote_usd,p_domestic_quote_usd);
2688: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2689: end if;
2690:
2684: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2685: p_domestic_ccy, p_domestic_ccy);
2686: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
2687: p_domestic_quote_usd,p_domestic_quote_usd);
2688: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2689: end if;
2690:
2691:
2692: --Gets spot rates
2717:
2718:
2719:
2720: -- now get INTEREST RATES
2721: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2722: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve,p_foreign_curve,
2723: p_domestic_curve,p_domestic_curve);
2724: p_base_currencies.delete;
2725: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2718:
2719:
2720: -- now get INTEREST RATES
2721: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2722: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve,p_foreign_curve,
2723: p_domestic_curve,p_domestic_curve);
2724: p_base_currencies.delete;
2725: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2726: p_domestic_ccy,p_domestic_ccy);
2721: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
2722: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve,p_foreign_curve,
2723: p_domestic_curve,p_domestic_curve);
2724: p_base_currencies.delete;
2725: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2726: p_domestic_ccy,p_domestic_ccy);
2727: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
2728: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
2729:
2723: p_domestic_curve,p_domestic_curve);
2724: p_base_currencies.delete;
2725: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
2726: p_domestic_ccy,p_domestic_ccy);
2727: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
2728: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
2729:
2730: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2731: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
2726: p_domestic_ccy,p_domestic_ccy);
2727: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
2728: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
2729:
2730: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2731: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
2732: 'ACTUAL365','ACTUAL365','ACTUAL365');
2733: p_quote_bases := null;
2734:
2727: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
2728: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
2729:
2730: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
2731: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
2732: 'ACTUAL365','ACTUAL365','ACTUAL365');
2733: p_quote_bases := null;
2734:
2735: p_rates_table := get_rates_from_curves(p_rate_types,p_curve_codes,
2766: END IF;
2767: -- if a spot rate is missing, go to base(defaults) section
2768: if (p_for_spot_rate_bid IS null) then
2769: if (p_foreign_ccy <> 'USD') then
2770: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2771: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2772: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2773: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2774: p_rates_table := get_rates_from_curves(p_rate_types,
2767: -- if a spot rate is missing, go to base(defaults) section
2768: if (p_for_spot_rate_bid IS null) then
2769: if (p_foreign_ccy <> 'USD') then
2770: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2771: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2772: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2773: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2774: p_rates_table := get_rates_from_curves(p_rate_types,
2775: p_curve_codes,
2768: if (p_for_spot_rate_bid IS null) then
2769: if (p_foreign_ccy <> 'USD') then
2770: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2771: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2772: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2773: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2774: p_rates_table := get_rates_from_curves(p_rate_types,
2775: p_curve_codes,
2776: p_base_currencies,
2769: if (p_foreign_ccy <> 'USD') then
2770: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2771: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2772: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2773: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2774: p_rates_table := get_rates_from_curves(p_rate_types,
2775: p_curve_codes,
2776: p_base_currencies,
2777: p_contra_currencies,
2789: -- get corresponding base ccy curve
2790: end if;
2791: if (p_for_spot_rate_ask IS null) then
2792: if (p_foreign_ccy <> 'USD') then
2793: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2794: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2795: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2796: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2797: p_rates_table := get_rates_from_curves(p_rate_types,
2790: end if;
2791: if (p_for_spot_rate_ask IS null) then
2792: if (p_foreign_ccy <> 'USD') then
2793: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2794: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2795: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2796: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2797: p_rates_table := get_rates_from_curves(p_rate_types,
2798: p_curve_codes,
2791: if (p_for_spot_rate_ask IS null) then
2792: if (p_foreign_ccy <> 'USD') then
2793: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2794: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2795: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2796: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2797: p_rates_table := get_rates_from_curves(p_rate_types,
2798: p_curve_codes,
2799: p_base_currencies,
2792: if (p_foreign_ccy <> 'USD') then
2793: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2794: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2795: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
2796: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2797: p_rates_table := get_rates_from_curves(p_rate_types,
2798: p_curve_codes,
2799: p_base_currencies,
2800: p_contra_currencies,
2811: end if;
2812: end if;
2813: if (p_dom_spot_rate_bid IS null) then
2814: if (p_domestic_ccy <> 'USD') then
2815: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2816: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2817: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2818: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2819: p_rates_table := get_rates_from_curves(p_rate_types,
2812: end if;
2813: if (p_dom_spot_rate_bid IS null) then
2814: if (p_domestic_ccy <> 'USD') then
2815: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2816: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2817: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2818: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2819: p_rates_table := get_rates_from_curves(p_rate_types,
2820: p_curve_codes,
2813: if (p_dom_spot_rate_bid IS null) then
2814: if (p_domestic_ccy <> 'USD') then
2815: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2816: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2817: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2818: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2819: p_rates_table := get_rates_from_curves(p_rate_types,
2820: p_curve_codes,
2821: p_base_currencies,
2814: if (p_domestic_ccy <> 'USD') then
2815: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2816: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2817: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2818: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2819: p_rates_table := get_rates_from_curves(p_rate_types,
2820: p_curve_codes,
2821: p_base_currencies,
2822: p_contra_currencies,
2833: end if;
2834: end if;
2835: if (p_dom_spot_rate_ask IS null) then
2836: if (p_dom_spot_rate_ask <> 'USD') then
2837: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2838: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2839: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2840: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2841: p_rates_table := get_rates_from_curves(p_rate_types,
2834: end if;
2835: if (p_dom_spot_rate_ask IS null) then
2836: if (p_dom_spot_rate_ask <> 'USD') then
2837: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2838: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2839: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2840: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2841: p_rates_table := get_rates_from_curves(p_rate_types,
2842: p_curve_codes,
2835: if (p_dom_spot_rate_ask IS null) then
2836: if (p_dom_spot_rate_ask <> 'USD') then
2837: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2838: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2839: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2840: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2841: p_rates_table := get_rates_from_curves(p_rate_types,
2842: p_curve_codes,
2843: p_base_currencies,
2836: if (p_dom_spot_rate_ask <> 'USD') then
2837: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
2838: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2839: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
2840: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2841: p_rates_table := get_rates_from_curves(p_rate_types,
2842: p_curve_codes,
2843: p_base_currencies,
2844: p_contra_currencies,
2858: -- if INTEREST RATES are missing, first check if curve section is filled
2859: -- if so, use curve;
2860: -- else, go to base(defaults) section and default curve in curves section
2861: if (p_for_int_rate_bid IS null) then
2862: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2863: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2864: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2865: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2866: -- if curve section is null, go to defaults
2859: -- if so, use curve;
2860: -- else, go to base(defaults) section and default curve in curves section
2861: if (p_for_int_rate_bid IS null) then
2862: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2863: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2864: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2865: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2866: -- if curve section is null, go to defaults
2867: if (p_foreign_curve IS null) then
2860: -- else, go to base(defaults) section and default curve in curves section
2861: if (p_for_int_rate_bid IS null) then
2862: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2863: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2864: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2865: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2866: -- if curve section is null, go to defaults
2867: if (p_foreign_curve IS null) then
2868: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2861: if (p_for_int_rate_bid IS null) then
2862: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2863: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2864: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2865: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2866: -- if curve section is null, go to defaults
2867: if (p_foreign_curve IS null) then
2868: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2869: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2864: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2865: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2866: -- if curve section is null, go to defaults
2867: if (p_foreign_curve IS null) then
2868: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2869: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2870: p_curve_codes := get_curves_from_base(p_curve_types,
2871: p_base_currencies,
2872: p_contra_currencies);
2865: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2866: -- if curve section is null, go to defaults
2867: if (p_foreign_curve IS null) then
2868: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2869: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2870: p_curve_codes := get_curves_from_base(p_curve_types,
2871: p_base_currencies,
2872: p_contra_currencies);
2873: -- default curves section
2874: p_foreign_curve := p_curve_codes(1);
2875: p_foreign_interpolation := p_interp_methods(1);
2876: else
2877: -- curve section not null, use curve
2878: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2879: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2880: end if;
2881: -- calculate rate
2882: p_rates_table := get_rates_from_curves(p_rate_types,
2875: p_foreign_interpolation := p_interp_methods(1);
2876: else
2877: -- curve section not null, use curve
2878: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2879: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2880: end if;
2881: -- calculate rate
2882: p_rates_table := get_rates_from_curves(p_rate_types,
2883: p_curve_codes,p_base_currencies,p_contra_currencies,
2890: END IF;
2891: end if;
2892:
2893: if (p_for_int_rate_ask IS null) then
2894: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2895: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2896: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2897: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2898: -- if curve section is null, go to defaults
2891: end if;
2892:
2893: if (p_for_int_rate_ask IS null) then
2894: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2895: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2896: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2897: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2898: -- if curve section is null, go to defaults
2899: if (p_foreign_curve IS null) then
2892:
2893: if (p_for_int_rate_ask IS null) then
2894: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2895: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2896: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2897: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2898: -- if curve section is null, go to defaults
2899: if (p_foreign_curve IS null) then
2900: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2893: if (p_for_int_rate_ask IS null) then
2894: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2895: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
2896: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2897: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2898: -- if curve section is null, go to defaults
2899: if (p_foreign_curve IS null) then
2900: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2901: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2896: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2897: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2898: -- if curve section is null, go to defaults
2899: if (p_foreign_curve IS null) then
2900: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2901: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2902: p_curve_codes := get_curves_from_base(p_curve_types,
2903: p_base_currencies,
2904: p_contra_currencies);
2897: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
2898: -- if curve section is null, go to defaults
2899: if (p_foreign_curve IS null) then
2900: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2901: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2902: p_curve_codes := get_curves_from_base(p_curve_types,
2903: p_base_currencies,
2904: p_contra_currencies);
2905: -- default curves section
2906: p_foreign_curve := p_curve_codes(1);
2907: p_foreign_interpolation := p_interp_methods(1);
2908: else
2909: -- curve section not null, use curve
2910: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2911: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2912: end if;
2913: -- calculate rate
2914: p_rates_table := get_rates_from_curves(p_rate_types,
2907: p_foreign_interpolation := p_interp_methods(1);
2908: else
2909: -- curve section not null, use curve
2910: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2911: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2912: end if;
2913: -- calculate rate
2914: p_rates_table := get_rates_from_curves(p_rate_types,
2915: p_curve_codes,p_base_currencies,p_contra_currencies,
2921: xtr_risk_debug_pkg.dlog('fxo_calculator: ' || 'defaulted foreign ask rate',p_for_int_rate_ask);
2922: END IF;
2923: end if;
2924: if (p_dom_int_rate_bid IS null) then
2925: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2926: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2927: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2928: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2929: -- if curve section is null, go to defaults
2922: END IF;
2923: end if;
2924: if (p_dom_int_rate_bid IS null) then
2925: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2926: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2927: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2928: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2929: -- if curve section is null, go to defaults
2930: if (p_domestic_curve IS null) then
2923: end if;
2924: if (p_dom_int_rate_bid IS null) then
2925: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2926: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2927: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2928: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2929: -- if curve section is null, go to defaults
2930: if (p_domestic_curve IS null) then
2931: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2924: if (p_dom_int_rate_bid IS null) then
2925: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2926: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2927: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2928: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2929: -- if curve section is null, go to defaults
2930: if (p_domestic_curve IS null) then
2931: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2932: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2927: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
2928: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2929: -- if curve section is null, go to defaults
2930: if (p_domestic_curve IS null) then
2931: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2932: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2933: p_curve_codes := get_curves_from_base(p_curve_types,
2934: p_base_currencies,
2935: p_contra_currencies);
2928: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2929: -- if curve section is null, go to defaults
2930: if (p_domestic_curve IS null) then
2931: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2932: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2933: p_curve_codes := get_curves_from_base(p_curve_types,
2934: p_base_currencies,
2935: p_contra_currencies);
2936: -- default curves section
2937: p_domestic_curve := p_curve_codes(1);
2938: p_domestic_interpolation := p_interp_methods(1);
2939: else
2940: -- curve section not null, use curve
2941: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2942: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2943: end if;
2944: -- calculate rate
2945: p_rates_table := get_rates_from_curves(p_rate_types,
2938: p_domestic_interpolation := p_interp_methods(1);
2939: else
2940: -- curve section not null, use curve
2941: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2942: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2943: end if;
2944: -- calculate rate
2945: p_rates_table := get_rates_from_curves(p_rate_types,
2946: p_curve_codes,p_base_currencies,p_contra_currencies,
2952: xtr_risk_debug_pkg.dlog('fxo_calculator: ' || 'defaulted domestic bid rate',p_dom_int_rate_bid);
2953: END IF;
2954: end if;
2955: if (p_dom_int_rate_ask IS null) then
2956: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2957: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2958: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2959: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2960: -- if curve section is null, go to defaults
2953: END IF;
2954: end if;
2955: if (p_dom_int_rate_ask IS null) then
2956: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2957: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2958: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2959: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2960: -- if curve section is null, go to defaults
2961: if (p_domestic_curve IS null) then
2954: end if;
2955: if (p_dom_int_rate_ask IS null) then
2956: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2957: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2958: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2959: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2960: -- if curve section is null, go to defaults
2961: if (p_domestic_curve IS null) then
2962: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2955: if (p_dom_int_rate_ask IS null) then
2956: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2957: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
2958: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2959: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2960: -- if curve section is null, go to defaults
2961: if (p_domestic_curve IS null) then
2962: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2963: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2958: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
2959: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2960: -- if curve section is null, go to defaults
2961: if (p_domestic_curve IS null) then
2962: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2963: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2964: p_curve_codes := get_curves_from_base(p_curve_types,
2965: p_base_currencies,
2966: p_contra_currencies);
2959: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
2960: -- if curve section is null, go to defaults
2961: if (p_domestic_curve IS null) then
2962: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
2963: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
2964: p_curve_codes := get_curves_from_base(p_curve_types,
2965: p_base_currencies,
2966: p_contra_currencies);
2967: -- default curves section
2968: p_domestic_curve := p_curve_codes(1);
2969: p_domestic_interpolation := p_interp_methods(1);
2970: else
2971: -- curve section not null, use curve
2972: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2973: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2974: end if;
2975: -- calculate rate
2976: p_rates_table := get_rates_from_curves(p_rate_types,
2969: p_domestic_interpolation := p_interp_methods(1);
2970: else
2971: -- curve section not null, use curve
2972: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
2973: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
2974: end if;
2975: -- calculate rate
2976: p_rates_table := get_rates_from_curves(p_rate_types,
2977: p_curve_codes,p_base_currencies,p_contra_currencies,
2992: END IF;
2993:
2994:
2995: END IF;
2996: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count, p_foreign_day_count);
2997:
2998: --Interest rates needed to calculate implied volatility. Need to verify which
2999: --side we want bid and ask on.
3000:
3037: p_option_indicator:='P';
3038: END IF;
3039:
3040: -- sets up rate type for calculate_implied_volatility ('S' for simple)
3041: p_rate_types:= SYSTEM.QRM_VARCHAR_TABLE(p_rate_type, p_rate_type);
3042:
3043:
3044: --Must give dummy values to compound freq
3045: p_compound_freq:=XTR_MD_NUM_TABLE(1, 1);
3068:
3069: p_volatility_curve:='';
3070: --Only want to set volatility curve if volatility has not been input
3071: if (p_volatility IS null) THEN
3072: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD', 'FXVOL');
3073: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy, p_foreign_ccy);
3074: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null, p_domestic_ccy);
3075: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT', 'DEFAULT');
3076: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3069: p_volatility_curve:='';
3070: --Only want to set volatility curve if volatility has not been input
3071: if (p_volatility IS null) THEN
3072: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD', 'FXVOL');
3073: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy, p_foreign_ccy);
3074: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null, p_domestic_ccy);
3075: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT', 'DEFAULT');
3076: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3077: p_contra_currencies);
3070: --Only want to set volatility curve if volatility has not been input
3071: if (p_volatility IS null) THEN
3072: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD', 'FXVOL');
3073: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy, p_foreign_ccy);
3074: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null, p_domestic_ccy);
3075: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT', 'DEFAULT');
3076: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3077: p_contra_currencies);
3078:
3071: if (p_volatility IS null) THEN
3072: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD', 'FXVOL');
3073: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy, p_foreign_ccy);
3074: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null, p_domestic_ccy);
3075: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT', 'DEFAULT');
3076: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3077: p_contra_currencies);
3078:
3079: p_foreign_curve := p_curve_codes(1);
3079: p_foreign_curve := p_curve_codes(1);
3080: p_domestic_curve := p_curve_codes(2);
3081: p_volatility_curve := p_curve_codes(3);
3082: else
3083: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD');
3084: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy);
3085: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null);
3086: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3087: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3080: p_domestic_curve := p_curve_codes(2);
3081: p_volatility_curve := p_curve_codes(3);
3082: else
3083: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD');
3084: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy);
3085: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null);
3086: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3087: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3088: p_contra_currencies);
3081: p_volatility_curve := p_curve_codes(3);
3082: else
3083: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD');
3084: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy);
3085: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null);
3086: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3087: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3088: p_contra_currencies);
3089:
3082: else
3083: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD');
3084: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_domestic_ccy);
3085: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE(null, null);
3086: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3087: p_curve_codes := get_curves_from_base(p_curve_types,p_base_currencies,
3088: p_contra_currencies);
3089:
3090: p_foreign_curve := p_curve_codes(1);
3113: p_foreign_quote_usd:= p_quote_bases(1);
3114: p_domestic_quote_usd:= p_quote_bases(2);
3115:
3116: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
3117: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3118: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3119: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3120: p_domestic_quote_usd);
3121: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3114: p_domestic_quote_usd:= p_quote_bases(2);
3115:
3116: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
3117: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3118: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3119: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3120: p_domestic_quote_usd);
3121: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3122: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3115:
3116: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
3117: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3118: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3119: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3120: p_domestic_quote_usd);
3121: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3122: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3123: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3117: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3118: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3119: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3120: p_domestic_quote_usd);
3121: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3122: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3123: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3124: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3118: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3119: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3120: p_domestic_quote_usd);
3121: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3122: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3123: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3124: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3119: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3120: p_domestic_quote_usd);
3121: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3122: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3123: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3124: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3127: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3121: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3122: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3123: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3124: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3127: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3128: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3122: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3123: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3124: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3127: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3128: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3130: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3123: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3124: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3127: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3128: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3130: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3131: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3124: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3127: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3128: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3130: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3131: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3132: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3125: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3127: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3128: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3130: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3131: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3132: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3133: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3126: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3127: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3128: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3130: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3131: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3132: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3133: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3134: p_domestic_ccy, p_domestic_ccy);
3128: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3130: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3131: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3132: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3133: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3134: p_domestic_ccy, p_domestic_ccy);
3135: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3136: p_domestic_quote_usd,p_domestic_quote_usd);
3129: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3130: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null);
3131: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3132: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3133: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3134: p_domestic_ccy, p_domestic_ccy);
3135: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3136: p_domestic_quote_usd,p_domestic_quote_usd);
3137: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3131: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3132: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3133: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3134: p_domestic_ccy, p_domestic_ccy);
3135: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3136: p_domestic_quote_usd,p_domestic_quote_usd);
3137: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3138: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3139: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null, null, null);
3133: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3134: p_domestic_ccy, p_domestic_ccy);
3135: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3136: p_domestic_quote_usd,p_domestic_quote_usd);
3137: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3138: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3139: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null, null, null);
3140: end if;
3141:
3134: p_domestic_ccy, p_domestic_ccy);
3135: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3136: p_domestic_quote_usd,p_domestic_quote_usd);
3137: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3138: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3139: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null, null, null);
3140: end if;
3141:
3142:
3135: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3136: p_domestic_quote_usd,p_domestic_quote_usd);
3137: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3138: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3139: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null, null, null);
3140: end if;
3141:
3142:
3143: p_rates_table := get_rates_from_base(p_rate_types, p_base_currencies,
3170: -- now do Interest Rates
3171: p_rate_types.delete;
3172: p_base_currencies.delete;
3173: p_data_sides.delete;
3174: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
3175: 'DEFAULT','DEFAULT');
3176: p_quote_bases := null;
3177: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3178: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
3173: p_data_sides.delete;
3174: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
3175: 'DEFAULT','DEFAULT');
3176: p_quote_bases := null;
3177: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3178: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
3179: p_domestic_ccy, p_domestic_ccy);
3180: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3181: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3174: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT',
3175: 'DEFAULT','DEFAULT');
3176: p_quote_bases := null;
3177: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3178: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
3179: p_domestic_ccy, p_domestic_ccy);
3180: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3181: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3182: 'ACTUAL365', 'ACTUAL365', 'ACTUAL365');
3176: p_quote_bases := null;
3177: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3178: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
3179: p_domestic_ccy, p_domestic_ccy);
3180: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3181: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3182: 'ACTUAL365', 'ACTUAL365', 'ACTUAL365');
3183:
3184: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null, null, null);
3177: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3178: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy,
3179: p_domestic_ccy, p_domestic_ccy);
3180: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3181: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3182: 'ACTUAL365', 'ACTUAL365', 'ACTUAL365');
3183:
3184: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null, null, null);
3185:
3180: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3181: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3182: 'ACTUAL365', 'ACTUAL365', 'ACTUAL365');
3183:
3184: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE(null, null, null, null);
3185:
3186: --Call to get interest rates
3187: p_rates_table := get_rates_from_base(p_rate_types, p_base_currencies,
3188: p_contra_currencies, p_quote_bases,
3202: p_rate_types.delete;
3203: p_base_currencies.delete;
3204: p_data_sides.delete;
3205: p_contra_currencies.delete;
3206: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3207: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3208: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3209: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3210: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3203: p_base_currencies.delete;
3204: p_data_sides.delete;
3205: p_contra_currencies.delete;
3206: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3207: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3208: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3209: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3210: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3211: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3204: p_data_sides.delete;
3205: p_contra_currencies.delete;
3206: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3207: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3208: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3209: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3210: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3211: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3212: 'ACTUAL365');
3205: p_contra_currencies.delete;
3206: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3207: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3208: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3209: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3210: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3211: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3212: 'ACTUAL365');
3213:
3206: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3207: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3208: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3209: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3210: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3211: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3212: 'ACTUAL365');
3213:
3214:
3207: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3208: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3209: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3210: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3211: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3212: 'ACTUAL365');
3213:
3214:
3215: --Call to get volatility values
3252: END IF;
3253: -- GET DEFAULT CURVES
3254:
3255: --need dummy table of contra currencies
3256: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3257: --If all curves are not input, defaults are gotten
3258: if (p_foreign_curve IS null) then
3259: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3260: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3255: --need dummy table of contra currencies
3256: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3257: --If all curves are not input, defaults are gotten
3258: if (p_foreign_curve IS null) then
3259: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3260: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3261: p_curve_codes := get_curves_from_base(p_curve_types,
3262: p_base_currencies,
3263: p_contra_currencies);
3256: p_contra_currencies:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3257: --If all curves are not input, defaults are gotten
3258: if (p_foreign_curve IS null) then
3259: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3260: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3261: p_curve_codes := get_curves_from_base(p_curve_types,
3262: p_base_currencies,
3263: p_contra_currencies);
3264: p_foreign_curve := p_curve_codes(1);
3263: p_contra_currencies);
3264: p_foreign_curve := p_curve_codes(1);
3265: end if;
3266: if (p_domestic_curve IS null) then
3267: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3268: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3269: p_curve_codes := get_curves_from_base(p_curve_types,
3270: p_base_currencies,
3271: p_contra_currencies);
3264: p_foreign_curve := p_curve_codes(1);
3265: end if;
3266: if (p_domestic_curve IS null) then
3267: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3268: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3269: p_curve_codes := get_curves_from_base(p_curve_types,
3270: p_base_currencies,
3271: p_contra_currencies);
3272: p_domestic_curve := p_curve_codes(1);
3271: p_contra_currencies);
3272: p_domestic_curve := p_curve_codes(1);
3273: end if;
3274: if (p_volatility_curve IS null AND p_volatility IS null) then
3275: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('FXVOL');
3276: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3277: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3278: p_curve_codes := get_curves_from_base(p_curve_types,
3279: p_base_currencies,
3272: p_domestic_curve := p_curve_codes(1);
3273: end if;
3274: if (p_volatility_curve IS null AND p_volatility IS null) then
3275: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('FXVOL');
3276: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3277: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3278: p_curve_codes := get_curves_from_base(p_curve_types,
3279: p_base_currencies,
3280: p_contra_currencies);
3273: end if;
3274: if (p_volatility_curve IS null AND p_volatility IS null) then
3275: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('FXVOL');
3276: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3277: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3278: p_curve_codes := get_curves_from_base(p_curve_types,
3279: p_base_currencies,
3280: p_contra_currencies);
3281: p_volatility_curve := p_curve_codes(1);
3289: p_domestic_quote_usd:= p_quote_bases(2);
3290:
3291:
3292: --curve codes are null on spot rates
3293: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3294: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3295: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3296: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3297: -- calculate Rates
3290:
3291:
3292: --curve codes are null on spot rates
3293: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3294: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3295: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3296: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3297: -- calculate Rates
3298: -- this follows the calculator table across each row
3291:
3292: --curve codes are null on spot rates
3293: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3294: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3295: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3296: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3297: -- calculate Rates
3298: -- this follows the calculator table across each row
3299: -- first do Spot Rates
3292: --curve codes are null on spot rates
3293: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3294: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3295: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT');
3296: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3297: -- calculate Rates
3298: -- this follows the calculator table across each row
3299: -- first do Spot Rates
3300: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
3297: -- calculate Rates
3298: -- this follows the calculator table across each row
3299: -- first do Spot Rates
3300: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
3301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3304: p_domestic_quote_usd);
3305: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3298: -- this follows the calculator table across each row
3299: -- first do Spot Rates
3300: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
3301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3304: p_domestic_quote_usd);
3305: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3306: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3299: -- first do Spot Rates
3300: if (p_foreign_ccy = 'USD' AND p_domestic_ccy <> 'USD') then
3301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3304: p_domestic_quote_usd);
3305: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3306: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3307: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3301: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3302: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3304: p_domestic_quote_usd);
3305: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3306: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3307: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3308: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3303: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd,
3304: p_domestic_quote_usd);
3305: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3306: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3307: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3308: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3310: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3311: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3304: p_domestic_quote_usd);
3305: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3306: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3307: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3308: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3310: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3311: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3312: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3305: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3306: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3307: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3308: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3310: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3311: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3312: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3313: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3306: elsif (p_domestic_ccy = 'USD' AND p_foreign_ccy <> 'USD') then
3307: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT');
3308: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3310: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3311: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3312: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3313: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3314: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3308: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3310: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3311: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3312: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3313: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3314: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3315: p_domestic_ccy, p_domestic_ccy);
3316: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3309: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd,p_foreign_quote_usd);
3310: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3311: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3312: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3313: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3314: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3315: p_domestic_ccy, p_domestic_ccy);
3316: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3317: p_domestic_quote_usd,p_domestic_quote_usd);
3310: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK');
3311: elsif (p_foreign_ccy <> 'USD' AND p_domestic_ccy <> 'USD') then
3312: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3313: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3314: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3315: p_domestic_ccy, p_domestic_ccy);
3316: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3317: p_domestic_quote_usd,p_domestic_quote_usd);
3318: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3312: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3313: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT','SPOT','SPOT','SPOT');
3314: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3315: p_domestic_ccy, p_domestic_ccy);
3316: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3317: p_domestic_quote_usd,p_domestic_quote_usd);
3318: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3319: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3320: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3314: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3315: p_domestic_ccy, p_domestic_ccy);
3316: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3317: p_domestic_quote_usd,p_domestic_quote_usd);
3318: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3319: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3320: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3321: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3322: end if;
3315: p_domestic_ccy, p_domestic_ccy);
3316: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3317: p_domestic_quote_usd,p_domestic_quote_usd);
3318: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3319: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3320: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3321: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3322: end if;
3323:
3316: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd, p_foreign_quote_usd,
3317: p_domestic_quote_usd,p_domestic_quote_usd);
3318: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3319: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3320: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3321: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3322: end if;
3323:
3324:
3317: p_domestic_quote_usd,p_domestic_quote_usd);
3318: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3319: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3320: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3321: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT', 'DEFAULT', 'DEFAULT', 'DEFAULT');
3322: end if;
3323:
3324:
3325: --Gets spot rates
3350:
3351:
3352:
3353: -- now get INTEREST RATES
3354: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3355: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve,p_foreign_curve,
3356: p_domestic_curve,p_domestic_curve);
3357: p_base_currencies.delete;
3358: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3351:
3352:
3353: -- now get INTEREST RATES
3354: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3355: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve,p_foreign_curve,
3356: p_domestic_curve,p_domestic_curve);
3357: p_base_currencies.delete;
3358: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3359: p_domestic_ccy,p_domestic_ccy);
3354: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD','YIELD','YIELD','YIELD');
3355: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve,p_foreign_curve,
3356: p_domestic_curve,p_domestic_curve);
3357: p_base_currencies.delete;
3358: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3359: p_domestic_ccy,p_domestic_ccy);
3360: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
3361: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
3362:
3356: p_domestic_curve,p_domestic_curve);
3357: p_base_currencies.delete;
3358: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy,p_foreign_ccy,
3359: p_domestic_ccy,p_domestic_ccy);
3360: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
3361: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
3362:
3363: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3364: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3359: p_domestic_ccy,p_domestic_ccy);
3360: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
3361: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
3362:
3363: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3364: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3365: 'ACTUAL365','ACTUAL365','ACTUAL365');
3366: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3367: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3360: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation,
3361: p_foreign_interpolation, p_domestic_interpolation, p_domestic_interpolation);
3362:
3363: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3364: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3365: 'ACTUAL365','ACTUAL365','ACTUAL365');
3366: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3367: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3368:
3362:
3363: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3364: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3365: 'ACTUAL365','ACTUAL365','ACTUAL365');
3366: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3367: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3368:
3369: p_rates_table := get_rates_from_curves(p_rate_types,p_curve_codes,
3370: p_base_currencies,
3363: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID','ASK','BID','ASK');
3364: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE('ACTUAL365',
3365: 'ACTUAL365','ACTUAL365','ACTUAL365');
3366: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3367: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY', 'DUMMY', 'DUMMY');
3368:
3369: p_rates_table := get_rates_from_curves(p_rate_types,p_curve_codes,
3370: p_base_currencies,
3371: p_contra_currencies,
3391: p_rate_types.delete;
3392: p_base_currencies.delete;
3393: p_data_sides.delete;
3394: p_contra_currencies.delete;
3395: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3396: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3397: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3392: p_base_currencies.delete;
3393: p_data_sides.delete;
3394: p_contra_currencies.delete;
3395: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3396: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3397: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3400: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3393: p_data_sides.delete;
3394: p_contra_currencies.delete;
3395: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3396: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3397: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3400: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3401: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3394: p_contra_currencies.delete;
3395: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3396: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3397: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3400: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3401: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3402: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3395: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3396: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3397: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3400: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3401: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3402: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3403:
3396: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3397: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3400: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3401: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3402: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3403:
3404: --Call to get volatility values
3397: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3400: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3401: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3402: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3403:
3404: --Call to get volatility values
3405: p_rates_table := get_rates_from_curves(p_rate_types, p_curve_codes,
3398: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3399: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3400: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3401: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3402: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3403:
3404: --Call to get volatility values
3405: p_rates_table := get_rates_from_curves(p_rate_types, p_curve_codes,
3406: p_base_currencies,
3432: IF (g_proc_level>=g_debug_level) THEN
3433: xtr_risk_debug_pkg.dpush('fxo_calculator: ' || 'Calculation Based On Rates');
3434: END IF;
3435: -- if a spot rate is missing, go to base(defaults) section
3436: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3437: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3438: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3439: if (p_for_spot_rate_bid IS null) then
3440: if (p_foreign_ccy <> 'USD') then
3433: xtr_risk_debug_pkg.dpush('fxo_calculator: ' || 'Calculation Based On Rates');
3434: END IF;
3435: -- if a spot rate is missing, go to base(defaults) section
3436: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3437: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3438: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3439: if (p_for_spot_rate_bid IS null) then
3440: if (p_foreign_ccy <> 'USD') then
3441: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3434: END IF;
3435: -- if a spot rate is missing, go to base(defaults) section
3436: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3437: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3438: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3439: if (p_for_spot_rate_bid IS null) then
3440: if (p_foreign_ccy <> 'USD') then
3441: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3442: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3437: p_contra_currencies:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3438: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3439: if (p_for_spot_rate_bid IS null) then
3440: if (p_foreign_ccy <> 'USD') then
3441: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3442: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3443: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3444: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3445: p_rates_table := get_rates_from_curves(p_rate_types,
3438: p_interp_methods:=SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3439: if (p_for_spot_rate_bid IS null) then
3440: if (p_foreign_ccy <> 'USD') then
3441: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3442: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3443: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3444: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3445: p_rates_table := get_rates_from_curves(p_rate_types,
3446: p_curve_codes,
3439: if (p_for_spot_rate_bid IS null) then
3440: if (p_foreign_ccy <> 'USD') then
3441: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3442: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3443: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3444: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3445: p_rates_table := get_rates_from_curves(p_rate_types,
3446: p_curve_codes,
3447: p_base_currencies,
3440: if (p_foreign_ccy <> 'USD') then
3441: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3442: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3443: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3444: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3445: p_rates_table := get_rates_from_curves(p_rate_types,
3446: p_curve_codes,
3447: p_base_currencies,
3448: p_contra_currencies,
3460: -- get corresponding base ccy curve
3461: end if;
3462: if (p_for_spot_rate_ask IS null) then
3463: if (p_foreign_ccy <> 'USD') then
3464: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3465: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3466: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3467: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3468: p_rates_table := get_rates_from_curves(p_rate_types,
3461: end if;
3462: if (p_for_spot_rate_ask IS null) then
3463: if (p_foreign_ccy <> 'USD') then
3464: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3465: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3466: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3467: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3468: p_rates_table := get_rates_from_curves(p_rate_types,
3469: p_curve_codes,
3462: if (p_for_spot_rate_ask IS null) then
3463: if (p_foreign_ccy <> 'USD') then
3464: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3465: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3466: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3467: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3468: p_rates_table := get_rates_from_curves(p_rate_types,
3469: p_curve_codes,
3470: p_base_currencies,
3463: if (p_foreign_ccy <> 'USD') then
3464: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3465: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3466: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3467: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3468: p_rates_table := get_rates_from_curves(p_rate_types,
3469: p_curve_codes,
3470: p_base_currencies,
3471: p_contra_currencies,
3482: end if;
3483: end if;
3484: if (p_dom_spot_rate_bid IS null) then
3485: if (p_domestic_ccy <> 'USD') then
3486: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3487: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3488: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3489: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3490: p_rates_table := get_rates_from_curves(p_rate_types,
3483: end if;
3484: if (p_dom_spot_rate_bid IS null) then
3485: if (p_domestic_ccy <> 'USD') then
3486: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3487: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3488: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3489: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3490: p_rates_table := get_rates_from_curves(p_rate_types,
3491: p_curve_codes,
3484: if (p_dom_spot_rate_bid IS null) then
3485: if (p_domestic_ccy <> 'USD') then
3486: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3487: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3488: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3489: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3490: p_rates_table := get_rates_from_curves(p_rate_types,
3491: p_curve_codes,
3492: p_base_currencies,
3485: if (p_domestic_ccy <> 'USD') then
3486: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3487: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3488: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3489: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3490: p_rates_table := get_rates_from_curves(p_rate_types,
3491: p_curve_codes,
3492: p_base_currencies,
3493: p_contra_currencies,
3499: p_currency_quote,
3500: p_spot_date, p_exp_date);
3501: p_dom_spot_rate_bid := p_rates_table(1);
3502: else
3503: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3504: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3505: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3506: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3507: p_dom_spot_rate_bid := 1;
3500: p_spot_date, p_exp_date);
3501: p_dom_spot_rate_bid := p_rates_table(1);
3502: else
3503: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3504: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3505: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3506: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3507: p_dom_spot_rate_bid := 1;
3508: end if;
3501: p_dom_spot_rate_bid := p_rates_table(1);
3502: else
3503: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3504: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3505: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3506: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3507: p_dom_spot_rate_bid := 1;
3508: end if;
3509: end if;
3502: else
3503: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3504: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3505: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3506: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3507: p_dom_spot_rate_bid := 1;
3508: end if;
3509: end if;
3510: if (p_dom_spot_rate_ask IS null) then
3508: end if;
3509: end if;
3510: if (p_dom_spot_rate_ask IS null) then
3511: if (p_domestic_ccy <> 'USD') then
3512: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3513: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3514: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3515: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3516: p_rates_table := get_rates_from_curves(p_rate_types,
3509: end if;
3510: if (p_dom_spot_rate_ask IS null) then
3511: if (p_domestic_ccy <> 'USD') then
3512: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3513: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3514: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3515: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3516: p_rates_table := get_rates_from_curves(p_rate_types,
3517: p_curve_codes,
3510: if (p_dom_spot_rate_ask IS null) then
3511: if (p_domestic_ccy <> 'USD') then
3512: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3513: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3514: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3515: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3516: p_rates_table := get_rates_from_curves(p_rate_types,
3517: p_curve_codes,
3518: p_base_currencies,
3511: if (p_domestic_ccy <> 'USD') then
3512: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3513: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3514: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_quote_usd);
3515: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3516: p_rates_table := get_rates_from_curves(p_rate_types,
3517: p_curve_codes,
3518: p_base_currencies,
3519: p_contra_currencies,
3525: p_currency_quote,
3526: p_spot_date, p_exp_date);
3527: p_dom_spot_rate_ask := p_rates_table(1);
3528: else
3529: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3530: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3531: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3532: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3533: p_dom_spot_rate_ask := 1;
3526: p_spot_date, p_exp_date);
3527: p_dom_spot_rate_ask := p_rates_table(1);
3528: else
3529: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3530: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3531: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3532: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3533: p_dom_spot_rate_ask := 1;
3534: end if;
3527: p_dom_spot_rate_ask := p_rates_table(1);
3528: else
3529: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3530: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3531: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3532: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3533: p_dom_spot_rate_ask := 1;
3534: end if;
3535: end if;
3528: else
3529: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('SPOT');
3530: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3531: p_quote_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_quote_usd);
3532: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3533: p_dom_spot_rate_ask := 1;
3534: end if;
3535: end if;
3536:
3537: -- if INTEREST RATES are missing, first check if curve section is filled
3538: -- if so, use curve;
3539: -- else, go to base(defaults) section and default curve in curves section
3540: if (p_for_int_rate_bid IS null) then
3541: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3542: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3543: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3544: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3545: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3538: -- if so, use curve;
3539: -- else, go to base(defaults) section and default curve in curves section
3540: if (p_for_int_rate_bid IS null) then
3541: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3542: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3543: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3544: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3545: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3546: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3539: -- else, go to base(defaults) section and default curve in curves section
3540: if (p_for_int_rate_bid IS null) then
3541: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3542: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3543: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3544: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3545: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3546: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3547: -- if curve section is null, go to defaults
3540: if (p_for_int_rate_bid IS null) then
3541: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3542: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3543: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3544: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3545: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3546: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3547: -- if curve section is null, go to defaults
3548: if (p_foreign_curve IS null) then
3541: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3542: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3543: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3544: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3545: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3546: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3547: -- if curve section is null, go to defaults
3548: if (p_foreign_curve IS null) then
3549: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3542: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3543: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3544: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3545: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3546: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3547: -- if curve section is null, go to defaults
3548: if (p_foreign_curve IS null) then
3549: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3550: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3545: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3546: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3547: -- if curve section is null, go to defaults
3548: if (p_foreign_curve IS null) then
3549: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3550: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3551: p_curve_codes := get_curves_from_base(p_curve_types,
3552: p_base_currencies,
3553: p_contra_currencies);
3546: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3547: -- if curve section is null, go to defaults
3548: if (p_foreign_curve IS null) then
3549: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3550: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3551: p_curve_codes := get_curves_from_base(p_curve_types,
3552: p_base_currencies,
3553: p_contra_currencies);
3554: -- default curves section
3555: p_foreign_curve := p_curve_codes(1);
3556: p_foreign_interpolation := p_interp_methods(1);
3557: else
3558: -- curve section not null, use curve
3559: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
3560: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
3561: end if;
3562: -- calculate rate
3563: p_rates_table := get_rates_from_curves(p_rate_types,
3556: p_foreign_interpolation := p_interp_methods(1);
3557: else
3558: -- curve section not null, use curve
3559: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
3560: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
3561: end if;
3562: -- calculate rate
3563: p_rates_table := get_rates_from_curves(p_rate_types,
3564: p_curve_codes,p_base_currencies,p_contra_currencies,
3571: END IF;
3572: end if;
3573:
3574: if (p_for_int_rate_ask IS null) then
3575: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3576: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3577: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3578: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3579: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3572: end if;
3573:
3574: if (p_for_int_rate_ask IS null) then
3575: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3576: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3577: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3578: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3579: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3580: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3573:
3574: if (p_for_int_rate_ask IS null) then
3575: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3576: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3577: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3578: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3579: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3580: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3581: -- if curve section is null, go to defaults
3574: if (p_for_int_rate_ask IS null) then
3575: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3576: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3577: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3578: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3579: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3580: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3581: -- if curve section is null, go to defaults
3582: if (p_foreign_curve IS null) then
3575: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3576: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3577: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3578: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3579: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3580: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3581: -- if curve section is null, go to defaults
3582: if (p_foreign_curve IS null) then
3583: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3576: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3577: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3578: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3579: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3580: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3581: -- if curve section is null, go to defaults
3582: if (p_foreign_curve IS null) then
3583: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3584: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3579: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3580: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3581: -- if curve section is null, go to defaults
3582: if (p_foreign_curve IS null) then
3583: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3584: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3585: p_curve_codes := get_curves_from_base(p_curve_types,
3586: p_base_currencies,
3587: p_contra_currencies);
3580: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_day_count);
3581: -- if curve section is null, go to defaults
3582: if (p_foreign_curve IS null) then
3583: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3584: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3585: p_curve_codes := get_curves_from_base(p_curve_types,
3586: p_base_currencies,
3587: p_contra_currencies);
3588: -- default curves section
3589: p_foreign_curve := p_curve_codes(1);
3590: p_foreign_interpolation := p_interp_methods(1);
3591: else
3592: -- curve section not null, use curve
3593: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
3594: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
3595: end if;
3596: -- calculate rate
3597: p_rates_table := get_rates_from_curves(p_rate_types,
3590: p_foreign_interpolation := p_interp_methods(1);
3591: else
3592: -- curve section not null, use curve
3593: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_curve);
3594: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_interpolation);
3595: end if;
3596: -- calculate rate
3597: p_rates_table := get_rates_from_curves(p_rate_types,
3598: p_curve_codes,p_base_currencies,p_contra_currencies,
3604: xtr_risk_debug_pkg.dlog('fxo_calculator: ' || 'defaulted foreign ask rate',p_for_int_rate_ask);
3605: END IF;
3606: end if;
3607: if (p_dom_int_rate_bid IS null) then
3608: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3609: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3610: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3611: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3612: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3605: END IF;
3606: end if;
3607: if (p_dom_int_rate_bid IS null) then
3608: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3609: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3610: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3611: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3612: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3613: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3606: end if;
3607: if (p_dom_int_rate_bid IS null) then
3608: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3609: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3610: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3611: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3612: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3613: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3614: -- if curve section is null, go to defaults
3607: if (p_dom_int_rate_bid IS null) then
3608: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3609: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3610: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3611: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3612: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3613: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3614: -- if curve section is null, go to defaults
3615: if (p_domestic_curve IS null) then
3608: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3609: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3610: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3611: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3612: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3613: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3614: -- if curve section is null, go to defaults
3615: if (p_domestic_curve IS null) then
3616: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3609: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3610: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3611: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3612: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3613: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3614: -- if curve section is null, go to defaults
3615: if (p_domestic_curve IS null) then
3616: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3617: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3612: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID');
3613: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3614: -- if curve section is null, go to defaults
3615: if (p_domestic_curve IS null) then
3616: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3617: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3618: p_curve_codes := get_curves_from_base(p_curve_types,
3619: p_base_currencies,
3620: p_contra_currencies);
3613: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3614: -- if curve section is null, go to defaults
3615: if (p_domestic_curve IS null) then
3616: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3617: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3618: p_curve_codes := get_curves_from_base(p_curve_types,
3619: p_base_currencies,
3620: p_contra_currencies);
3621: -- default curves section
3622: p_domestic_curve := p_curve_codes(1);
3623: p_domestic_interpolation := p_interp_methods(1);
3624: else
3625: -- curve section not null, use curve
3626: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_curve);
3627: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_interpolation);
3628: end if;
3629: -- calculate rate
3630: p_rates_table := get_rates_from_curves(p_rate_types,
3623: p_domestic_interpolation := p_interp_methods(1);
3624: else
3625: -- curve section not null, use curve
3626: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_curve);
3627: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_interpolation);
3628: end if;
3629: -- calculate rate
3630: p_rates_table := get_rates_from_curves(p_rate_types,
3631: p_curve_codes,p_base_currencies,p_contra_currencies,
3637: xtr_risk_debug_pkg.dlog('fxo_calculator: ' || 'defaulted domestic bid rate',p_dom_int_rate_bid);
3638: END IF;
3639: end if;
3640: if (p_dom_int_rate_ask IS null) then
3641: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3642: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3643: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3644: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3645: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3638: END IF;
3639: end if;
3640: if (p_dom_int_rate_ask IS null) then
3641: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3642: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3643: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3644: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3645: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3646: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3639: end if;
3640: if (p_dom_int_rate_ask IS null) then
3641: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3642: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3643: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3644: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3645: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3646: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3647: -- if curve section is null, go to defaults
3640: if (p_dom_int_rate_ask IS null) then
3641: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3642: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3643: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3644: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3645: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3646: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3647: -- if curve section is null, go to defaults
3648: if (p_domestic_curve IS null) then
3641: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3642: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3643: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3644: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3645: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3646: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3647: -- if curve section is null, go to defaults
3648: if (p_domestic_curve IS null) then
3649: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3642: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY');
3643: p_rate_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3644: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3645: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3646: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3647: -- if curve section is null, go to defaults
3648: if (p_domestic_curve IS null) then
3649: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3650: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3645: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('ASK');
3646: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3647: -- if curve section is null, go to defaults
3648: if (p_domestic_curve IS null) then
3649: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3650: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3651: p_curve_codes := get_curves_from_base(p_curve_types,
3652: p_base_currencies,
3653: p_contra_currencies);
3646: p_day_count_bases := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_day_count);
3647: -- if curve section is null, go to defaults
3648: if (p_domestic_curve IS null) then
3649: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('YIELD');
3650: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE('DEFAULT');
3651: p_curve_codes := get_curves_from_base(p_curve_types,
3652: p_base_currencies,
3653: p_contra_currencies);
3654: -- default curves section
3655: p_domestic_curve := p_curve_codes(1);
3656: p_domestic_interpolation := p_interp_methods(1);
3657: else
3658: -- curve section not null, use curve
3659: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_curve);
3660: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_interpolation);
3661: end if;
3662: -- calculate rate
3663: p_rates_table := get_rates_from_curves(p_rate_types,
3656: p_domestic_interpolation := p_interp_methods(1);
3657: else
3658: -- curve section not null, use curve
3659: p_curve_codes := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_curve);
3660: p_interp_methods := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_interpolation);
3661: end if;
3662: -- calculate rate
3663: p_rates_table := get_rates_from_curves(p_rate_types,
3664: p_curve_codes,p_base_currencies,p_contra_currencies,
3674: if (p_vol_bid IS null OR p_vol_ask IS null) THEN
3675:
3676: if (p_volatility_curve IS null) THEN
3677: if (p_volatility IS null) THEN
3678: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('FXVOL');
3679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3680: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3681: p_curve_codes := get_curves_from_base(p_curve_types,
3682: p_base_currencies,
3675:
3676: if (p_volatility_curve IS null) THEN
3677: if (p_volatility IS null) THEN
3678: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('FXVOL');
3679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3680: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3681: p_curve_codes := get_curves_from_base(p_curve_types,
3682: p_base_currencies,
3683: p_contra_currencies);
3676: if (p_volatility_curve IS null) THEN
3677: if (p_volatility IS null) THEN
3678: p_curve_types := SYSTEM.QRM_VARCHAR_TABLE('FXVOL');
3679: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy);
3680: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy);
3681: p_curve_codes := get_curves_from_base(p_curve_types,
3682: p_base_currencies,
3683: p_contra_currencies);
3684: p_volatility_curve := p_curve_codes(1);
3695: end if;
3696:
3697: end if;
3698: if (p_volatility_curve IS NOT null) THEN
3699: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3700: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3701: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3696:
3697: end if;
3698: if (p_volatility_curve IS NOT null) THEN
3699: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3700: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3701: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3697: end if;
3698: if (p_volatility_curve IS NOT null) THEN
3699: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3700: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3701: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3705: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3698: if (p_volatility_curve IS NOT null) THEN
3699: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3700: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3701: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3705: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3706: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3699: p_interp_methods:= SYSTEM.QRM_VARCHAR_TABLE('DEFAULT','DEFAULT');
3700: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3701: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3705: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3706: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3707:
3700: p_rate_types:=SYSTEM.QRM_VARCHAR_TABLE('FXVOL', 'FXVOL');
3701: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3705: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3706: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3707:
3708: --Call to get volatility values
3701: p_base_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_foreign_ccy, p_foreign_ccy);
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3705: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3706: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3707:
3708: --Call to get volatility values
3709: p_rates_table := get_rates_from_curves(p_rate_types, p_curve_codes,
3702: p_contra_currencies := SYSTEM.QRM_VARCHAR_TABLE(p_domestic_ccy, p_domestic_ccy);
3703: p_quote_bases:= SYSTEM.QRM_VARCHAR_TABLE('DUMMY', 'DUMMY');
3704: p_data_sides := SYSTEM.QRM_VARCHAR_TABLE('BID', 'ASK');
3705: p_day_count_bases:=SYSTEM.QRM_VARCHAR_TABLE('30/360', '30/360');
3706: p_curve_codes:=SYSTEM.QRM_VARCHAR_TABLE(p_volatility_curve, p_volatility_curve);
3707:
3708: --Call to get volatility values
3709: p_rates_table := get_rates_from_curves(p_rate_types, p_curve_codes,
3710: p_base_currencies,