def simulateCorrelatedTransitionData(K, N, T, Pin, wStart, myRho): Q = cumulateTransitionMatrix(K, Pin) Delta = transformCumulativeTransitionMatrix(K, Q) Y = np.zeros([N, T]) # latent variables X = np.zeros([N, T]) # credit states allP = np.zeros([N, T]) # default probabilities Xlast = mc.initializeCounterparties(N, wStart) # initial states X0 = Xlast Plast = Pin[(Xlast - 1).astype(int), -1] for t in range(0, T): Y[:, t] = th.getY(N, 1, Plast, myRho) for n in range(0, N): if Xlast[n] == 4: X[n, t] = 4 continue else: X[n, t] = migrateRating(Xlast[n], Delta, Y[n, t]) allP[:, t] = Pin[(Xlast - 1).astype(int), -1] Plast = allP[:, t] Xlast = X[:, t] return X, Y, Delta, allP, X0
def createRatingData2r(K, N, T, P, wStart, rStart, myRho, nu, isT): Q = cumulateTransitionMatrix(K, P) Delta = transformCumulativeTransitionMatrix(K, Q) rId = initializeRegion2r(N, rStart).astype(int) Y = np.zeros([N, T]) # latent variables X = np.zeros([N, T]) # credit states allP = np.zeros([N, T]) # default probabilities Xlast = mc.initializeCounterparties(N, wStart) # initial states X0 = Xlast Plast = P[(Xlast - 1).astype(int), -1] for t in range(0, T): Y[:, t] = th.getY2r(N, 1, Plast, myRho, rId, nu, P, isT) for n in range(0, N): if Xlast[n] == 4: X[n, t] = 4 continue else: X[n, t] = migrateRating(Xlast[n], Delta, Y[n, t]) allP[:, t] = P[(Xlast - 1).astype(int), -1] Plast = allP[:, t] Xlast = X[:, t] return X, Y, Delta, allP, X0, rId