コード例 #1
0
def tests():

    sigma1 = 0.01
    sigma2 = 0.008
    beta1 = 0.5
    beta2 = 0.1
    rho = 0.4
    dt = 0.001
    T = 0.5
    t = 0
    T1 = 0.25
    T2 = 1

    Q0 = 0.03
    R0 = 0.0
    
    S = 1
    numPath = 1000

    port = FXHedgePort(t, T, T1, T2)    
    evor = RateEvolver(sigma1, sigma2, beta1, beta2, rho, dt, Q0, port)
    print evor.__str__()
    
    #print "dQ = ", evor.dQ_vec()
    print "QT = ", evor.GetQ()

    calculator = FXFwdCalculator()
    fairK = calculator.calFairStrike(S, Q0, R0, t, T)
    print "fairK = ", fairK
    print "One path value = ", calculator.calVal(S, evor.GetQ()[0], R0, t, T, fairK)


    MCEng1 = MCHedgeEngine(evor, port)
    unHedged, triHedged, factorHedged = MCEng1.runMC(numPath, S, R0)
    print "triN1 =", MCEng1.triN1, "triN2 =", MCEng1.triN2

    print "UnHedged PNL mean is", unHedged.mean(), "sd is", unHedged.std()
    print "TriHedged PNL mean is", triHedged.mean(), "sd is", triHedged.std()
    print "FactorHedged PNL mean is", factorHedged.mean(), "sd is", factorHedged.std()
コード例 #2
0
def wrapForOneT(T, numPath):
    '''
    Wrapper for a tenor, T
    '''
    sigma1 = 0.01
    sigma2 = 0.008
    beta1 = 0.5
    beta2 = 0.1
    rho = -0.4
    dt = 0.001
    t = 0.0
    T1 = 0.25
    T2 = 1.0
    Q0 = 0.03
    R0 = 0.0
    S = 1.0

    port = FXHedgePort(t, T, T1, T2)    
    evor = RateEvolver(sigma1, sigma2, beta1, beta2, rho, dt, Q0, port)    
    MCEng1 = MCHedgeEngine(evor, port)
    print "T =", T
    MCEng1.comparePerformance(numPath, S, R0)