Backtest com Python

 Olá gente inteligente!

Essa semana vi um video do Regito no youtube fazendo vários backtests usando Python na plataforma do Google, que é online e pelo visto é grátis. 

Pra encurtar a história, eu consegui copiar alguns trechos do código através do video e não é que o negócio funciona mesmo, baixou cotações dos ativos, até do CDI do site do BC, acho que vou estudar um pouco disso futuramente. 

Confiram o código que adaptei:

!pip install bt

!pip -q install yfinance

import yfinance as yf
import pandas as pd
import numpy as np
import plotly.express as px
from datetime import date
import bt
import matplotlib
matplotlib.style.use('seaborn-darkgrid')
%matplotlib inline

#baixar dados cdi 
def consulta_bc(codigo_bcb):
  url = 'http://api.bcb.gov.br/dados/serie/bcda.sgs.{}/dados?formato=json'.format(codigo_bcb)
  df = pd.read_json(url)
  df['data'] = pd.to_datetime(df['data'], dayfirst=True)
  df.set_index('data', inplace= True)
  return df

def cdi_acumulado (data_iniciodata_fim):
  cdi = consulta_bc(12)
  cdi_acumulado = (
      1+cdi[data_inicio : data_fim]/100
    ).cumprod()
  cdi_acumulado.iloc[0] = 1
  return cdi_acumulado

data_inicio = '2021-01-20'
data_fim = '2023-01-20'

cdi = cdi_acumulado(data_inicio = data_inicio, data_fim = data_fim)

cdi

tickers_carteira_acoes = ['PIBB11.SA''IVVB11.SA']

carteira_acoes = yf.download(tickers_carteira_acoes, start = data_inicio, end=data_fim)['Adj Close']

carteira_acoes

carteira_acoes['renda_fixa'] = cdi

carteira_acoes

rebalanceamento_acoes = bt.Strategy(
    'rebalanceamento_acoes',
    [bt.algos.RunMonthly(run_on_end_of_period=True),
     bt.algos.SelectAll(),
     bt.algos.WeighEqually(),
     bt.algos.Rebalance()]
)

buy_and_hold = bt.Strategy(
    'Buy&Hold',
    [bt.algos.RunOnce(),
     bt.algos.SelectAll(),
     bt.algos.WeighEqually(),
     bt.algos.Rebalance()
     ]
)

bt_acoes_1 = bt.Backtest(rebalanceamento_acoes, carteira_acoes)
bt_acoes_2 = bt.Backtest(buy_and_hold, carteira_acoes)

resultados_acoes = bt.run( bt_acoes_1, bt_acoes_2)

resultados_acoes.display()

resultados_acoes.display_monthly_returns()

resultados_acoes.plot()



Resultados

Então, interessante né?! Compartilhei esse código no link https://colab.research.google.com/drive/1NaR28o0J_4dvQ_y3siZ3b7VD9OIPS5Ad?usp=sharing

Wealth Lab - Software para backtests

Olá, venho hoje com essa dica para fazer backtests, o Wealth lab é muito bom, foi um software que usei por muito tempo e criei algumas boas estratégias nele.

Site: https://www.wealth-lab.com/

Como criar uma estratégia?



Importar dados de ativos para testes

O que é backtest?

Backtesting (or back-testing) is the process of evaluating a strategy, theory, or model by applying it to historical data. Backtesting can be used in situations like studying how a trading method would have performed in past stock markets or how a model of climate and weather patterns would have matched past measurements. A key element of backtesting that differentiates it from other forms of historical testing is that backtesting calculates how a strategy would have performed if it had actually been applied in the past. This requires the backtest to replicate the conditions of the time in question in order to get an accurate result. Backtesting is a common and methodologically accepted approach to research, however a high or successful correlation between a backtested strategy and historical results can never prove a theory correct, since past results do not necessarily indicate future results. In other words, things are always changing, but in a world where yesterday bears some resemblance to today, backtesting can be a useful tool of analysis and prediction.

From Wikipedia, the free encyclopedia