2012-05-09 2 views
0

Я пытаюсь построить BlackVarianceSurface, чтобы я мог сравнить результат интерполяции с моим. Что я сделал, этопостроить простой BlackVarianceSurface в python

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. он завернут в матрицу квантлиб? Что я делаю неправильно

Большое спасибо

ответ

1

К сожалению, упаковщики QuantLib не принимают Numpy матрицы. Вам нужно будет преобразовать их в простые списки списков, прежде чем передавать их в конструктор классов.

Еще пара вопросов, которые я наткнулся при попытке код:

  • вам придется транспонировать матрицу. Len() внешнего списка должен равняться количеству ударов, а количество внутренних списков должно равняться числу сроков погашения.
  • вы используете сегодняшнюю дату, которая больше, чем большинство сроков погашения (возможно, опечатка выше или копия/вставка пошла не так?). Во всяком случае, конструктор вызовет исключение, поэтому вам придется исправить свои даты так или иначе. Кроме того, вы можете установить Settings.instance().evaluationDate на вашу сегодняшнюю дату.
+0

Спасибо, Луиджи. система утверждения очень всеобъемлющая. он ведет меня через исправляющую версию до тех пор, пока я не получу RuntimeError: даты должны быть отсортированы уникальными! , но похоже, что срок погашения отсортирован и уникален. – archlight

+0

После того, как я меняю ссылочную дату раньше, чем первая дата погашения, она работает. – archlight

Смежные вопросы