Построить простой BlackVarianceSurface в Python
Я пытаюсь создать BlackVarianceSurface, чтобы я мог сравнить результат интерполяции с моим. Что я сделал, так это
todaydate = Date(1, January, 2010)
maturity=[]
for i in range(24):
maturity.append(Date(1, January, 2010)+Period(i, Months))
k = range(10, 90, 10)
vol = abs(random.randn(24, 8)).transpose().tolist()
volsurf = BlackVarianceSurface(todaydate, TARGET(), maturity, k, vol, Actual365Fixed())
Я использую матрицу NumPy. это обернуто в матрицу Quantlib? Есть что-то, что я делаю не так?
большое спасибо
1 ответ
Решение
К сожалению, оболочки QuantLib не используют пустые матрицы. Вам придется преобразовать их в простые списки списков, прежде чем передавать их конструктору классов.
Еще одна пара проблем, с которыми я столкнулся при тестировании вашего кода:
- вам придется транспонировать матрицу. Len() внешнего списка должно равняться числу ударов, а количество внутренних списков должно равняться числу сроков погашения.
- Вы используете сегодняшнюю дату, которая позже, чем большинство сроков погашения (возможно, опечатка выше, или копирование / вставка пошли не так?). В любом случае, конструктор вызовет исключение, поэтому вам придется фиксировать даты так или иначе. Кроме того, вы можете установить
Settings.instance().evaluationDate
на вашу сегодняшнюю дату.