Ejemplo n.º 1
0
    def __init__(self, start, underlyings):

        myScheduler = Scheduler()
        myDelays = []
        freqs = ['3M', '6M', '1Y', '3Y']
        for i in range(0, len(freqs)):
            myDelays.append(myScheduler.extractDelay(freqs[i]))
        AAA = {}
        for i in range(0, len(freqs)):
            vas = MC_Vasicek_Sim(x=AAAx[freqs[i]],
                                 datelist=[start, myDelays[i] + start],
                                 t_step=1 / 365.,
                                 simNumber=500)
            AAA[freqs[i]] = vas.getLibor()[0].loc[myDelays[i] + start]

        BBB = {
            '3M':
            MC_Vasicek_Sim(x=BBBx[freqs[0]],
                           datelist=[start, myDelays[0] + start],
                           t_step=1 / 365.,
                           simNumber=500).getLibor()[0].loc[myDelays[0] +
                                                            start]
        }
        self.probs = {'AAA': AAA, 'BBB': BBB}
        self.underlyings = underlyings
    def __init__(self, K1, K2, Fs, Rs, betas, start_dates, end_dates, freqs,
                 coupons, referenceDates, ratings, bootstrap):
        self.bootstrap = bootstrap
        self.K1 = K1
        self.K2 = K2
        self.Fs = Fs
        self.Rs = Rs
        self.betas = betas
        self.referenceDates = referenceDates
        self.freqs = freqs
        self.coupons = coupons
        self.start_dates = start_dates
        self.end_dates = end_dates
        self.ratings = ratings

        self.R = Rs[0]
        self.beta = betas[0]
        self.referenceDate = referenceDates[0]
        self.freq = freqs[0]
        self.coupon = coupons[0]
        self.start_date = start_dates[0]
        self.end_date = end_dates[0]
        self.rating = ratings[0]
        self.maturity = end_dates[0]

        self.myScheduler = Scheduler()
Ejemplo n.º 3
0
 def __init__(self,
              fee,
              coupon,
              start,
              maturity,
              freq,
              referencedate,
              observationdate,
              rating,
              notional=1,
              recovery=0.4):
     self.numSim = 10
     self.t_step = 1.0 / 365
     self.fee = fee
     self.coupon = coupon
     self.start = start
     self.maturity = maturity
     self.freq = freq
     self.recovery = recovery
     self.rating = rating
     self.referencedate = referencedate
     self.observationdate = observationdate
     self.myScheduler = Scheduler()
     self.delay = self.myScheduler.extractDelay(freq=freq)
     self.referencedate = referencedate
     self.getScheduleComplete()
     self.fullDateList = self.datelist
     self.ntimes = len(self.datelist)
     self.pvAvg = 0.0
     self.cashFlows = DataFrame()
     self.cashFlowsAvg = []
     self.yieldIn = 0.0
     self.notional = notional
     self.errorCurve = []
     self.mcSim = MC_Vasicek_Sim()
Ejemplo n.º 4
0
 def test_calculate_tracks(self):
     input_data = SchedulerApp.process_input(
         'ConferencetrackmanagementPythonGA/tests/test_input2.txt')
     my_scheduler = Scheduler()
     times = my_scheduler.calculate_times(input_data)
     self.assertEquals(my_scheduler.calculate_tracks(times), ({
         0: ('talk12 60min', 60),
         120: ('talk14 60min', 60),
         60: ('talk13 60min', 60)
     }, {
         0: ('talk8 60min', 60),
         120: ('talk10 60min', 60),
         180: ('talk11 60min', 60),
         60: ('talk9 60min', 60)
     }, {
         0: ('talk5 60min', 60),
         120: ('talk7 60min', 60),
         60: ('talk6 60min', 60)
     }, {
         0: ('talk1 60min', 60),
         120: ('talk3 60min', 60),
         180: ('talk4 60min', 60),
         60: ('talk2 60min', 60)
     }, 0))
     input_data = SchedulerApp.process_input(
         'ConferencetrackmanagementPythonGA/tests/test_input3.txt')
     my_scheduler = Scheduler()
     times = my_scheduler.calculate_times(input_data)
     self.assertEquals(my_scheduler.calculate_tracks(times), ({
         0: ('talk12 60min', 60),
         120: ('talk14 60min', 60),
         60: ('talk13 60min', 60)
     }, {
         0: ('talk8 60min', 60),
         120: ('talk10 60min', 60),
         180: ('talk11 60min', 60),
         60: ('talk9 60min', 60)
     }, {
         0: ('talk5 60min', 60),
         120: ('talk7 60min', 60),
         60: ('talk6 60min', 60)
     }, {
         0: ('talk1 60min', 60),
         120: ('talk3 60min', 60),
         180: ('talk4 60min', 60),
         60: ('talk2 60min', 60)
     }, 1))
