avatar of 小天才收割机 小天才收割机
Seguir Mensajes Privados
3
Seguir
28
Seguidores

El viaje de las criptomonedas y la inversión cuantitativa de estudiantes universitarios nacidos en 1998

Creado el: 2020-03-07 18:11:51, Actualizado el: 2024-12-12 20:54:50
comments   11
hits   8714

El viaje de las criptomonedas y la inversión cuantitativa de estudiantes universitarios nacidos en 1998

El viaje de las criptomonedas y la inversión cuantitativa de estudiantes universitarios nacidos en 1998

1. Entra al mundo de las criptomonedas

Nací en 1998 y actualmente soy estudiante de último año de informática en una escuela de pregrado de 985. Continuaré mis estudios de posgrado en la misma escuela.

Entré en contacto por primera vez con el mundo de las criptomonedas el 1 de septiembre de 2017. Sí, recuerdo muy bien esta fecha porque tres días después se produjo el incidente “94” que sacudió el mundo de las criptomonedas. El banco central y otros cinco ministerios emitieron conjuntamente un documento Para evitar los riesgos de las ICO, el precio de las criptomonedas se redujo a la mitad.

El 1 de septiembre vi un vídeo que presentaba Bitcoin en una cuenta pública de WeChat (creo que era el vídeo de Wang Ziru). Sentí mucha curiosidad por esta cosa, así que descargué Huobi y recargué 100 yuanes en él. Vi el precio de Bitcoin , que era más de 30.000 RMB, lo que me asustó, así que compré algo de LTC. En ese momento, parecía que rondaba los 120 RMB por LTC. Pasé toda la noche observando la fluctuación de los pocos centavos y un yuan en mi cuenta, y el aumento del precio de LTC. Observa a la gente charlando en varios grupos de criptomonedas de QQ. Después de verlo toda la noche, todos mis amigos del grupo dijeron que el precio subiría, pero sentí que no era lo suficientemente emocionante, así que recargué varios miles de yuanes. En ese momento, Huobi todavía usaba recargas con tarjeta bancaria. Durante mucho tiempo, el dinero no llegó a mi cuenta, así que entré en pánico. Pedí ayuda a mis amigos del grupo y llamé al servicio de atención al cliente. Después de un tiempo, el dinero finalmente llegó a mi cuenta y luego compré todos los LTC. de nuevo.

El 4 de septiembre, tan pronto como el banco central emitió un documento, el precio de la moneda se desplomó. Tenía tanto miedo que vendí rápidamente mis pérdidas y abandoné el mercado. Luego vi cómo el precio de la moneda se reducía lentamente a la mitad. , los intercambios nacionales como Huobi no pudieron registrarse. Intercambios nacionales y extranjeros La diferencia de precios es enorme, lo que ha enriquecido a un grupo de personas que mueven ladrillos.

Más tarde retiré el dinero y volví a la escuela, y no me apresuré a volver a comprar en el mínimo (los nuevos inversores solo saben cómo perseguir los precios en aumento y vender los precios en caída), pero aún así presté atención a las tendencias en el círculo de criptomonedas y ocasionalmente Revisé de qué estaba hablando la gente en varios grupos de QQ. Era diciembre, el mes más loco del mercado alcista. TRON en Binance aumentó cientos de veces y otras monedas también duplicaron su valor. Cualquier valor por debajo del 50 % no se consideraba una fluctuación. Tuve la tentación y luego recargué. Unos pocos miles de dólares. , y luego todo tipo de operaciones extrañas de perseguir subidas y bajadas, viendo cómo varias monedas se disparan pero sin ganar dinero.

En enero de 2018, el auge del mercado alcista llegó a su fin. Registré OKCoin y comencé a jugar con contratos. Debo decir que fue realmente emocionante. Apalancamiento de 20x, duplicación, liquidación, etc. Miré la línea K y Me quedé despierto toda la noche.

Como casi todos los jugadores contractuales, terminé en una posición de quiebra. Pero tengo que decir que esta experiencia me enseñó mucho sobre finanzas. Antes ni siquiera reconocía la línea K.

2. Cuantitativo

Después de muchas noches de insomnio observando el mercado, como estudiante de informática, comencé a preguntarme si habría alguna manera de dejar que un programa operara por mí para poder dormir tranquilo.

En realidad, encontré fmz (llamado botvs en ese momento), pero era demasiado novato en ese momento y no pude descubrir cómo usar esta plataforma después de mucho tiempo, así que me di por vencido.

