Aula 25 - Introdução à Cadeia de Markov - Python para Finanças Quantitativas
Summary
TLDRThe video script introduces viewers to the application of Markov Chains in trading strategies, specifically within the context of financial markets. The presenter, Leandro Guerra, guides the audience through the process of using historical data to predict market trends and make informed trading decisions. He emphasizes the importance of understanding the underlying concepts, such as state transitions and probabilities, rather than just coding. The video showcases practical examples using Python and demonstrates how adjusting parameters like the target return and the number of trades can significantly impact the outcomes. The presenter encourages viewers to experiment with different settings and to complement their trading strategies with risk management for improved results.
Takeaways
- 📈 The video is a Python for Finances course lesson focusing on using Markov chains for trading strategies.
- 👨🏫 The instructor, Leandro Guerra, emphasizes the importance of understanding the introductory Markov chains concepts before proceeding.
- 🔢 Data from the BOVESPA index from 2012 to 2024 is used to calculate returns and establish a 52-week moving average.
- 📊 Three states of market behavior are defined: increasing, decreasing, and stable, based on 1% thresholds relative to the moving average.
- 🤖 A classification function is created to categorize returns into the three defined states: increase, decrease, or stable.
- 🔄 A transition dictionary is established to calculate the probabilities of moving from one state to another.
- 📈 The Markov chain's fundamental concept is utilized to predict the next state based on current and previous states' probabilities.
- 📝 The script demonstrates the application of the Markov chain model on the entire dataset and compares it with a simple mean reversion strategy.
- 💡 The lesson highlights the importance of not just coding but also understanding the underlying concepts and logic of the strategies being implemented.
- 🚀 The video showcases the effectiveness of the Markov chain strategy, achieving an 18.884% return in a year with minimal trades.
- 📌 The instructor encourages viewers to experiment with different parameters, such as the moving average period and the threshold for state classification, to optimize the trading strategy.
Q & A
What is the main topic of the video?
-The main topic of the video is the application of Markov Chains in trading, specifically within the context of financial data analysis using Python.
Who is the speaker of the video?
-The speaker of the video is Leandro Guerra, who is teaching a course on Python for Finance.
What is the significance of the 'aula 25' mentioned in the script?
-The 'aula 25' refers to the 25th lesson in the Python for Finance course, where the focus is on demonstrating the use of Markov Chains for trading strategies.
What is the role of the 'ibov' in the script?
-The 'ibov' is used as an example dataset in the script, representing the Brazilian stock market index, to illustrate the application of Markov Chains in financial analysis.
How many states did Leandro Guerra define for the Markov Chain model in this trading strategy?
-Leandro Guerra defined three states for the Markov Chain model: increase, decrease, and stable.
What is the purpose of calculating the transition probabilities in the Markov Chain?
-The purpose of calculating the transition probabilities is to understand the likelihood of moving from one state to another, which can be used to make informed trading decisions based on the predicted market behavior.
What is the significance of the 1% threshold mentioned in the script?
-The 1% threshold is used to define the states of increase and decrease in the Markov Chain model. If the return is above 1%, it is considered an increase; if it is below -1%, it is considered a decrease; and if it is between -1% and 1%, it is considered stable.
How does the speaker suggest using the Markov Chain model for trading decisions?
-The speaker suggests using the transition probabilities derived from the Markov Chain model to identify patterns and make trading decisions based on the predicted behavior of the market, such as buying when the market is expected to revert to the mean.
What is the outcome of applying the Markov Chain trading strategy to the 'ibov' data in the video?
-The outcome of applying the Markov Chain trading strategy to the 'ibov' data resulted in an 18.884% return after operational costs, demonstrating the effectiveness of the strategy in generating profits.
How does the speaker emphasize the importance of understanding the code in the video?
-The speaker emphasizes that understanding the code is crucial for effectively applying the Markov Chain model in trading strategies, as it allows traders to make informed decisions based on the calculated transition probabilities and states.
What is the speaker's advice for those who want to further explore the content of the video?
-The speaker advises viewers to download the provided code, study it, and apply it to different scenarios to enhance their understanding of the Markov Chain model and its application in trading.
Outlines
📚 Introduction to Markov Chains in Python for Finance
This paragraph introduces the viewer to a Python course focused on quantitative finance. The speaker, Leandro Guerra, welcomes viewers to lesson 25 and sets the stage for teaching how to use Markov Chains for trading. He emphasizes the importance of understanding the previous lesson on Markov Chains and provides a brief overview of the approach he will take, highlighting its effectiveness and ease of understanding. Leandro also encourages viewers to share their thoughts and engage with the content, promoting interaction within the community.
📈 Data Collection and Markov Chain Application
In this segment, the speaker delves into the practical application of Markov Chains for trading by starting with data collection from the IBOV index from 2012 to 2024. He explains the process of calculating returns for three different periods and setting up a 52-week moving average. The concept of states in Markov Chains is introduced, with three possible states defined: increasing, decreasing, and stable returns. The speaker then explains how to calculate the transition probabilities between these states, which is crucial for making trading decisions based on the Markov Chain model.
🔢 Probabilities and State Transitions
This paragraph focuses on calculating the probabilities of state transitions within the Markov Chain model. The speaker demonstrates how to use Python code to classify the variations in returns and apply this classification to the dataframe. He then explains the concept of a dictionary to store transition structures and how to calculate the number of transitions for each state. The speaker provides a detailed explanation of how to interpret the transition probabilities and how they can be used to make trading decisions.
💡 Trading Rules and Results
The speaker now discusses the application of the Markov Chain model to create trading rules. He explains how to use the transition probabilities to determine when to buy or sell based on the current and previous states of the market. The speaker then presents the results of applying these rules to historical data, showing that the Markov Chain model can yield significant returns with minimal trades. He compares these results to simple mean reversion strategies and highlights the effectiveness of the Markov Chain approach. The speaker also touches on the importance of adjusting parameters and managing risk in trading strategies.
🚀 Final Thoughts and Encouragement
In the concluding paragraph, the speaker wraps up the lesson by reiterating the potential of using Markov Chains in trading and encourages viewers to experiment with different parameters and strategies. He emphasizes the importance of risk management and how it can enhance the performance of trading strategies. The speaker invites viewers to like, share, and download the code for further study, fostering a learning community. He signs off with a warm farewell, looking forward to the next session and reminding viewers of the value of continued learning and engagement.
Mindmap
Keywords
💡Python
💡Markov Chain
💡Trading
💡IBOV
💡Returns
💡Moving Average
💡States
💡Transitions
💡DataFrame
💡Dictionaries
💡Trading Rules
💡Backtesting
Highlights
Introduction to Markov Chains for trading, emphasizing their ease of understanding and practical application.
Explanation of capturing IBOV data from 2012 to 2024 for calculating returns and setting up the Markov Chain model.
Use of a 52-week moving average as the basis for the Return on Investment (ROI) calculation within the Markov Chain framework.
Creation of three states within the Markov Chain: increasing, decreasing, and stable, based on the 1% threshold relative to the moving average.
Calculation of transition probabilities between the three states to understand the likelihood of market movement.
Segmentation of the data into training and testing sets for model validation and application.
Development of a function to classify return variations as increase, decrease, or stable based on the defined thresholds.
Utilization of Python's 'apply' method to efficiently process data frames with the classification function.
Explanation of the dictionary structure for storing transition states and their associated probabilities.
Calculation of transition probabilities for each state, providing insights into market behavior and potential trading opportunities.
Application of the Markov Chain model to the entire data set to derive a comprehensive set of transition probabilities.
Discussion on the practical application of the model for trading, emphasizing the importance of understanding the model's implications.
Comparison of the Markov Chain trading strategy with a simple mean reversion strategy, showcasing the model's effectiveness.
Presentation of the trading results using the Markov Chain model, demonstrating significant returns and practical applications.
Explanation of how adjusting parameters such as the threshold and time period can impact trading outcomes and the model's performance.
Emphasis on the importance of risk management when applying the Markov Chain model to real-world trading scenarios.
Transcripts
[Música]
fala meus queridos sejam muito
bem-vindos ao aos pokem Market meu nome
é Leandro guerra e hoje na nossa aula 25
aqui do curso de Python para Finanças
quantitativas mostrarei para vocês a
como usar a cadeia de marcov para fazer
trading tá primeiro ponto que eu quero
fazer se você não assistiu a aula de
introdução às cadeias de marcov que tá
aqui no primeiro comentário assista
porque senão você não vai entender nada
porque eu vou passar pelo código Não vou
ficar explicando marcov de novo segundo
ponto essa proposta de uso que eu dou
aqui ela não é a única que existe tá
então eu escolho ela um porque ela
funciona e dois porque ela é fácil de
entender então como a aula é introdução
à cadeia de marcov por trading você vai
conseguir pegar a ideia beleza meus
queridos não se esqueça de compartilhar
dá o seu like deixar o seu comentário tá
é assim que você retribui o trabalho que
eu venho fazendo aqui para vocês no
YouTube e vejo vocês também lá no outs
pok Market na prática Tá bom então a
gente vai começar e vamos tirar aqui eu
tinha colocado Petro mas a gente vai
deixar genérico vamos começar pelo ibov
Então a gente tem aqui
tranquilinho a captura dos dados do ibob
de 2012 até 2024 a gente não vai chegar
precisar desde 2012 mas deixa aqui do
dos últimos anos tá a gente calcula para
três períodos o O Retorno o nosso alvo o
nossa média móvel aqui vai ser de 52 e o
nosso rsl baseado nessa média móvel é
desse mesmo período também Leandro
primeira coisa por que período de três
que eu quis pode ser dois pode ser cinco
também funciona tá tá pode ser um pode
ser 10 A diferença é que Conforme você
ajusta esse período aqui para mais ou
para menos você tá notando que tem dois
carinhas aqui que são os limites O que
são esses limites lembra que a cadeia de
marcov ela trabalha justamente com a
probabilidade de transição daquilo que a
gente chama de
Estados então eu vou criar três estados
Possíveis quando Eu Estou diminuindo
Aquela minha variação do retorno quando
eu estou mantendo estável e quando eu
estou aumentando ou quando o mercado fez
assim se eu tiver esse limite tá
superando 1% que é o limite superior vai
aparecer que eu aumentei Então eu saí de
um estado para o estado de aumento se o
retorno ficar entre Men 1% e mais 1% eu
vou considerar que é estável aquela zona
ali cheia de ruid que a maioria dos
casos e depois se o papel tá caindo a
mais do que 1% vai ser o período de
diminuição aí eu vou ter os meus três
estados e com esses três estados eu
posso calcular justamente aquilo que nos
interessa que é a probabilidade de
transição tal qual eu explico bem na
aula introdutória de marcov que tá no
primeiro comentário beleza Qual que é o
nosso raciocínio o nosso raciocínio é eu
vou calcular as transições de estados
para um ano e vou usar essas transições
de statos para fazer um trade no ano
seguinte Tá bom então por isso que você
vê aqui o o ear trin 22 o ear test 23 e
aí a gente faz aqui uma concatenação das
Strings só para ficar mais fácil então
eu separo né entre treinamento e teste
aqui pra gente poder rodar isso
bonitinho Então deixa eu rodar porque
sem rodar não vai ter nada pra gente ver
e depois a gente vai aqui ó essa é a
função mais importante ah na verdade é o
pedaço de código mais importante da aula
inteira primeiro a gente tem uma função
aqui que eu criei que é a Justamente a
função que vai classificar as variações
então toda vez que eu encontrar um
retorno tá vendo aqui ó retorno se ele
for maior que o limite superior é
aumento se ele for melhor do que o
limite inferior a diminuição E se ele né
for qualquer uma das outras coisas ou
seja tiver entre um e o outro ele vai
ser estável como isso é uma função eu
quero aplicar ela para uma coluna no
dataframe eu simplesmente uso aqui o
método apply para aquela função Ok
beleza aí agora o que que a gente
precisa a gente vai armazenar armazenar
perdão essa estrutura dentro de um
dicionário tá o dicionário é um é um
tipo né de de armazenamento de dados
vamos colocar dessa forma
ah onde você tem uma propriedade que a
gente chama de chave e valor então você
tem uma chave por exemplo nome e você
tem um valor para aquela chave que é
Leandro só que nome pode ter outras
Chaves posso ter nome aí tem primeiro
nome segundo nome terceiro nome e aí
você tem essa estrutura aninhada o
dicionário ele é muito bom para isso E
aí você vai entender muito bem quando a
gente rodar esse código aqui e ver o
resultado que vai sair disso aqui então
dado os meus estados de aumento
diminuição e
estável eu vou criar aqui um dicionário
de transição para cada um deles então
quando eu tô em Aumento passei para
aumento Quando eu tô em Aumento passei
para diminuição quando tô em Aumento e
passei para estável e a mesma coisa
depois quando eu tô instável passei para
aumento quando eu tô instável continuei
instável quando eu tava estável passei
para diminuição e a mesma coisa por
diminuição E com isso né então eu crio
aqui como eu tenho três eu vou ter nove
combinações totais né que vai ser aí 3 3
x 3 ou 3 Quad Então eu tenho nove
combinaç possíveis porque eu tenho um
Estado variando em três outro estado
variando em três tá e depois outro
estado variando em três então tenho ali
nove transições
beleza feito isso eu tenho que
contar quantas transições eu tenho em
cada estado então eu vejo Qual que é o
estado agora qual que é o próximo estado
e aí eu faço a transição do estado e
calculo faço uma soma de quantos valores
eu tenho ali e depois eu divido pelo
total e depois eu uso isso daqui só para
dar um print pra gente poder ver esse
cara aqui na tela
ó tá vendo os nove as nove transições de
estados estão calculadas agora isso
daqui é o ponto aqui é o ponto
fundamental da cadeia de markov tá é o
ponto
fundamental então eu tenho quando eu tô
e olha o que isso diz pra gente né Você
não tem que ser só um macaco que fica
apertando código você tem que entender o
que isso daqui tá dizendo para você
então isso daqui tá dizendo para você o
seguinte Ele tá dizendo que quando no
ano de 2022 que foi onde a gente usou
para fazer isso daqui então no ano de
2022 quando você tinha aumento você foi
para aumento em 69% das vezes ou seja se
você
subiu mais do que 1% foi o que a gente
colocou ali na transição No Limite
superior tá Você subiu esse cara
ali
o próximo estado depois daquilo foi
outra alta de
1% quando não é qualquer valor entre
men1 e 1 e quando você teve uma alta de
1% e depois você teve uma queda na
sequência de - 1% ou mais é só 2% dos
casos Então você tem Justamente a mesma
coisa pra diminuição e PR estável
naturalmente a gente tem ten uma
conservação do momento então quando eu
tenho aumento a maior probabilidade no
aumento quando eu tenho a diminuição a
maior probabilidade na diminuição e
quando eu tô estável a maior
probabilidade no estável Mas você vê que
o código é tão bonito tá e a ideia da
cadeia é tão bonita que no estável que é
a zona neutra entre men1 e 1 eu tenho
aqui não tão distante ou seja ele pode
ir para qualquer lugar por isso que eu
falo aquela zona neutra entre menos e 1
que não acontece nenhuma tá para
você ver como isso é de fato você tem
aqui tipo quase vai 30% de chance para
ele se tá entre menos 1 e 1 outra vez
ele ir para mais 1% outra vez ele ir
para - 1% tá é ali dessa forma Beleza
beleza feito isso então eu aplico né
esse esse carinha no no no retorno tá pr
pra Base inteira pra gente dar uma
olhadinha aí aqui o que que eu fiz tá eu
fiz uma coisa então eu apliquei a mesma
função apply paraa base inteira a aí
aqui o que que você tem você tem um
código se eu quiser pegar criar
transformar isso porque isso daqui é
informação da cadeia de marcov certo
então isso daqui é o dicionário isso
daqui não tá dentro do meu dataframe ah
se eu for olhar aqui o o o o meu
dataframe
data V dar uma olhadinha nele aqui ó eu
não tenho isso daqui eu só tenho as
classes tá estável diminuição e
diminuição como é que eu pego essa
probabilidade aqui se eu quiser
trabalhar com ela de alguma forma porque
Lembra que eu falei que existem várias
formas de você trabalhar a cadeia de
markov então se eu quiser trabalhar com
ela aqui de outra
forma que que eu tenho que fazer não vou
usar nessa aula mas eu antecipo para
você como é que você faz você pode fazer
de duas formas uma forma didática porém
grande que é olha toda vez que eu tiver
aumento e aumento eu pego lá no
dicionário a transição aumento aumento
toda vez que eu tiver aumento e o
anterior for diminuição eu pego o
aumento diminuição e faço nove caras
desse
aqui funciona funciona mas tem um jeito
mais fácil esse é mais fácil porque ele
é muito intuitivo Ah porque eu olho aqui
eu sei ah vem o o Esse é aumento o
anterior era aumento o atual é aumento o
anterior era diminuição beleza Tá e aí
eu pego justamente aquela probabilidade
que tá no dicionário e atribuo do
contrário Eu repito aquela informação
para eu não zerar tudo que eu já fiz
antes tá Existe uma forma que é muito
mais fácil tirando as tras linhas de
comentário que eu deixei para você
Lembrando que você pode baixar esse
código no autospark pcom lá na parte de
curso gratuito onde você tem a o curso
de Python você pode pegar o código lá
então para depois você né se você não
lembra da aula que tem que lembrar mas
se você não lembra Você pode ler e
entender o que que eu fiz então tirando
as linhas de comentário você você tem a
mesma coisa lá em cima tá só que a gente
faz aqui em seis linhas Então eu tenho
uma função onde eu tenho a transição de
probabilidade onde eu passo minha linha
e passo minha transição então eu vou dar
uma olhada lá na minha classe e na
anterior e aí eu faço justamente uma
função apply aqui de novo e aí eu
consigo pegar o MPR lá da do do nosso
colega na matriz do nosso na verdade
dicionário de transição Então esse cara
aqui faz a mesma coisa que a célula em
cima só que muito mais pythonico é o
pessoal adora pythonico tal então tá
aqui ó pythonico Tá bom então aí você dá
uma olhadinha Como tá o negócio aqui
tudo isso que a gente fez ali tá é para
criar esse cara aqui ó M
prob então eu tô pegando a probabilidade
quando era estável e ficou estável 041
quando é era estável e virou aumento
0,28 não é isso que a gente tem ali ó
quando era estável e virou aumento vai
ele arredondou mas beleza tá a gente tem
esse carinha aqui então a gente tem
todas as transições
e todas as
probabilidades claro vamos o que
interessa que é o trading então a gente
faz o seguinte tá a gente faz o seguinte
a regra de trade que ela é
tá isso eu quero que vocês entendam você
pode colocar o decho de regra de trading
que você tiver aqui só que você tem que
encontrar uma que
generalize tá então a questão é a
seguinte
quando a minha classe atual é diminuição
e a minha classe anterior era
estável lembra que o mercado ele tem a
tendência a reverter a
média você
compra quando ele tá aumenta agora e ele
era estável tá perdão que tá na hora de
tomar o negócio aqui deixa eu só dar uma
olhadinha rapidinho e só um segundinho
perdão a vocês por esse momento mas aqui
tá tudo bom tudo certo
ótimo Tô analisando aqui o o TR
esportivo né Então tá tá tudo bem
obrigado mais um game ali então meus
queridos o que que eu fiz partindo desse
princípio justamente da reversão à média
eu aplico então eu no conceito da cadeia
de marcov então quando eu tenho as
minhas classes anteriores e atuais eu
faço uma regra e quando eu tenho a outra
eu
compro e depois eu comparo isso com um
evento aqui não marcov que é Beleza
então se eu só fizesse a mesma coisa
quando
caísse abaixo daquele limite superior
negativo né então menos um eu comprasse
E se subisse eu vendesse né porque é
aquela mesma ideia mais ou menos
aproximada a gente você fazer uma
reversão à média e para comparar os dois
vou rodar esse cara aqui ele vai me dar
um resultado tcharam ó se você tivesse
fazendo ali uma simples reversão o teu
resultado final no ano de 2023 teria
sido aqui um um 0.67 por. né chegou a
ganhar até 21% chegou a perder aqui os5
ou seja o Dr Down muito aceitável mas
ficou no 0 a z0 agora marcov Chin tá
Olha que delícia o markov chain te deu
ali com
pouquíssimos pouquíssimos trades ao
longo do ano ele te deu ali 18.884 por
já descontado o custo operacional
líquido obviamente Depois tem RS monumen
Tenho mas o negócio
funciona show né Ah legal Leandro isso
funciona para o outro papel é funciona
cara
aí você vai aqui e coloca sei lá
Petro tá vai ter papel que não funciona
Petro ó funciona o Simple revers P teria
sido uma tragédia absoluta mas o markov
Chin você vê que ela tem obviamente ela
é muito próxima ao ibov né tem as
diferenças mas a Petro carrega o ibov
ibov carrega a Petro tá aqui ó um
resultado muito parecido sei lá se eu
for pegar um dos bancos tá se eu for
pegar aqui ó e Tube 4 tá pega o bichão
Ali vai me dar Ó teve um pouco mais de
swing Tá mas ainda assim acabou o ano
com 21.29
por. com poucos trades chegou a dar 33
pior momento aqui foi quando perdeu aqui
dos 27 pro para 11 tá e você pode fazer
essa comparação com os outros anos ah
vamos ver ali ó de 21 para 22 né que que
aconteceu vamos ver no YouTube então PR
você ver se esse negócio tem ó Foi meio
negativo aqui no YouTube mas ainda foi
melhor do que não ter feito
nada Vamos ver a Pet nesse ano aqui que
a gente sabe que não é assim um
Abra para muito as
coisas Petro
4 ó bem menos negativo chegou a dar 15%
positivo tá vamos ao
bpa o Bovespa também carrega ali então
foi foi um ano difícil para todo mundo
né vamos ver então usando os dados de 20
para 21 com o próprio bov aí você fala
cara
é não tá dando porque eu na verdade eu
não tô rodando nada porque eu não tô
fazendo
nada né É porque não é
bvsp pontencial é só bvsp ó o ebob ficou
um pouquinho negativo só que aí esse é o
ponto se você trabalha esses caras aqui
e esse é o seu trabalho depois como
cientistas de dados você vai ver que o
seu resultado Varia muito Ó ficou se eu
só mudei o limite ficou positivo então
você pode trabalhar com os limites
diferentes vai dar menos trade ainda
porque obviamente o evento de mais 1,5
por ou menos 1,5 por é mais raro mas em
teoria foi mais assertivo Ah mas e se eu
aumentar aqui para invés de três para
cinco dias
tá Ah ficou legal teve um drown maior
mas né levou lá pro positivo também ali
fazendo pouquíssimos trades em
12.66 se colocar 10 dias Ah que que a
gente vai ter aqui no Déo dia ó Foi uma
tragédia por qu porque eu acho que aí a
gente já tá forçando a barra talvez não
funcione mesmo tá então principalmente
se eu colocar aqui 20 dias esse estado
não é legal para isso ó tá então de fato
você precisa de menos dias você colocar
só dois
dias você tem legalzinho também Ah se
você colocar mais dias só que você
aumentar ali o trigger é faz todo
sentido vamos deixar 5% então para 20
dias
tá vai melhorar aquele resultado ó
melhorou aquele resultado 20 dias dia
para caramba Talvez 5% seja pouco se a
gente pegar 10% então esse é um
parâmetro fundamental ó
você teve ali com dois trades você teve
13% no ano entendeu a
relação por isso que não é só você mudar
o alvo você tem que quando você ajusta o
alvo você tem que ajustar esse cara aqui
pode ser outro pode você pode vir aqui e
dar uma olhada no que generaliza invés
de 10% 88% Ah já não foi tão bom fez um
pouquinho mais de trade mas perdeu aqui
ó perdeu um trade que deu aqui perdeu
esses 3% o resto ganhou tudo então tem
uma de acerto muito alta também
lembrando pessoas isso daqui eu não tô
fazendo nenhum gerenciamento de risco
não tô controlando nenhum stop não tô
fazendo nada então quando você adicionar
lembra que o gerenciamento ele não
transforma uma coisa ruim em coisa boa
mas ele pega aquilo que é bom e ele
transforma em uma coisa melhor tá bom
então deixa o seu like compartilhe faça
o download do Código estude vai ter mais
aula também e a gente se vê numa próxima
meus queridos um grande abraço para
vocês tchau
tchau
Ver Más Videos Relacionados
Introdução - Cadeias de Markov (Markov Chains) - Outspoken Market
No Loss Ichimoku Cloud Trading Strategy for Nifty & Banknifty | Dhan
TRDR - How to use Orderbook Depth as Scalper, Day Trader & Swing Trader
Smart money concept bank nifty option trading
Market Structure Simplified (For Beginner to Advanced Traders)
MALAYSIAN SNR FULL STRATEGY NO BS 2024
5.0 / 5 (0 votes)