Using Yield CurvesΒΆ

Notebooks for this code: python; R.

import sys
sys.path.append("..")
    
from sqlalchemy import func, and_
from sqlalchemy.orm import aliased
from plutoPy.model import RoutingSession, YieldCurve

#fetch the latest India Zero Coupon Bond yields

end_dt = RoutingSession.session.query(func.max(YieldCurve.IndiaZeroCoupon.TIME_STAMP)).scalar()

curve = (RoutingSession.session.query(YieldCurve.IndiaZeroCoupon)
         .filter(YieldCurve.IndiaZeroCoupon.TIME_STAMP == end_dt)
         .order_by(YieldCurve.IndiaZeroCoupon.MATURITY)
         .all())

print("the latest India Zero Coupon Bond yields")
for c in curve:
    print(c)
    
#fetch the latest US Treasury Yield Curve    

end_dt = RoutingSession.session.query(func.max(YieldCurve.UsTreasury.TIME_STAMP)).scalar()

curve = (RoutingSession.session.query(YieldCurve.UsTreasury)
         .filter(YieldCurve.UsTreasury.TIME_STAMP == end_dt)
         .all())

print("the latest US Treasury Yield Curve")
for c in curve:
    print(c)
    
#fetch the latest Euro area yield curve

end_dt = RoutingSession.session.query(func.max(YieldCurve.EuroArea.TIME_STAMP)).scalar()

alias1 = aliased(YieldCurve.EuroArea)
alias2 = aliased(YieldCurve.EuroArea)

curve = (RoutingSession.session.query(alias1.TENOR_Y, alias1.TENOR_M, alias1.VALUE.label('G_N_A'), alias2.VALUE.label('G_N_C'))
         .join(alias2, and_(alias1.TENOR_Y == alias2.TENOR_Y, alias1.TENOR_M == alias2.TENOR_M, alias1.TIME_STAMP == alias2.TIME_STAMP))
         .filter(and_(alias1.TIME_STAMP == end_dt, alias1.CURVE_ID == 'G_N_A', alias2.CURVE_ID == 'G_N_C'))
         .order_by(alias1.TENOR_Y, alias1.TENOR_M)
         .all())

print("the latest Euro Area Yield Curve")
for c in curve:
    print(c)