Trade Legs
A summary of the load process for any FX leg trades that exist.
Step 1
Load all live trades from Calypso with keyword attributes of:
Cover Trade ID
ExercisedOption
ExercisedUnder
Cover Trade ID
ExercisedOption
ExercisedUnder
SalesB2BFrom
SalesB2BTo
RolledOverFrom
RolledOverTo
Load all trade ids and their keyword attributes
SELECT distinct
kw.trade_id,
cast(keyword_value as numeric) as kw_trade_id,
keyword_name,
d.desk_id
FROM calypso.trade_keyword kw
INNER JOIN calypso.trade t1 ON kw.trade_id=t1.trade_id AND t1.trade_status not in ('CANCELED','TERMINATED')
INNER JOIN calypso.trade t2 ON kw.keyword_value=cast(t2.trade_id as char) AND t2.trade_status not in ('CANCELED','TERMINATED')
LEFT JOIN
(
SELECT trade_id,
cast(keyword_value as numeric) as desk_id
FROM calypso.trade_keyword
WHERE keyword_name = 'OwningDeskBU'
) d ON kw.trade_id=d.trade_id
WHERE keyword_name in ('Cover Trade ID', 'ExercisedOption', 'ExercisedUnder',
'SalesB2BFrom', 'SalesB2BTo', 'RolledOverFrom', 'RolledOverTo')
AND isnumeric(kw.keyword_value)=1
AND isnumeric(kw.trade_id)=1
UNION
SELECT t.trade_id,
ft.parent_id as kw_trade_id,
'TakeUpParent' as keyword_name,
d.desk_id
FROM calypso.trade t
INNER JOIN calypso.product_desc p ON t.product_id=p.product_id
INNER JOIN calypso.product_fx_takeup ft ON p.product_id=ft.product_id
LEFT JOIN
(
SELECT trade_id,
cast(keyword_value as numeric) as desk_id
FROM calypso.trade_keyword
WHERE keyword_name = 'OwningDeskBU'
) d ON t.trade_id=d.trade_id
WHERE t.trade_status not in ('CANCELED','TERMINATED')
Step 2
From Calypso load all trade ids with their covering trades into a temporary database table
Load Cover Trades
CREATE TABLE #tmp_cover_trades
(
trade_id numeric(20) not null,
cov_trade_id numeric(20) null
)
INSERT INTO
#tmp_cover_trades
(trade_id, cov_trade_id)
SELECT
kw_tr.trade_id,
cov_tr.cov_trade_id
FROM
(
SELECT
distinct case
when tcc.cpty_id is not null
OR tr.cpty_ext_yn = 'N' then tk.kw_trade_id
else tk.trade_id
end as trade_id
FROM
dbo.stage_calypso_trade_keywords tk
LEFT JOIN dbo.vw_stage_load_trade_legs_trades tr ON tk.trade_id = tr.trade_id
LEFT JOIN dbo.dw_covering_counterparties tcc ON tr.cpty_id = tcc.cpty_id
AND tr.desk_id = tcc.desk_id
) kw_tr
LEFT JOIN (
SELECT
distinct case
when tcc.cpty_id is not null
OR tr.cpty_ext_yn = 'N' then tk.kw_trade_id
else tk.trade_id
end as trade_id,
case
when tcc.cpty_id is not null
OR tr.cpty_ext_yn = 'N' then tk.trade_id
else tk.kw_trade_id
end as cov_trade_id
FROM
dbo.stage_calypso_trade_keywords tk
LEFT JOIN dbo.vw_stage_load_trade_legs_trades tr ON tk.trade_id = tr.trade_id
LEFT JOIN dbo.dw_covering_counterparties tcc ON tr.cpty_id = tcc.cpty_id
AND tr.desk_id = tcc.desk_id
WHERE
tk.kw_name = 'Cover Trade ID'
UNION
SELECT
distinct case
when tcc.cpty_id is not null
OR tr.cpty_ext_yn = 'N' then tk.trade_id
else tk.kw_trade_id
end as trade_id,
case
when tcc.cpty_id is not null
OR tr.cpty_ext_yn = 'N' then tk.kw_trade_id
else tk.trade_id
end as cov_trade_id
FROM
dbo.stage_calypso_trade_keywords tk
LEFT JOIN dbo.vw_stage_load_trade_legs_trades tr ON tk.trade_id = tr.trade_id
LEFT JOIN dbo.dw_covering_counterparties tcc ON tr.cpty_id = tcc.cpty_id
AND tr.desk_id = tcc.desk_id
WHERE
tk.kw_name = 'Cover Trade ID'
) cov_tr ON kw_tr.trade_id = cov_tr.trade_id
create index idx_tmp_cover_trades_trade_id on #tmp_cover_trades (trade_id)
create index idx_tmp_cover_trades_cov_trade_id on #tmp_cover_trades (cov_trade_id)
Load production table dw_trade_legs_denorm
INSERT INTO
dbo.dw_trade_legs_denorm (
trade_id,
cpty_trade_yn,
trade_bundle_id,
trade_desk_id,
trade_product,
cov_trade_id,
cov_trade_desk_id,
cov_trade_product,
b2bf_trade_id,
b2bf_trade_desk_id,
b2bf_trade_product,
b2b2_trade_id,
b2b2_trade_desk_id,
b2b2_trade_product,
xopt_trade_id,
xopt_trade_desk_id,
xopt_trade_product,
xund_trade_id,
xund_trade_desk_id,
xund_trade_product,
rof_trade_id,
rof_trade_desk_id,
rof_trade_product,
rot_trade_id,
rot_trade_desk_id,
rot_trade_product,
tup_trade_id,
tup_trade_desk_id,
tup_trade_product,
source_lk_trade_id,
source_lk_trade_bundle_id,
source_lk_trade_desk_id,
source_lk_cov_trade_id,
source_lk_cov_trade_desk_id,
source_lk_b2bf_trade_id,
source_lk_b2bf_trade_desk_id,
source_lk_b2b2_trade_id,
source_lk_b2b2_trade_desk_id,
source_lk_xopt_trade_id,
source_lk_xopt_trade_desk_id,
source_lk_xund_trade_id,
source_lk_xund_trade_desk_id,
source_lk_rof_trade_id,
source_lk_rof_trade_desk_id,
source_lk_rot_trade_id,
source_lk_rot_trade_desk_id,
source_lk_tup_trade_id,
source_lk_tup_trade_desk_id,
system_id
)
SELECT
cov_tr.trade_id,
cov_tr.cpty_trade_yn,
cov_tr.trade_bundle_id,
cov_tr.trade_desk_id,
cov_tr.trade_product,
cov_tr.cov_trade_id,
cov_tr.cov_trade_desk_id,
cov_tr.cov_trade_product,
btbf_tr.b2bf_trade_id,
btbf_tr.b2bf_trade_desk_id,
btbf_tr.b2bf_trade_product,
btb2_tr.b2b2_trade_id,
btb2_tr.b2b2_trade_desk_id,
btb2_tr.b2b2_trade_product,
xopt_tr.xopt_trade_id,
xopt_tr.xopt_trade_desk_id,
xopt_tr.xopt_trade_product,
xund_tr.xund_trade_id,
xund_tr.xund_trade_desk_id,
xund_tr.xund_trade_product,
rof_tr.rof_trade_id,
rof_tr.rof_trade_desk_id,
rof_tr.rof_trade_product,
rot_tr.rot_trade_id,
rot_tr.rot_trade_desk_id,
rot_tr.rot_trade_product,
tup_tr.tup_trade_id,
tup_tr.tup_trade_desk_id,
tup_tr.tup_trade_product
FROM
(
SELECT
distinct ct.trade_id,
tr.cpty_ext_yn as cpty_trade_yn,
tr.bundle_id as trade_bundle_id,
tr.desk_id as trade_desk_id,
tr.product_type as trade_product,
ct.cov_trade_id,
ctr.desk_id as cov_trade_desk_id,
ctr.product_type as cov_trade_product
FROM
#tmp_cover_trades ct
LEFT JOIN dbo.vw_stage_load_trade_legs_trades tr ON ct.trade_id = tr.trade_id
LEFT JOIN dbo.vw_stage_load_trade_legs_trades ctr ON ct.cov_trade_id = ctr.trade_id
) cov_tr
LEFT JOIN (
SELECT
kt.trade_id,
kt.kw_trade_id as b2bf_trade_id,
kt.desk_id as b2bf_trade_desk_id,
tr.product_type as b2bf_trade_product
FROM
dbo.stage_calypso_trade_keywords kt
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr ON kt.trade_id = tr.trade_id
WHERE
kt.kw_name = 'SalesB2BFrom'
) btbf_tr ON cov_tr.trade_id = btbf_tr.trade_id
LEFT JOIN (
SELECT
kt.trade_id,
kt.kw_trade_id as b2b2_trade_id,
kt.desk_id as b2b2_trade_desk_id,
tr.product_type as b2b2_trade_product
FROM
dbo.stage_calypso_trade_keywords kt
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr ON kt.trade_id = tr.trade_id
WHERE
kt.kw_name = 'SalesB2BTo'
) btb2_tr ON cov_tr.trade_id = btb2_tr.trade_id
LEFT JOIN (
SELECT
kt.trade_id,
kt.kw_trade_id as xopt_trade_id,
kt.desk_id as xopt_trade_desk_id,
tr.product_type as xopt_trade_product
FROM
dbo.stage_calypso_trade_keywords kt
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr ON kt.trade_id = tr.trade_id
WHERE
kt.kw_name = 'ExercisedOption'
) xopt_tr ON cov_tr.trade_id = xopt_tr.trade_id
LEFT JOIN (
SELECT
kt.trade_id,
kt.kw_trade_id as xund_trade_id,
kt.desk_id as xund_trade_desk_id,
tr.product_type as xund_trade_product
FROM
dbo.stage_calypso_trade_keywords kt
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr ON kt.trade_id = tr.trade_id
WHERE
kt.kw_name = 'ExercisedUnder'
) xund_tr ON cov_tr.trade_id = xund_tr.trade_id
LEFT JOIN (
SELECT
kt.trade_id,
kt.kw_trade_id as rof_trade_id,
kt.desk_id as rof_trade_desk_id,
tr.product_type as rof_trade_product
FROM
dbo.stage_calypso_trade_keywords kt
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr ON kt.trade_id = tr.trade_id
WHERE
kt.kw_name = 'RolledOverFrom'
) rof_tr ON cov_tr.trade_id = rof_tr.trade_id
LEFT JOIN (
SELECT
kt.trade_id,
kt.kw_trade_id as rot_trade_id,
kt.desk_id as rot_trade_desk_id,
tr.product_type as rot_trade_product
FROM
dbo.stage_calypso_trade_keywords kt
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr ON kt.trade_id = tr.trade_id
WHERE
kw_name = 'RolledOverTo'
) rot_tr ON cov_tr.trade_id = rot_tr.trade_id
LEFT JOIN (
SELECT
kt.trade_id,
kt.kw_trade_id as tup_trade_id,
kt.desk_id as tup_trade_desk_id,
tr.product_type as tup_trade_product
FROM
dbo.stage_calypso_trade_keywords kt
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr ON kt.trade_id = tr.trade_id
WHERE
kt.kw_name = 'TakeUpParent'
) tup_tr ON cov_tr.trade_id = tup_tr.trade_id
Step 4
Load production trade legs table
Load production table dw_trade_legs
TRUNCATE TABLE dbo.dw_trade_legs
INSERT INTO
dbo.dw_trade_legs (
bundle_id,
trade_id,
trade_desk_id,
trade_product,
trade_leg_id,
trade_leg_desk_id,
trade_leg_product
)
SELECT
trade_bundle_id,
trade_id,
trade_desk_id,
trade_product,
cov_trade_id as trade_leg_id,
cov_trade_desk_id as trade_leg_desk_id,
cov_trade_product as trade_leg_product
FROM
dbo.dw_trade_legs_denorm
WHERE
cpty_trade_yn = 'Y'
AND cov_trade_id is not null
AND xopt_trade_id is null
AND xund_trade_id is null
AND trade_desk_id = coalesce(cov_trade_desk_id, 0)
UNION
SELECT
trade_bundle_id,
trade_id,
trade_desk_id,
trade_product,
b2bf_trade_id,
b2bf_trade_desk_id,
b2bf_trade_product
FROM
dbo.dw_trade_legs_denorm
WHERE
cpty_trade_yn = 'Y'
AND b2bf_trade_id is not null
AND xopt_trade_id is null
AND xund_trade_id is null
AND trade_desk_id = coalesce(b2bf_trade_desk_id, 0)
UNION
SELECT
trade_bundle_id,
trade_id,
trade_desk_id,
trade_product,
b2b2_trade_id,
b2b2_trade_desk_id,
b2b2_trade_product
FROM
dbo.dw_trade_legs_denorm
WHERE
cpty_trade_yn = 'Y'
AND b2b2_trade_id is not null
AND xopt_trade_id is null
AND xund_trade_id is null
AND trade_desk_id = coalesce(b2b2_trade_desk_id, 0)
UNION
SELECT
tlf.trade_bundle_id,
tlf.trade_id,
tlf.trade_desk_id,
tlf.trade_product,
tlf3.xund_trade_id,
tlf3.xund_trade_desk_id,
tlf3.xund_trade_product
FROM
dbo.dw_trade_legs_denorm tlf
LEFT JOIN dbo.dw_trade_legs_denorm tlf2 ON tlf.xopt_trade_id = tlf2.trade_id
AND tlf.xopt_trade_desk_id = tlf2.trade_desk_id
LEFT JOIN dbo.dw_trade_legs_denorm tlf3 ON tlf2.cov_trade_id = tlf3.trade_id
AND tlf2.cov_trade_desk_id = tlf3.trade_desk_id
WHERE
tlf.cpty_trade_yn = 'Y'
AND tlf.xopt_trade_id is not null
AND tlf.trade_desk_id = coalesce(tlf2.cov_trade_desk_id, 0)
and tlf3.xund_trade_id is not null
UNION
SELECT
trade_bundle_id,
trade_id,
trade_desk_id,
trade_product,
cov_trade_id,
cov_trade_desk_id,
cov_trade_product
FROM
dbo.dw_trade_legs_denorm
WHERE
cpty_trade_yn = 'Y'
AND xund_trade_id is not null
AND trade_desk_id = coalesce(cov_trade_desk_id, 0)
UNION
SELECT
tr.bundle_id,
tr.trade_id,
tr.desk_id,
tr.product_type,
tr2.trade_id,
tr2.desk_id,
tr2.product_type
FROM
dbo.vw_stage_load_trade_legs_trades tr
INNER JOIN dbo.vw_stage_load_trade_legs_trades tr2 ON tr.bundle_id = tr2.bundle_id
AND tr.desk_id = tr2.desk_id
WHERE
tr.cpty_ext_yn = 'Y'
AND tr.bundle_id is not null
UNION
SELECT
tlf.trade_bundle_id,
tlf.trade_id,
tlf.trade_desk_id,
tlf.trade_product,
tlf3.xund_trade_id,
tlf3.xund_trade_desk_id,
tlf3.xund_trade_product
FROM
dbo.dw_trade_legs_denorm tlf
LEFT JOIN dbo.dw_trade_legs_denorm tlf2 ON tlf.xopt_trade_id = tlf2.trade_id
AND tlf.xopt_trade_desk_id = tlf2.trade_desk_id
LEFT JOIN dbo.dw_trade_legs_denorm tlf3 ON tlf2.trade_bundle_id = tlf3.trade_bundle_id
AND tlf2.trade_desk_id = tlf3.trade_desk_id
WHERE
tlf.cpty_trade_yn = 'Y'
AND tlf.xopt_trade_id is not null
AND tlf.trade_id <> tlf3.xund_trade_id