aboutsummaryrefslogtreecommitdiffstats
path: root/python/cds_rebook.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/cds_rebook.py')
-rw-r--r--python/cds_rebook.py41
1 files changed, 29 insertions, 12 deletions
diff --git a/python/cds_rebook.py b/python/cds_rebook.py
index 0be9cb26..6a3d45b5 100644
--- a/python/cds_rebook.py
+++ b/python/cds_rebook.py
@@ -41,23 +41,40 @@ def new_version_quotes(
(auction_date,),
)
for index, series, version, oldfactor, newfactor in c1:
+
c2.execute(
- "INSERT into index_quotes_pre(date, index, series, version, "
- "tenor, close_price, source)"
- "SELECT date, index, series, version+1, "
- "tenor, (%s*close_price + %s)/%s, 'SRNTAS'"
- "FROM index_quotes_pre "
+ "SELECT tenor, close_price FROM index_quotes_pre "
"WHERE index=%s AND series=%s AND version=%s AND date=%s AND source='MKIT'",
- (
- oldfactor,
- (newfactor - oldfactor) * adj_recovery,
- newfactor,
+ (index, series, version, auction_date),
+ )
+ w = oldfactor / newfactor
+
+ to_insert = []
+ for tenor, closeprice in c2:
+ new_price = w * closeprice + (1 - w) * adj_recovery
+ ind = CreditIndex(
index,
series,
- version,
- auction_date,
- ),
+ tenor,
+ version + 1,
+ value_date=auction_date,
+ freeze_version=True,
+ )
+ try:
+ ind.price = new_price
+ except ValueError:
+ continue
+ to_insert.append((tenor, new_price, ind.spread))
+ c2.executemany(
+ "INSERT INTO index_quotes_pre(date, index, series, version, "
+ "tenor, close_price, close_spread, source) "
+ "VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
+ [
+ (auction_date, index, series, version + 1, *t, "SRNTAS")
+ for t in to_insert
+ ],
)
+
conn.commit()