Skip to content

Instantly share code, notes, and snippets.

@Fabiocke
Last active September 17, 2022 04:08
Show Gist options
  • Select an option

  • Save Fabiocke/27772cd1d37616db382bca4ba01125c1 to your computer and use it in GitHub Desktop.

Select an option

Save Fabiocke/27772cd1d37616db382bca4ba01125c1 to your computer and use it in GitHub Desktop.
ativo = 'BBAS3'
vencimento = '2022-12-16'
K = 45.05
# A data que está sendo executado é 17/09/2022
# em outro dia os parâmetros serão diferentes, portanto os resultados serão diferentes
# Série histórica, usaremos os últimos 365 dias. O parâmetro dias irá afetar diretamente a volatildiade (sigma)
df = cotacoes(ativo, 365)
# Preço atual da ação
S = df['Adj Close'][-1]
# Gera a coluna de retorno os retornos logaritmicos
df['Returns'] = np.log(df['Adj Close']/df['Adj Close'].shift(1))
# volatilidade: usaremos o desvio padarão dos retornos anualizado.
# Obs: Existem outros modelos de volatildiade, como o EWMA. O modelo pode ser escolhido dependendo da sua estratégia.
sigma = df['Returns'].std() * 252 ** 0.5
# taxa livre de risco
r = selic()
# tempo em anos até o vencimento
T = (datetime.strptime(vencimento, '%Y-%m-%d') - datetime.now()).days/365
print(S) # 39.400001525878906
print(K) # 45.05
print(r) # 0.13649989315282562
print(sigma) # 0.2941359350202654
print(T) # 0.24383561643835616
bsm_put(S, K, r, sigma, T) # 5.043368866048489
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment