
A estratégia é um sistema de negociação quantitativa que combina o preço médio ponderado por potássio (GWAP) e a análise de momentum. Ele prevê a movimentação dos preços por meio do tratamento ponderado por potássio dos dados de preços históricos, em combinação com indicadores de momentum de curto prazo. O núcleo da estratégia é usar o fator potássio para atribuir maior peso aos preços de curto prazo, aumentando a sensibilidade aos movimentos de mercado de curto prazo.
A estratégia baseia-se principalmente em duas teorias psicológicas principais: o efeito de dinâmica e o preço ponderado por Puma. Em termos de dinâmica, a estratégia aproveita a continuidade da tendência de preços nos mercados financeiros; em termos de peso, o preço histórico é ponderado em declínio por um fator de Puma (rango de valorização 0,5-1,5). Na implementação concreta, a estratégia é calculada com base no GWAP como preço de referência, abrindo posições em excesso quando o preço está acima do GWAP e apresenta uma tendência ascendente por três períodos consecutivos, ao contrário, abrindo posições em branco.
A estratégia permite o acompanhamento inteligente das tendências do mercado através da combinação de pesos e dinâmicas de Puma. Sua principal vantagem é a capacidade de ajustar a distribuição de pesos de acordo com a dinâmica da situação do mercado, mantendo uma alta eficiência de cálculo. Apesar de existirem alguns problemas de risco de mercado e sensibilidade de parâmetros, a estratégia tem boas perspectivas de aplicação através da otimização e aperfeiçoamento contínuos.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-16 08:00:00
period: 6h
basePeriod: 6h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("BTC Future Gamma-Weighted Momentum Model (BGMM)", shorttitle="BGMM", overlay=true,
default_qty_type=strategy.cash, default_qty_value=50000,
slippage=1, commission_value=0.01)
// Inputs
length = input.int(60, "Length for GWAP Calculation")
gamma_factor = input.float(0.75, "Gamma Weight Factor", minval=0.5, maxval=1.5, step=0.01)
// Helper Functions
var float cumulative_weighted_price = na
var float cumulative_weight = na
price = (high + low + close) / 3 // Typical price as a baseline
gamma_weights = array.new_float(length, 0.0)
price_series = array.new_float(length, na)
// Populate Arrays for Calculation
if bar_index >= length
for i = 0 to length - 1
weighted_gamma = math.pow(gamma_factor, i)
array.set(gamma_weights, i, weighted_gamma)
array.set(price_series, i, close[i])
// Compute GWAP
weighted_sum = 0.0
weight_total = 0.0
for i = 0 to length - 1
w = array.get(gamma_weights, i)
p = array.get(price_series, i)
weighted_sum := weighted_sum + p * w
weight_total := weight_total + w
GWAP = weight_total != 0 ? weighted_sum / weight_total : na
plot(GWAP, color=color.red, title="Gamma Weighted Average Price")
// Conditions for Trade Signals
long_condition = close > GWAP and close[1] > close[2] and close[2] > close[3]
short_condition = close < GWAP and close[1] < close[2] and close[2] < close[3]
// Strategy Logic
if long_condition
strategy.entry("Long", strategy.long)
if short_condition
strategy.entry("Short", strategy.short)