Article image
Izairton Vasconcelos
Izairton Vasconcelos03/12/2024 21:31
Compartilhe

Matemática Financeira e Python: Aprofundando Black-Scholes – PARTE II

    Este artigo é uma continuação da primeira parte intitulada "Investindo com Inteligência: A Matemática Financeira Simplificada com Python", que demonstrou a precificação de opções financeiras em investimentos com ações através da fórmula Black-Scholes.


    Naquela parte foi apresentado um exemplo fictício da compra de um lote de ações de uma empresa em expansão elevada de mercado, juntamente com um contrato de Opção de Compra (Call Option) para execução no vencimento de um ano, tudo isso, planejado e escrito através de um script em Python como forma de apoio técnico à decisão tomada pela Empresa X.


    Já nesta segunda parte, avançaremos um pouco mais nos conceitos que norteiam a fórmula Black-Scholes, em suas variáveis relevantes e como elas se relacionam entre si e no resultado da análise.


    Será apresentado um novo script em Python, abrangente e atualizado, demonstrando o fluxo temporal do investimento, no intuito de oferecer uma visão mais clara e objetiva do fluxo de caixa e do patrimônio da Empresa X.

    Portanto, o objetivo desta segunda parte, está na apresentação dos conceitos básicos da fórmula Black-Scholes e da demonstração dos resultados por meio do Relatório Gerencial proveniente do novo script escrito em Python.

     

    Explicando a Fórmula de Black-Scholes de Forma Simples

     

    A fórmula de Black-Scholes tem esse nome em homenagem aos criadores Fischer Black e Myron Scholes e pode às vezes ser chamada de Black-Scholes-Merton, porque Robert Merton também contribuiu significativamente para a sua formulação.

    O que levou seus criadores a desenvolverem essa fórmula foi a inexistência até então de uma solução para a precificação no mercado de opções, o que era feito praticamente por “adivinhação”. O problema era como calcular o valor justo de uma opção no momento da compra ou da venda de um ativo no futuro, dados as incertezas do mercado, ficava difícil calcular com precisão esse ativo negociado.


    Como isso foi resolvido? O “pulo do gato” desses experts foi combinar conceitos de finanças e estatística de tal maneira através de uma fórmula matemática que pudesse “eliminar” as incertezas do mercado ou o “risco” em cenários complexos.

     

    A fórmula Matemática do Black-Scholes 


    image

    Legenda:

    1. V: Valor da opção. É o que queremos calcular.
    2. S: Preço atual do ativo subjacente (exemplo: preço da ação hoje).
    3. t: Tempo até o vencimento da opção.
    4. r: Taxa de juros livre de risco (como o retorno de um título público seguro).
    5. σ: Volatilidade do preço do ativo, ou seja, o quanto o preço oscila no tempo.

     

    Com a fórmula é possível calcular um preço justo com base em dados objetivos, tornando o mercado de opções mais transparente eficiente.

    Também calcula a probabilidade de o preço do ativo ultrapassar o preço de exercício da opção, eliminando os riscos já que não depende das preferências individuais dos investidores, e, de fácil aplicação pois de posse dos dados como preço atual, volatilidade e taxa de juros, o preço da opção é calculado rapidamente.

     

    O Cenário do Investimento


    A empresa X deseja investir em ações da Empresa Y, que está agora em ascensão. O preço das ações da Empresa Y é de R$ 100,00, e a Empresa X acredita que, daqui a um ano, o valor será maior do que R$ 110,00, o preço que ela está disposta a pagar.

    Dado as incertezas (risco) do mercado, a Empresa X resolve investir em um contrato de opção de compra, que é um tipo de seguro financeiro garantidor do investimento, garantindo o direito de comprar as ações negociadas ao preço predeterminado de R$ 110,00 na data de vencimento.

    No vencimento a Empresa X venderá suas ações inicialmente compradas e exercerá a opção de compra de outro lote de ações pelo preço vigente da época. Não fará novo contrato de opção de compra.

    Para fins de resultados, no vencimento do contrato, o preço da ação chegou a R$ 120,00, acima do projetado (R$ 110,00) e o relatório gerencial criado a partir do script em Python, demonstrará toda a evolução dos fatos.


    Novo Script em Python evidenciando a fórmula Black-Scholes e o Relatório Gerencial

     

    import numpy as np
    from scipy.stats import norm
    
    
    # Função para calcular o preço da opção de compra usando a fórmula de Black-Scholes
    def calculate_call_price(S, K, T, r, sigma):
      """
      Calcula o preço de uma opção de compra europeia usando a fórmula de Black-Scholes.
    
    
      Parâmetros:
          S: Preço atual da ação (ativo subjacente)
          K: Preço de exercício da opção
          T: Tempo até o vencimento (em anos)
          r: Taxa de juros livre de risco (anualizada)
          sigma: Volatilidade anualizada do ativo subjacente
    
    
      Retorna:
          call_price: Preço da opção de compra
      """
      # Calculando d1, um parâmetro intermediário baseado no preço atual, no preço de exercício,
      # na taxa de juros, na volatilidade e no tempo até o vencimento
      d1 = (np.log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
      
      # Calculando d2, que é d1 ajustado pela volatilidade e pelo tempo
      d2 = d1 - sigma * np.sqrt(T)
      
      # Calculando o preço da opção de compra (call)
      # Usamos a fórmula: C = S * N(d1) - K * e^(-rT) * N(d2)
      call_price = S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)
      
      return call_price
    
    
    # Parâmetros do investimento
    S = 100  # Preço atual da ação (ativo subjacente)
    K = 110  # Preço de exercício da opção
    T = 1    # Tempo até o vencimento (1 ano)
    r = 0.05 # Taxa de juros livre de risco (5% ao ano)
    sigma = 0.2  # Volatilidade anualizada (20%)
    expected_final_price = 120  # Preço esperado da ação no final do ano
    
    
    # Calculando o preço da opção de compra no ano inicial usando a função
    call_price = calculate_call_price(S, K, T, r, sigma)
    
    
    # Relatório Gerencial para detalhar o fluxo de caixa e patrimônio
    print("==== RELATÓRIO GERENCIAL DE INVESTIMENTO ====")
    
    
    # Ano Inicial
    print(f"1. Ano Inicial")
    print(f"   - Preço da ação comprada: R$ {S:.2f}")  # Preço da ação no ano inicial
    print(f"   - Custo da opção de compra: R$ {call_price:.2f}")  # Custo para comprar a opção
    print(f"   - Total desembolsado no ano inicial: R$ {S + call_price:.2f}")  # Desembolso total no início
    
    
    # Ano de Vencimento
    final_action_value = expected_final_price  # Preço final da ação no mercado após 1 ano
    cash_in = final_action_value  # Receita gerada pela venda da ação inicial
    cash_out_option = K  # Custo para exercer a opção de compra
    
    
    # Calculando o fluxo de caixa no ano de vencimento
    cash_flow = cash_in - cash_out_option  # Receita menos custo para exercer a opção
    total_initial_outflow = S + call_price  # Total desembolsado no início
    net_cash_position = cash_flow - total_initial_outflow  # Caixa líquido final
    new_asset_value = expected_final_price  # Valor do novo ativo adquirido no imobilizado
    
    
    # Exibindo o fluxo no ano de vencimento
    print("\n2. Ano de Vencimento")
    print(f"   - Preço da ação no mercado: R$ {expected_final_price:.2f}")  # Preço da ação no vencimento
    print(f"   - Receita da venda da ação inicial: R$ {cash_in:.2f}")  # Receita da venda
    print(f"   - Custo para exercer a opção (nova compra): R$ {cash_out_option:.2f}")  # Custo da nova compra
    print(f"   - Fluxo de caixa no ano de vencimento: R$ {cash_flow:.2f}")  # Fluxo líquido no vencimento
    print(f"   - Saldo do caixa (líquido): R$ {net_cash_position:.2f}")  # Saldo do caixa ao final
    print(f"   - Valor do novo ativo no imobilizado: R$ {new_asset_value:.2f}")  # Valor do novo ativo no patrimônio
    
    
    # Resultado Final
    total_wealth = net_cash_position + new_asset_value  # Soma do caixa líquido com o patrimônio final
    print("\n3. Resultado Geral")
    print(f"   - Caixa final: R$ {net_cash_position:.2f}")  # Caixa líquido final
    print(f"   - Valor total do patrimônio (caixa + imobilizado): R$ {total_wealth:.2f}")  # Resultado geral
    
    
    


    Análise do Script e do Relatório Gerencial

     

    O script está dividido em três partes: Ano Inicial, Ano de Vencimento e Resultado Gerencial trazendo o detalhamento dos fatos e fluxo de caixa.

    Também, os valores do Fluxo de Caixa e do Patrimônio Imobilizado estão claramente definidos e separados para facilitar o entendimento.

    As variáveis são apresentadas, calculadas e exibidas textualmente.

     

    Relatório Gerencial do Investimento

    1. Ano Inicial

     - Preço da ação comprada: R$ 100.00

    - Custo da opção de compra: R$ 6.04

    - Total desembolsado no ano inicial: R$ 106.04

     

    2. Ano de Vencimento

    - Preço da ação no mercado: R$ 120.00

    - Receita da venda da ação inicial: R$ 120.00

    - Custo para exercer a opção (nova compra): R$ 110.00

    - Fluxo de caixa no ano de vencimento: R$ 10.00

    - Saldo do caixa (líquido): R$ -96.04

    - Valor do novo ativo no imobilizado: R$ 120.00

     

    3. Resultado Geral

    - Caixa final: R$ -96.04

    - Valor total do patrimônio (caixa + imobilizado): R$ 23.96

     

    image

    Conclusão


    Conforme se vê, o relatório gerencial proveniente do script em Python demonstrou toda a evolução do Fluxo de Caixa e do Patrimônio Imobilizado da Empresa X, em consonância com o código idealizado pelo desenvolvedor e demonstrando a eficácia da linguagem Python em decisões de investimento negociados através da opção de compra no mercado financeiro.


     

    linkedin.com/in/izairton-oliveira-de-vasconcelos-a1916351


    Compartilhe
    Comentários (0)