Ejemplo n.º 5
0
 def getScheduleComplete(self):
     myscheduler = Scheduler()
     self.datelist = myscheduler.getSchedule(self.start, self.maturity,
                                             self.freq, self.start)
     self.ntimes = len(self.datelist)
     fullset = sorted(
         set(self.datelist).union([self.start]).union([self.maturity]))
     return fullset, self.datelist
 def __init__(self, memory, file_system, clock):
     self.file_system = file_system(Disc())
     self.memory_admin = MemoryAdmin(AsignacionContinua(memory))
     self.pid = 0
     self.scheduler = Scheduler()
     self.cpu = Cpu(self)
     self.pcb_table = PCBTable()
     self.clock = clock
Ejemplo n.º 7
0
 def test_calculate_times(self):
     input_data = SchedulerApp.process_input(
         'ConferencetrackmanagementPythonGA/tests/test_input.txt')
     my_scheduler = Scheduler()
     self.assertEquals(my_scheduler.calculate_times(input_data),
                       [('talk2 60min', 60), ('talk3 45min', 45),
                        ('talk5 30min', 30), ('talk1 25min', 25),
                        ('talk4 lightning', 5)])
 def __init__(self):
     self.OIS = []
     self.filename = WORKING_DIR + '/CorpData.dat'
     self.corporates = []
     self.ratings = ['AAA', 'AA', 'A', 'BBB', 'BB', 'B', 'CCC']
     self.corpSpreads = {}
     self.corporates = pd.DataFrame()
     self.tenors = []
     self.unPickleMe(file=self.filename)
     self.myScheduler=Scheduler()
Ejemplo n.º 9
0
 def __init__(self):
     self.OIS = []
     self.filename = WORKING_DIR + '/CorpData.dat'
     self.corporates = []
     self.ratings = ['AAA', 'AA', 'A', 'BBB', 'BB', 'B', 'CCC']
     self.corpSpreads = {}
     self.corporates = pd.DataFrame()
     self.tenors = []
     self.unPickleMe(file=self.filename)
     self.myScheduler = Scheduler(start=trim_start,
                                  end=trim_end,
                                  freq=freq,
                                  reference=referenceDate)
 def __init__(self, option_start, cds_start,cds_end,strike,cds_freq,cds_flavor,cds_recovery,Q):
     self.option_start = option_start
     self.strike = strike
     self.cds_start = cds_start
     self.cds_end = cds_end
     self.cds_freq = cds_freq
     # payer to pay strike K, spread - k; receiver to receive strike K, k - spread
     self.cds_flavor = cds_flavor
     self.cds_recovery = cds_recovery
     self.myScheduler = Scheduler()
     self.cds_datelist = self.myScheduler.getSchedule(self.cds_start,self.cds_end,self.cds_freq,self.cds_start)
     self.OIS = OIS(option_start,cds_end)
     self.Q = Q
     self.ntimes = np.shape(self.Q)[0]
     self.ntrajectories = np.shape(self.Q)[1]
 def setCIR(self, minDay, maxDay, x, simNumber, t_step):
     # dλ(t) = k(θ − λ(t))dt + σ*sqrt(λ(t))*dW(t)
     self.kappa = x[0]
     self.theta = x[1]
     self.sigma = x[2]
     self.r0 = x[3]
     self.simNumber = simNumber
     self.t_step = t_step
     # creation of a fine grid for Monte Carlo integration
     # Create fine date grid for SDE integration
     self.Schedule = Scheduler()
     self.datelistlong = self.Schedule.getSchedule(start=minDay,end=maxDay,freq="1M",referencedate=minDay)
     self.datelistlong_daily = pd.date_range(minDay, maxDay).tolist()
     self.datelistlong_daily = [x.date() for x in self.datelistlong_daily]
     self.ntimes = len(self.datelistlong)
     self.ntimes_daily = len(self.datelistlong_daily)
     self.survival = []
     self.smallSurvival = []