Más tarde, comencé a escribir robots conectándome a la API de OK (github: https://github.com/ccyanxyz/okex) y escribí algunas estrategias como medias móviles dobles y cuadrículas. Aunque no gané mucho dinero, También entré en el mundo del análisis cuantitativo, aprendí sobre varios indicadores técnicos y aprendí a utilizar la biblioteca talib. Más tarde, debido a muchos asuntos escolares, dejé de hacerlo, el robot se detuvo y regresó al modo de visualización y operación manual, pero la frecuencia era muy baja y solo realizaba una o dos operaciones de vez en cuando.

3. Utilice FMZ

Después de dar vueltas en círculos, finalmente volví a fmz, pero como ya tenía experiencia escribiendo mis propias estrategias, pude comenzar a usar fmz muy rápidamente esta vez. Descubrí que fmz se ha conectado a casi todos los intercambios principales y unificó las operaciones de transacciones, cuentas, etc. Es conveniente y fácil de usar. Puedes escribir un código y ejecutarlo en todas partes. Para alguien que ha dedicado mucho esfuerzo empaquetar manualmente el intercambio. Para las personas que usan API, es como encontrar un salvador.

Encontré el repositorio de estrategias públicas de fmz en GitHub (https://github.com/fmzquant/strategies). Fue como encontrar un tesoro. Pasé una noche o dos revisando todas las estrategias y las copié para realizar pruebas retrospectivas. Leí el He intentado mejorar la lógica de la estrategia, pero debo decir que todavía estoy demasiado verde. Después de leer todas las estrategias, todavía no he escrito una “máquina de imprimir dinero”.

Más tarde, me tranquilicé y lo pensé detenidamente. El círculo de criptomonedas actual ya no es el círculo de criptomonedas de 2017. No habrá historias míticas de 2000 yuanes a 20 millones de yuanes. Para un estudiante pobre como yo, ya es demasiado difícil. Hacer una fortuna especulando con criptomonedas era una fantasía, así que dejé de observar el precio de la moneda y de perseguir las subidas y bajadas, y también abandoné la idea poco realista de intentar escribir una “máquina de imprimir dinero”. Estrategia y comencé a publicar anuncios en el área de crowdsourcing en FMZ. Reciba pedidos y ayude a las personas a escribir estrategias y gane dinero ganado con esfuerzo de manera honesta.

Hasta ahora, he escrito muchas estrategias para otras personas. El proceso es, en realidad, bastante tortuoso. A menudo, la gente viene a mí con ideas o estrategias inmaduras que no pueden generar dinero en absoluto. Muchas personas tampoco pueden describir sus necesidades con claridad y, finalmente, hacen… Después de probar la estrategia una y otra vez, descubrí que no generaba dinero y tuve que discutir con otros, así que cambié mi anuncio por el siguiente, establecí las reglas y estándares para aceptar pedidos y me preocupé menos.

Originalmente, mi frecuencia de pedidos era cada vez menor, porque tenía muchas cosas escolares que hacer y rechacé a muchas personas. Pero en febrero, fcoin se escapó y se llevó la mayoría de mis activos (pero no tenía mucho dinero). dinero). Así que recientemente he tenido que empezar a aceptar pedidos de todo el mundo y ganar dinero.

Mi biblioteca de estrategias:

Hoy, mientras navegaba por fmz, encontré algo un poco extraño. Una cierta “empresa” que aceptaba pedidos incluso plagió mi anuncio de recepción de pedidos. El siguiente es su anuncio:

Entonces cambié mi “familiaridad” por “competencia”, y luego bajé el precio inicial (sentí un indicio de competencia feroz).

¿Por qué no dije que soy “competente” en FMZ? No sé si has oído el chiste, “Nadie puede ser competente en C++”, jajajaja, así que estoy acostumbrado a escribir “familiar” en Mi currículum y otras presentaciones de habilidades relacionadas.

4. Una idea de arbitraje

Recientemente he estudiado algunas estrategias de arbitraje, incluyendo cobertura spot, arbitraje de futuros-spot, arbitraje entre períodos, arbitraje triangular, etc. Estos dos días, vi una idea de arbitraje que nunca había visto antes (tal vez soy ignorante), así que Me gustaría compartirlo aquí.

Supongamos que existen varios pares comerciales en el mercado de divisas con los siguientes precios:

USDollar/BritishPound 0.5
BritishPound/FrenchFranc 10.0
FrenchFranc/USDollar 0.21

En este caso, ignorando la tarifa de transacción, si originalmente tengo 1 USD, primero puedo convertirlo a libras esterlinas, luego a francos franceses y luego a USD. En el proceso, 1 USD se convierte en 1x0,5x10,0x0,21= 1,05 USD, beneficio 0,05 USD.

El ejemplo anterior tiene una oportunidad de arbitraje, pero el siguiente no:

USDollar/BritishPound 0.5
USDollar/FrenchFranc 4.9
BritishPound/FrenchFranc 10.0
BritishPound/USDollar 1.99
FrenchFranc/BritishPound 0.09
FrenchFranc/USDollar 0.19

Entonces, en un mercado tan grande, ¿cómo determinamos si hay oportunidades de arbitraje?

Este problema se puede resumir en un problema de ruta más corta de grafo dirigido. Cada moneda se utiliza como vértice y el precio de cambio se utiliza como peso de la arista para formar un grafo dirigido. Luego, comenzando desde un vértice (como USD), Halla un camino circular que puede arbitrarse.

El ejemplo anterior proviene de un problema de OJ (http://poj.org/problem?id=2240), y la solución se puede encontrar aquí: http://hehejun.blogspot.com/2018/10/poj2240- arbitrage. formato html.

Hace poco me pregunté si podría idear una estrategia para aprovechar las oportunidades de arbitraje y llevar a cabo el arbitraje. Busqué en GitHub y descubrí que ya se había implementado: https://github.com/wardbradt/peregrine. Este proyecto resuelve este problema de arbitraje. problema. Se abstrae en el problema del camino más corto de un grafo dirigido con aristas de peso negativo. La solución al problema OJ mencionado anteriormente es diferente. El camino más corto de un grafo dirigido con aristas de peso negativo utiliza el algoritmo Bellman-Ford. Aquellos que Están interesados ​​pueden estudiarlo. Investigar.

También realicé una implementación simple en fmz, haciendo referencia a las ideas de solución del problema de OJ. Aún no está terminada y no se puede garantizar su exactitud. La publico aquí para estimular el debate:

var coins = {
    EMPTY: 0,
};
var price = {};

function get_coins() {
    for(var i = 0; i < exchanges.length; ++i) {
        var base = _C(exchanges[i].GetCurrency);
        var quote = _C(exchanges[i].GetQuoteCurrency);
        var len = Object.keys(coins).length;
        if(!coins.hasOwnProperty(quote)) {
            coins[quote] = len;
            len += 1;
        }
        if(!coins.hasOwnProperty(base)) {
            coins[base] = len;
            len += 1;
        }
    }
}

function get_graph() {
    var graph = [];
    for(var i = 0; i < exchanges.length; ++i) {
        var ticker = _C(exchanges[i].GetTicker);
        var base = _C(exchanges[i].GetCurrency);
        var quote = _C(exchanges[i].GetQuoteCurrency);
        graph.push({
            from: coins[base],
            to: coins[quote],
            weight: ticker.Buy
        });
        price[base + quote] = ticker.Buy;
        graph.push({
            from: coins[quote],
            to: coins[base],
            weight: 1 / ticker.Sell
        });
        price[quote + base] = 1 / ticker.Sell;
    }
    return graph;
}

function bfm(graph, initAmount, feeRate) {
    var dist = [];
    var pre = [];
    var i;
    var j;
    var fee = 0;
    for(i = 0; i < Object.keys(coins).length; ++i) {
        dist.push(0);
        pre.push(-1);
    }
    dist[1] = initAmount;
    for(i = 0; i < Object.keys(coins).length - 1; ++i) {
        for(j = 0; j < graph.length; ++j) {
            var from = graph[j].from;
            var to = graph[j].to;
            var rate = graph[j].weight;
            if(dist[from] * rate > dist[to]) {
                dist[to] = dist[from] * rate;
                pre[to] = from;
            }
        }
    }
    if(dist[1] <= initAmount) {
        return false;
    }
    var path = [];
    var top = pre[1];
    var coin_keys = Object.keys(coins);
    path.push({
        from: coin_keys[top],
        to: coin_keys[1],
        rate: price[coin_keys[top] + coin_keys[1]]
    });
    while(top != 1) {
        var temp = top;
        top = pre[top];
        path.push({
            from: coin_keys[top],
            to: coin_keys[temp],
            rate: price[coin_keys[top] + coin_keys[temp]],
        });
    }
    path.reverse();
    
    fee = path.length * feeRate * initAmount;
    if(dist[1] - initAmount <= fee || path.length == 0) {
        return false;
    }
    return path;
}

function onTick() {
    var graph = get_graph();
    var account = _C(exchanges[0].GetAccount);
    var balance = account.Balance;
    
    var path = bfm(graph, balance, 0);
    if(!path) {
        return;
    }
    Log(path);
    
    // buy & sell follow the path 
    ...
}

function main() {
    get_coins();
    
    while(1) {
        onTick();
    }
}

5. Resumen

En resumen, FMZ es una buena plataforma, fácil de usar y confiable, que permite ganar una fortuna sin hacer mucho ruido. Espero que FMZ mejore cada vez más. En cuanto a mí, seguiré estudiando para obtener una maestría después de graduarme (también en blockchain). campo), y luego continuar trabajando en fmz. Gana algo de dinero de bolsillo.

(Escrito en la tarde del 7 de marzo de 2020. Acabo de terminar de escribir una estrategia para alguien y vi que mi saldo de FMZ era insuficiente, así que vine aquí a estafar algunas regalías jajajaja)

WeChat: C790266922