Построить простой 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 на вашу сегодняшнюю дату.
Другие вопросы по тегам