Estratégia Momentum Alpha

Autora:ChaoZhang, Data: 2023-11-23 11:34:40
Tags:

img

Resumo

A estratégia Momentum Alpha julga se um ativo subjacente tem impulso positivo, calculando sua taxa de Sharpe e valor de alfa.

Princípio da estratégia

Os principais indicadores desta estratégia são a taxa de Sharpe e a taxa de alfa. A taxa de Sharpe reflete o retorno ajustado ao risco de um ativo, enquanto a taxa de alfa reflete seu excesso de retorno sobre o valor de referência do mercado. Quando ambos são positivos, ele indica que o ativo tem altos retornos ajustados ao risco e supera o valor de referência do mercado. Portanto, uma posição longa é tomada. Quando ambos se tornam negativos, isso significa que o impulso desapareceu e a posição é achatada.

Especificamente, a estratégia primeiro calcula o rácio de Sharpe nos últimos 180 dias. O rácio de Sharpe é calculado como: (retorno diário médio retorno livre de risco) / desvio padrão dos retornos diários. Aqui, o médio e o desvio padrão dos retornos diários são calculados usando o preço de abertura e o preço de fechamento anterior. Quando o rácio de Sharpe é maior que 1, significa que o ativo tem um retorno ajustado ao risco relativamente alto.

Ao mesmo tempo, o alfa nos últimos 180 dias é calculado. O alfa é calculado através do modelo de mercado: Alpha = Retorno do ativo real (Retorno do mercado x Beta). Aqui são usados os retornos diários do ativo subjacente e do índice S&P 500. Quando o alfa é maior que 0, significa que o retorno real do ativo é maior do que o do benchmark de mercado.

Portanto, quando tanto a taxa de Sharpe quanto o alfa são positivos, uma posição longa é tomada.

Análise das vantagens

A maior vantagem desta estratégia é que, julgando o ímpeto, pode capturar as oportunidades de crescimento do mercado mais amplo e de algumas ações individuais durante determinados períodos, controlando o risco para evitar quedas prolongadas do mercado.

  1. O cálculo do rácio Sharpe reflete as condições de ímpeto recentes e pode capturar as tendências de alta de alguns mercados e ações.

  2. Ao considerar de forma abrangente ambos os indicadores em diferentes horizontes temporais, o ímpeto positivo pode ser determinado com mais precisão.

  3. Quando o ímpeto desaparece, as paradas oportunas evitam grandes perdas, permitindo um lucro adequado após uma tendência de alta.

  4. Em comparação com os indicadores únicos de impulso, esta estratégia é mais estável e, ao mesmo tempo, flexível o suficiente para ser utilizada tanto em ações como em índices.

Análise de riscos

Apesar das vantagens, a estratégia apresenta ainda os seguintes riscos:

  1. Os indicadores de impulso podem se retrair. Quando o mercado vira, as ações de impulso podem cair rapidamente. Isso pode levar a grandes perdas. Os parâmetros podem ser ajustados ou combinados com outros indicadores.

  2. Quando os mercados se movem rapidamente, os valores do indicador podem atrasar e não refletir as últimas tendências.

  3. Não há controlo sobre o tamanho das posições, o que leva a riscos concentrados.

  4. Os dados de backtest podem ser insuficientes e o desempenho em tempo real incerto. Mais testes de backtest de tempo e instrumento devem ser realizados. As janelas de otimização de parâmetros devem ser encurtadas para evitar o sobreajuste.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Adicione mecanismos de stop loss, definindo pontos de stop loss quando os preços caem acentuadamente em um dia para evitar grandes perdas.

  2. Controlar o capital por negociação com base na volatilidade do mercado para limitar a perda por negociação.

  3. Otimizar parâmetros. Teste diferentes prazos para se adequar às características de diferentes ações subjacentes e condições de mercado. Diferentes combinações de parâmetros também podem ser avaliadas.

  4. Adicionar condições de filtragem. Definir filtros como volumes de negociação ou volatilidade evitar ficar preso em situações de variação ou baixa liquidez.

  5. Combinar com outras estratégias. Considerar a combinação com outras estratégias de tendência. Isto pode aumentar a estabilidade e diversificar os riscos fora de uma única estratégia.

Resumo

A estratégia Momentum Alpha captura dinamicamente oportunidades de impulso julgando tanto os retornos ajustados ao risco quanto o desempenho relativo do mercado dos ativos. Em comparação com indicadores de impulso únicos, ela tem as vantagens de julgamentos mais precisos, aplicabilidade mais ampla e maior resiliência ao risco.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-16 04:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Alpha strategy - simple version", overlay=true)

//by NIKLAUS
//USE ON DAILY TIMEFRAME TO DETECT MOMO STOCKS & ETFs AND TRADE THEM
//USE ON 5MIN CHART FOR INTRADAY USAGE
//examples to try this on: GER30, NAS100, JPN225, AAPL, IBB, TSLA, FB, etc.

//This Strategy goes long when Sharpe Ratio is > 1 and Alpha against the S&P500 is generated. It exits when conditions break away.

//https://en.wikipedia.org/wiki/Alpha_(finance)
//------------------------------------------------------------------------------------------------------------------------------------
//Alpha is a measure of the active return on an investment, the performance of that investment compared to a suitable market index. 
//An alpha of 1% means the investment's return on investment over a selected period of time was 1% better than the market during that same period, 
//an alpha of -1 means the investment underperformed the market. 
//Alpha is one of the five key measures in modern portfolio theory: alpha, beta, standard deviation, R-squared and the Sharpe ratio.


//simplified sharpe
src = ohlc4, len = input(180, title = "Sharpe/Alpha/Beta Period")
pc = ((src - src[len])/src)
std = stdev(src,len)
stdaspercent = std/src
sharpe = pc/stdaspercent


//alpha
sym = "BTC_USDT:swap", res=timeframe.period, src2 = close
ovr = request.security(sym, res, src2)

ret = ((close - close[1])/close)
retb = ((ovr - ovr[1])/ovr)
secd = stdev(ret, len), mktd = stdev(retb, len)
Beta = correlation(ret, retb, len) * secd / mktd

ret2 = ((close - close[len])/close)
retb2 = ((ovr - ovr[len])/ovr)

alpha = ret2 - retb2*Beta
//plot(Beta, color=green, style=area, transp=40)


smatrig = input(title="Sensitivity",  defval=2, minval=1, maxval=3) 
bgcolor (sma(sharpe,len/smatrig) > 1 and sma(alpha,len/smatrig) > 0 ? green : red, transp=70)

if (close > open) and (sma(sharpe,len/smatrig) > 1) and (sma(alpha,len/smatrig) > 0)
    strategy.entry("Alpha", strategy.long)
strategy.close("Alpha", when = (sma(sharpe,len/smatrig) < 1) or (sma(alpha,len/smatrig) < 0))


Mais.