Применение условной функции к DataFrame - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь применить функцию к фрейму данных в Python. Данные из представляют собой список цен опционов, и функция берет эти цены и преобразует их в подразумеваемое значение:

def find_vol(target_value, call_put, S, K, T, r):
    MAX_ITERATIONS = 100
    PRECISION = 1.0e-5

    sigma = 0.5
    for i in range(0, MAX_ITERATIONS):
        price = bs_price(call_put, S, K, T, r, sigma)
        vega = bs_vega(call_put, S, K, T, r, sigma)
        price = price
        diff = target_value - price 

        if (abs(diff) < PRECISION):
            return sigma
        sigma = sigma + diff/vega # f(x) / f'(x)

    return sigma

Это итеративная функция, которая продолжает работать до тех пор, пока разница между двумя значениями не окажется в пределах допуска.

Во фрейме данных есть несколько столбцов с датами цен закрытия акций, ценами в наличных деньгах и затем ценами опционов в столбцах, начиная примерно год назад.

I ' мы пробовали следующее:

Vols=pd.DataFrame()

for i in range (9, 18):
    Vols[i]=find_vol(Bund[i], "p", Bund[4], Bund[5], ((Bund[7]-Bund[0])/365), 0.00000002)

, чтобы создать DataFrame подразумеваемых vols, но я получаю следующую ошибку:

"ValueError: Истинное значение Series является неоднозначным. Используйте a.empty , a.bool (), a.item (), a.any () или a.all (). "

... что, я думаю, относится к приведенным выше условным операторам, применяемым к DataFrame.

Есть идеи, как мне заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...