Ejemplo n.º 12
0
 def __init__(self, fee, start,coupon,  maturity, freq, referencedate, observationdate,notional):
     self.fee = fee
     self.coupon=coupon
     self.start = start
     self.maturity = maturity
     self.freq= freq
     self.referencedate = referencedate
     self.observationdate = observationdate
     self.myScheduler = Scheduler()
     self.delay = self.myScheduler.extractDelay(freq=freq)
     self.getScheduleComplete()
     self.ntimes=len(self.datelist)
     self.referencedate = referencedate
     self.pvAvg=0.0
     self.cashFlows = DataFrame()
     self.cashFlowsAvg = []
     self.yieldIn = 0.0
     self.notional=notional
 def __init__(self):
     self.OIS = []
     self.filename = WORKING_DIR + '/CorpData.dat'
     self.corporates = []
     self.ratings = {
         'AAA': "BAMLC0A1CAAA",
         'AA': "BAMLC0A2CAA",
         'A': "BAMLC0A3CA",
         'BBB': "BAMLC0A4CBBB",
         'BB': "BAMLH0A1HYBB",
         'B': "BAMLH0A2HYB",
         'CCC': "BAMLH0A3HYC"
     }
     self.corpSpreads = {}
     self.corporates = pd.DataFrame()
     self.Qcorporates = pd.DataFrame()  # survival function for corporates
     self.tenors = []
     self.unPickleMe(file=self.filename)
     self.myScheduler = Scheduler()
     self.myVasicek = MC_Vasicek_Sim()
     self.R = 0.4
Ejemplo n.º 14
0
    def __init__(self,
                 start_date,
                 end_date,
                 freq,
                 coupon,
                 referenceDate,
                 rating,
                 R=.4):
        ### Parameters passed to external functions
        self.start_date = start_date
        self.end_date = end_date
        self.freq = freq
        self.R = R
        self.notional = 1
        self.fee = fee
        self.rating = rating
        self.coupon = coupon
        self.referenceDate = referenceDate
        self.observationDate = referenceDate

        ## Get datelist ##
        self.myScheduler = Scheduler()
        # ReferenceDateList = self.myScheduler.getSchedule(start=referenceDate,end=end_date,freq=freq, referencedate=referenceDate)

        ## Delay start and maturity
        delay = self.myScheduler.extractDelay(self.freq)
        cashFlowDays = self.myScheduler.extractDelay("3M")
        ## Delay maturity and start date
        # self.start_date = self.start_date +SixMonthDelay
        # self.maturity =self.start_date + delay
        self.maturity = self.start_date + delay

        fulllist, datelist = self.getScheduleComplete()
        self.datelist = datelist
        self.portfolioScheduleOfCF = fulllist

        self.myZ = None
        self.myQ = None
Ejemplo n.º 15
0
 def __init__(self,
              startDate,
              endDate,
              referenceDate,
              effectiveDate,
              freq,
              notional,
              recovery=0.4):
     """
         effective date is the start of the payments, startDate is when the contract is entered, endDate is maturity
         referenceDate is the date when the PV is taken
         We are paying a fixed rate to receive a floating rate
     """
     self.recovery = recovery
     self.simNum = 10
     self.xR = []
     self.xQ = []
     # use MC to generate scenarios for exposure
     self.mcSim = MC_Vasicek_Sim()
     #self.mcSim.setVasicek(minDay=startDate,maxDay=endDate,x=xR,t_step=1.0/365, simNumber=self.simNum)
     # z is discount curve
     self.zCurve = []
     self.swapRate = []
     self.freq = freq
     self.notional = notional
     self.fixedLeg = []
     self.floatingLeg = []
     self.startDate = startDate
     self.endDate = endDate
     self.referenceDate = referenceDate
     self.effctiveDate = effectiveDate
     self.initialSpread = []
     self.myScheduler = Scheduler()
     self.datelist = pd.date_range(start=effectiveDate,
                                   end=endDate,
                                   freq=freq)
Ejemplo n.º 16
0
__author__ = 'blee13'
from unittest import TestCase
from MonteCarloSimulators.Vasicek.vasicekMCSim import MC_Vasicek_Sim
from Products.Rates.CouponBond import CouponBond
from Curves.Corporates.CorporateDaily import CorporateRates
from Scheduler.Scheduler import Scheduler
import matplotlib.pyplot as plt
from Products.Credit.IRSwap import IRSwap
import pandas as pd
from datetime import date

myScheduler = Scheduler()
periods = '1Y'
freq = '1M'
t_step = 1.0 / 365.0
simNumber = 10
trim_start = date(2000, 1, 1)
trim_end = date(2000, 12, 31)
trim_endMC = date(2001, 12, 31)
effDay = date(2000, 4, 1)
referenceDate = date(2000, 1, 1)
testSched = pd.date_range(trim_start, trim_start)
scheduleComplete = pd.date_range(start=trim_start, end=trim_end)
xR = [3.0, 0.05, 0.04, 0.03]
datelist = myScheduler.getSchedule(start=trim_start,
                                   end=trim_end,
                                   freq=freq,
                                   referencedate=referenceDate)
