def to_ql_currency(arg): """Converts string with a calendar name to a calendar instance of QuantLib. :param arg: str The currency 3 letter identifier :return QuantLib.Currency """ if arg.upper() == "USD": return ql.USDCurrency() elif arg.upper() == "BRL": return ql.BRLCurrency() elif arg.upper() == "EUR": return ql.EURCurrency() elif arg.upper() == "GBP": return ql.GBPCurrency() elif arg.upper() == "AUD": return ql.AUDCurrency() elif arg.upper() == "JPY": return ql.JPYCurrency() elif arg.upper() == "TRY": return ql.TRYCurrency() elif arg.upper() == "ZAR": return ql.ZARCurrency() elif arg.upper() == "CHF": return ql.CHFCurrency() elif arg.upper() in ["CNY", "CNH"]: return ql.CNYCurrency() else: raise ValueError( "Unable to convert {} to a QuantLib currency".format(arg))
'ACT/365': ql.Actual365Fixed(ql.Actual365Fixed.NoLeap), # Dates 'FOLLOWING': ql.Following, 'MODIFIEDFOLLOWING': ql.ModifiedFollowing, 'BACKWARDS': ql.DateGeneration.Backward, 'FORWARDS': ql.DateGeneration.Forward, # Overnight Indexes 'AUD.OIS': ql.OvernightIndex('RBACOR', 0, ql.AUDCurrency(), ql.Australia(), ql.Actual365Fixed()), 'CAD.OIS': ql.OvernightIndex('CAOREPO', 0, ql.CADCurrency(), ql.Canada(), ql.Actual365Fixed()), 'CHF.OIS': ql.OvernightIndex('SARON', 0, ql.CHFCurrency(), ql.Switzerland(), ql.Actual360()), 'CLP.OIS': ql.OvernightIndex('CLICP', 0, ql.CLPCurrency(), ql.WeekendsOnly(), ql.Actual360()), 'CNY.OIS': ql.OvernightIndex('CNRR007', 0, ql.CNYCurrency(), ql.China(), ql.Actual365Fixed()), 'COP.OIS': ql.OvernightIndex('COOVIBR', 0, ql.COPCurrency(), ql.WeekendsOnly(),