Originario: FMZ Quantwww.fmz.com
La "verdadera cosa" del comercio cuantitativo es el lugar de reunión donde realmente se puede beneficiar.
No. 1
El mentor de Warren Buffett, Benjamin Graham, una vez mencionó en el libro <
El 50% de los fondos en manos se invierten en fondos de capital, y el 50% restante se invierten en fondos de bonos.
Un reequilibrio de la posición de activos basado en intervalos fijos o cambios de mercado restablece la relación entre los activos de acciones y los activos de bonos a un nivel inicial de 1:1.
Esta es toda la lógica de toda la estrategia, incluyendo cuándo comprar y vender, y cuánto comprar y vender.
No. 2
En este método, la volatilidad de los fondos de bonos es en realidad muy pequeña, muy por debajo de la volatilidad de las acciones, por lo que los bonos se utilizan aquí como "anclajes de referencia", es decir, utilizando bonos para medir si las acciones están aumentando demasiado o demasiado poco.
Si el precio de las acciones aumenta, el valor de mercado de las acciones será mayor que el valor de mercado del bono. Cuando la relación del valor de mercado de estos dos exceda el conjunto de un umbral, la posición total se reajustará, las acciones se venderán y el bono se comprará para que el valor de las acciones al valor del bono se restablezca a la relación inicial de 1: 1.
Por el contrario, si el precio de las acciones cae, el valor de mercado de las acciones será menor que el valor de mercado del bono. Cuando la relación del valor de mercado de estos dos excede el conjunto de un umbral, la posición total se reajustará, se comprará la acción y se venderá el bono para que la relación de capitalización de mercado del valor del bono al valor de las acciones se restablezca a la inicial de 1: 1.De esta manera, la relación entre el equilibrio dinámico de las acciones y los bonos es suficiente para disfrutar de los beneficios del crecimiento de las acciones y reducir la volatilidad de los activos.
Ya que esta es una estrategia completa y mutua, ¿por qué no la usamos en el mercado de criptomonedas?
No. 3
Estrategia de equilibrio dinámico de activos Blockchain en BTC
La lógica de la estrategia
De acuerdo con el valor actual de BTC, el saldo de la cuenta se mantiene en $ 6400 en efectivo y 1 BTC, es decir, la relación inicial de efectivo al valor de mercado de BTC es de 1: 1.
Si el precio del BTC sube a $7400, es decir, el valor de mercado del BTC es mayor que el saldo de la cuenta, y la diferencia entre ellos excede el umbral establecido, entonces se venden monedas (7400-6400)/7400/2.
Si el precio del BTC cae a $ 5400, es decir, el valor de mercado del BTC es menor que el saldo de la cuenta y la diferencia entre ellos excede el umbral establecido, compre (6400-5400) / 5400/2 monedas.
De esta manera, independientemente de si el BTC se aprecia o se deprecia, el saldo de la cuenta y el valor de mercado del BTC siempre se mantienen dinámicamente iguales.
No 4
Entonces, ¿cómo implementarlo con código de programación?
Tomemos como ejemplo la plataforma de comercio cuantitativo 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
}
}
Todo el marco de la estrategia es en realidad muy simple, una función
No. 5
Módulo de orden
// 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
}
La lógica de la transacción del pedido es clara, y todos los comentarios han sido escritos en el código.
El proceso principal es el siguiente:
Obtener información de la cuenta.
Obtenga los datos de Tick.
Calcular el margen de oferta y demanda de los datos de Tick.
Calcular el saldo de la cuenta y el diferencial de valor de mercado de BTC.
Calcular la condición de activación de la negociación, el precio de la orden y la cantidad de la orden.
Ponga un pedido y devuelva verdad.
No.6
Cancelar el módulo de orden pendiente
// 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
}
}
}
}
El módulo de cancelación de órdenes pendientes es aún más simple, los pasos son los siguientes:
Espera un segundo antes de retirar el pedido, porque algunas casas de cambio pueden tener retrasos en el servidor.
Continúe obteniendo una serie de órdenes no ejecutadas, y si se devuelve una excepción, siga intentando hasta que tenga éxito.
Si la matriz de órdenes no ejecutadas está vacía, devolverá el estado de retirada inmediatamente.
Si hay órdenes no ejecutadas, toda la matriz se recorre y la orden se retira de acuerdo con el ID de orden.
No 7
Esta estrategia es todo el código fuente de programación En la plataforma de comercio cuantitativo FMZ, con solo 80 líneas de código, se ha construido con éxito una estrategia completa de balance dinámico de blockchain BTC.
No. 8
A continuación, vamos a probar esta simple estrategia de equilibrio dinámico para ver si funciona.
Entorno de pruebas de retrocesoDesempeño de las pruebas de retrocesoCurva de ensayo hacia atrásOtro, el mismo período gráfico de precios de BTC¿Tiene alguna conmoción?
El BTC ha continuado su declive de ocho meses, e incluso la mayor caída ha superado el 70%, lo que ha causado que muchos inversores pierdan la confianza en los activos de blockchain.
El ingreso acumulado de esta estrategia es tan alto como el 160%, y la relación anualizada de retorno al riesgo excede 5.
No 9
Esta estrategia de equilibrio, con un solo parámetro básico (valor umbral), es un método de inversión muy simple que no persigue rendimientos excedentes sino beneficios sólidos.
En contraste con la estrategia de tendencia, la estrategia de equilibrio dinámico es contra la tendencia. Esta estrategia es reducir la posición y enfriarse cuando el mercado está demasiado caliente. Cuando el mercado está desierto, se ocultará, lo que es similar a la regulación macroeconómica.
En efecto, la estrategia de balance dinámico se basa en la idea de que el precio es impredecible y al mismo tiempo captura las fluctuaciones de precios.
En vista de la longitud del artículo, es imposible que un artículo sea exhaustivo sobre todo. Como dice un viejo dicho
El mercado de valores no es un "medidor de peso" que mide con precisión el valor. Por el contrario, es una "máquina de voto". Las decisiones tomadas por innumerables personas son un dopante racional y emocional. Hay muchas veces cuando se toman estas elecciones. Está lejos del juicio de valor de la razón. El secreto de invertir es invertir cuando los precios son mucho más bajos que el valor intrínseco, y creer que las tendencias del mercado aumentarán.
Para copiar directamente el código fuente, por favor visite nuestro cuadro de estrategia en:https://www.fmz.com/strategy/110900
Hay muchas estrategias que puedes estudiar, descargar, alquilar o comprar.
NO.10
Sobre nosotros
La razón de la operación de este sitio web es cambiar el estado actual del mundo del comercio cuantitativo donde falta la "materia real", donde hay muchas estafas y apenas comunicaciones profundas, y crear una plataforma de aprendizaje y comunicación de comercio cuantitativo más pura.www.fmz.com)
Su reenvío será la fuerza impulsora para apoyarnos a continuar creando más cosas reales! Si usted siente que este artículo es útil para usted, por favor reenvíelo a su amigo y apoye a nosotros. Compartir también es una especie de sabiduría!
Contacta con nosotros
Telegrama: FMZ Quant
El correo electrónico:henry@fmz.com
Página web:www.fmz.com