Это премиумы пут опционов на 60 дней, для различной волатильности (10 децилей волатильности). Простые линии, где сначала идет экспонента, затем линия.
Несмотря на простую форму, их сложно повторить.
Одна такая кривая (пунтир), с фиттингом гибридной линии (непрерывная), отличное совпадение:

Модель гибридной кривой (экспонента до 0.9, линейная после 0.9 и сигмоида для их плавного соединения):
linear_part = -p1 + p2*k
exp_part = np.exp(p3*k)
cutoff = sigmoid(p4 * (k - p5))
premium = cutoff*linear_part + (1 - cutoff)*p6*exp_part
Но, если делать фиттинг — не работает, с огромным трудом находит минимум, даже если вручную близкие параметры дать. Малейшее отклонение в параметрах приводит к хаосу. Не помогают ни явные ограничения (bounds), ни математические ограничения (как exp(p) для 0..+inf и т.п.). Ну и, 6 параметров для простой линии, как то многовато.
Через параметризованную БлакШелс BS(scale=f(vol,k), loc=-0.5scale^2, k) также не может повторить кривые.
И, нужно добавить еще несколько параметров, для волатильность и еще других, и фиттинг получается еще сложнее, модель будет себя вести вообще непонятно.
Короче, может я упускаю что то, но напрямую фиттинг этих линий не получается.
Я пытался разные способы нормализовать их, также ничего не работает, линии никак не хотят сжиматься в одну, и что с ними ни делай, получается то же самое, только в другой форме.
Вобщем, походу прийдется просто закодировать их численно.
Кому интересно данные
gist.github.com/al6x/85e119b484907694fafe4f5c84955e93
Это премиумы пут опцинов, расчитанные по историческим данным, только не европейские (цена на момент экспирации), а цена максималъного падение акции за весь период опциона (что то вроде американских). БлакШолс хорошо повторяет европейские, но цену макс падения повторить не может.