Original: FMZ Quantwww.fmz.com
O "real stuff" do quantitative trading local de reunião onde você pode realmente beneficiar.
No 1
O mentor de Warren Buffett, Benjamin Graham, uma vez mencionou no livro "O Investidor Inteligente" um modelo de negociação em que ações e títulos são dinamicamente equilibrados.Este modelo de negociação é muito simples:
50% dos fundos em mãos são investidos em fundos de ações e os 50% restantes são investidos em fundos de obrigações, ou seja, ações e obrigações representam metade.
Um reequilíbrio das posições de activos baseado em intervalos fixos ou em alterações do mercado restabelece a relação entre os activos de acções e os activos de obrigações a um nível inicial de 1:1.
Esta é toda a lógica de toda a estratégia, incluindo quando comprar e vender, e quanto comprar e vender.
No 2
Neste método, a volatilidade dos fundos de obrigações é na verdade muito pequena, muito inferior à volatilidade das acções, pelo que as obrigações são aqui utilizadas como
Se o preço da ação subir, o valor de mercado da ação será maior do que o valor de mercado da obrigação. Quando a relação do valor de mercado desses dois exceder o conjunto de um limiar, a posição total será reajustada, a ação será vendida e a obrigação será comprada para que o valor da ação para a relação do valor da obrigação para restaurar ao inicial 1: 1.
Por outro lado, se o preço das ações cair, o valor de mercado das ações será menor do que o valor de mercado da obrigação. Quando a relação do valor de mercado destas duas exceder o conjunto de um limiar, a posição total será reajustada, a ação será comprada e a obrigação será vendida para fazer a relação de capitalização de mercado do valor da obrigação para o valor da ação para restaurar o inicial 1: 1.Desta forma, a relação entre o equilíbrio dinâmico de ações e títulos é suficiente para desfrutar do lucro do crescimento das ações e reduzir a volatilidade dos ativos.
Uma vez que esta é uma estratégia completa e mútua, por que não a usamos no mercado de criptomoedas?
No 3
Atividades Blockchain Estratégia de Balanço Dinâmico em BTC
Estratégia lógica
De acordo com o valor atual do BTC, o saldo da conta é mantido em US $ 6400 em dinheiro e 1 BTC, ou seja, a relação inicial de dinheiro para o valor de mercado do BTC é de 1: 1.
Se o preço do BTC subir para $7400, ou seja, o valor de mercado do BTC é maior que o saldo da conta, e a diferença entre eles excede o limite estabelecido, então (7400-6400)/7400/2 moedas são vendidas.
Se o preço do BTC cair para $5400, ou seja, o valor de mercado do BTC é menor do que o saldo da conta e a diferença entre eles excede o limite definido, compre (6400-5400)/5400/2 moedas.
Desta forma, independentemente de o BTC ser apreciado ou depreciado, o saldo da conta e o valor de mercado do BTC são sempre mantidos dinamicamente iguais.
No 4
Então, como é que se implementa com código de programação?
Tomemos como exemplo a plataforma de negociação quantitativa FMZ.
// strategy parameter
var threshold = 0.05; // Threshold
var LoopInterval = 60; // Polling interval(seconds)
var MinStock = 0.001; // Minimum transaction volume
var XPrecision = 4; // Quantity accuracy
var ZPrecision = 8; // Price accuracy
// Withdrawal order function
function CancelPendingOrders() {
}
// Placing Order function
function onTick() {
}
// Main function
function main() {
// Filter non-critical information
SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
while (true) { // Polling mode
if (onTick()) { // Execute the onTick function
CancelPendingOrders(); // Cancel unexecuted pending orders
}
Sleep(LoopInterval * 1000); // Sleep
}
}
Toda a estrutura da estratégia é realmente muito simples, uma função
No 5
Modulo de encomenda
// Placing Order function
function onTick() {
var acc = _C(exchange.GetAccount); // Get account information
var ticker = _C(exchange.GetTicker); // Get Tick data
var spread = ticker.Sell - ticker.Buy; // Get the bid-ask spread of Tick data
// 0.5 times the difference between the account balance and the current position value
var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
var ratio = diffAsset / acc.Balance; // diffAsset / Account Balance
LogStatus('ratio:', ratio, _D()); // Print ratio and current time
if (Math.abs(ratio) < threshold) { // If the absolute value of ratio is less than the specified threshold
return false; // return false
}
if (ratio > 0) { // If ratio is greater than 0
var buyPrice = _N(ticker.Sell + spread, ZPrecision); // Calculate the order price
var buyAmount = _N(diffAsset / buyPrice, XPrecision); // Calculate the order quantity
if (buyAmount < MinStock) { // If the order quantity is less than the minimum transaction volume
return false; // return false
}
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // Buy order
} else {
var sellPrice = _N(ticker.Buy - spread, ZPrecision); // Calculate the order price
var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // Calculate the order quantity
if (sellAmount < MinStock) { // If the order quantity is less than the minimum transaction volume
return false; // return false
}
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // Sell order
}
return true; // return true
}
A lógica da transação de encomenda é clara, e todos os comentários foram escritos no código.
O processo principal é o seguinte:
Obtenha informações da conta.
Obtenha os dados do Tick.
Calcular a diferença entre os preços de venda e os preços de venda dos dados Tick.
Calcular o saldo da conta e o diferencial do valor de mercado do BTC.
Calcular a condição de desencadeamento da negociação, preço da ordem e quantidade da ordem.
Faça uma encomenda e devolva a verdade.
NO.6
Cancelar o módulo de ordem pendente
// Withdrawal order function
function CancelPendingOrders() {
Sleep(1000); // Sleep 1 second
var ret = false;
while (true) {
var orders = null;
// Continue to get an array of unexecuted orders, if an exception is returned, continue to get
while (!(orders = exchange.GetOrders())) {
Sleep(1000); // Sleep 1 second
}
if (orders.length == 0) { // If the order array is empty
return ret; // Return to withdrawal status
}
for (var j = 0; j < orders.length; j++) { // Traversing the array of unexecuted orders
exchange.CancelOrder(orders[j].Id); // Cancel unexecuted orders one by one
ret = true;
if (j < (orders.length - 1)) {
Sleep(1000); // Sleep 1 second
}
}
}
}
O módulo cancelar ordem pendente é ainda mais simples, os passos são os seguintes:
Espere 1 segundo antes de retirar a ordem, porque algumas casas de câmbio podem ter atrasos no servidor.
Continue a obter uma matriz de ordens não executadas, e se uma exceção for devolvida, continue tentando até que seja bem sucedida.
Se a matriz de ordens não executadas estiver vazia, ela devolverá o status de retirada imediatamente.
Se houver ordens não executadas, a matriz inteira é atravessada e a ordem é retirada de acordo com o ID da ordem.
NO.7
Esta estratégia é todo código fonte de programação Na plataforma de negociação quantitativa FMZ, com apenas 80 linhas de código, uma estratégia completa de equilíbrio dinâmico BTC blockchain foi construída com sucesso.
No. 8
Em seguida, vamos testar esta simples estratégia de equilíbrio dinâmico para ver se funciona.
Ambiente de ensaio de retrocessoDesempenho dos testes de regressoCurva do ensaio retrôOutro, o mesmo período gráfico de preços BTCHá algum choque para ti?
O BTC continuou seu declínio de oito meses, e mesmo o maior declínio ultrapassou 70%, o que fez com que muitos investidores perdessem a confiança nos ativos blockchain.
A receita cumulativa desta estratégia é tão alta quanto 160%, e a taxa de retorno ao risco anuada excede 5. Para uma estratégia de negociação tão simples, esse retorno sobre o investimento excedeu a maioria dos tipos de jogadores
NO.9
Esta estratégia de equilíbrio, com apenas um parâmetro central (valor limiar), é um método de investimento muito simples que não procura rendimentos excessivos, mas sólidos lucros.
Ao contrário da estratégia de tendência, a estratégia de equilíbrio dinâmico é contra a tendência. Esta estratégia é reduzir a posição e arrefecer quando o mercado está muito quente. Quando o mercado está deserto, ele será escondido, o que é semelhante à regulação macroeconômica.
De facto, a estratégia de balanço dinâmico baseia-se na ideia de que o preço é imprevisível, ao mesmo tempo em que capta as flutuações de preços.
Em vista da extensão do artigo, é impossível que um artigo seja abrangente sobre tudo. Como diz um velho ditado
O mercado de ações não é um "peso" que mede com precisão o valor. Pelo contrário, é uma "máquina de votação". As decisões tomadas por inúmeras pessoas são um dopante racional e emocional. Há muitas vezes em que essas escolhas são feitas. Está longe do julgamento de valor da razão. O segredo do investimento é investir quando os preços são muito mais baixos do que o valor intrínseco e acreditar que as tendências do mercado vão aumentar.
Para copiar diretamente o código fonte, visite o nosso quadrado de estratégia em:https://www.fmz.com/strategy/110900
Há muitas estratégias que podes estudar, baixar, alugar ou comprar.
NO.10
Sobre nós
A razão para operar este site é mudar o estado actual do mundo do comércio quantitativo, onde falta o "real stuff", onde há muitos fraudes e apenas comunicações profundas, e criar uma plataforma de aprendizagem e comunicação quantitativa mais pura.www.fmz.com)
Se você acha que este artigo é útil para você, por favor, envie-o para seu amigo e apoie-nos.
Contacte-nos
Telegram: FMZ Quant
Email:henry@fmz.com
Página Web:www.fmz.com