myMC = MC_Vasicek_Sim()
myMC.setVasicek(x=xR,
                minDay=trim_start,
Ejemplo n.º 17
0
# Method used to read the input_data
def process_input(input_path_var):
    with open(input_path_var, 'r') as f:
        read_data = f.read()
    return read_data.split(', ')


# Method called to do a 'clear', just for application visualization purposes
def clean_screen():
    print(chr(27) + "[2J")


if __name__ == '__main__':

    clean_screen()
    presentation()

    if len(sys.argv) == 1:
        input_path = 'ConferencetrackmanagementPythonGA/data/input.txt'
    else:
        input_path = sys.argv[1]

    input_data = process_input(input_path)
    my_scheduler = Scheduler()
    times = my_scheduler.calculate_times(input_data)
    track1morning, track1afternoon, track2morning, track2afternoon, left_sessions = Scheduler.calculate_tracks(
        times)
    Printer.show_tracks(track1morning, track1afternoon, track2morning,
                        track2afternoon)
    def fitModel2Curve(self, x):
        results = minimize(fun=self.fCurve, x0=x)
        return results.x

    def fCurve(self, x):
        calCurve = self.getLiborAvg(x, self.datelist)
        thisPV = np.multiple(self.cashFlows,
                             calcCurve).mean(axis=1).sum(axis=0)
        error = 1e4 * (self.price - thisPV)**2
        return


if (__name__ == "__main__"):
    coupon = 0.03
    myscheduler = Scheduler()
    datelist = myscheduler(start=trim_start,
                           end=trim_end,
                           freq="3M",
                           referencedate=trim_start)
    myMC = MC_Vasicek_Sim(x=XR,
                          datelist=datelist,
                          simNumber=simnumber,
                          t_step=t_step)
    libor = myMC.getSmallLibor(datelist=datelist)
    myBond = Bond(libor=libor,
                  start=trim_start,
                  maturity=trim_end,
                  coupon=coupon,
                  freq="3M",
                  referencedate=trim_start)
Ejemplo n.º 19
0
from unittest import TestCase

from parameters import xR, simNumber, t_step, trim_start, trim_end, freq, periods, referenceDate, start, inArrears, WORKING_DIR
from MonteCarloSimulators.Vasicek.vasicekMCSim import MC_Vasicek_Sim
from Scheduler.Scheduler import Scheduler

mySchedule = Scheduler()

# Global Variables
mySchedule = mySchedule.getSchedule(start=trim_start, end=trim_end, freq="M")
mySimulator = MC_Vasicek_Sim(datelist=mySchedule,
                             x=xR,
                             simNumber=simNumber,
                             t_step=t_step)
mySimulator.getLibor()
mySimulator.getSmallLibor()
a = 1


class TestMC_Vasicek_Sim(TestCase):
    def test_getLibor(self):
        mySimulator.getLibor()

    def test_getSmallLibor(self):
        # Monte Carlo trajectories creation - R
        Libor = mySimulator.getSmallLibor(mySchedule)
        return Libor
Ejemplo n.º 20
0
        self.OIS = self.OIS.fillna(method='ffill').fillna(method='bfill')
        self.OIS = self.OIS.T.fillna(method='ffill').fillna(method='bfill').T
        self.OIS.index = self.datesAll.DATE

    def getOIS(self, datelist=[]):
        if (len(datelist) != 0):
            return self.OIS.loc[datelist]
        else:
            return self.OIS


if (__name__ == "__main__"):
    import quandl
    from parameters import WORKING_DIR, x0Vas, t_step, simNumber, trim_start, trim_end, freq, referenceDate
    #a = quandl.get("USTREASURY/YIELD", authtoken="J_3ufFECZVffPxNDZuWf", trim_start="2016-01-10", trim_end="2017-01-10")
    from Scheduler.Scheduler2 import Scheduler
    import pandas as pd
    import numpy as np

    mydatelist = Scheduler(start=trim_start,
                           end=trim_end,
                           freq=freq,
                           reference=referenceDate).datelist1
    mycr = CorporateRates()
    bb = mycr.getCorporates(trim_start, trim_end)

    myois = OIS()
    aa = myois.getOIS(mydatelist)

    print(bb)