Por qué construí un simulador de comercio de criptomonedas histórico (que también puedes usar)

Ingresé a la criptografía comercial alrededor de mayo de 2017 después de aproximadamente un año de invertir regularmente en una gama de sistemas peer2peer (P2P), productos básicos y acciones. Mi estrategia era simple: todos los meses invertiría el 20% de mi ingreso total (o tanto como pudiera) antes de impuestos en una serie de inversiones, luego reinvertir regularmente los dividendos generados del interés en más inversiones.

La primera parte de esta estrategia provino de un libro llamado El hombre más rico de Babilonia , y la segunda del pensamiento económico moderno general. La combinación de ambos resultó bastante efectiva y me permitió diversificar mi cartera y reducir el riesgo a lo largo del tiempo.

Con la creciente excitación en torno a las criptomonedas, pensé que lo probaría aprovechando la misma estrategia. Cada mes invertiría aproximadamente el 5% de mi total de 20% en una gama de criptomonedas, principalmente bitcoin, etherium, litecoin, dash y algunas altcoins. En general, esto funcionó bien (especialmente con el aumento masivo de valor en la segunda mitad de 2017). Sin embargo, recientemente no pude evitar pensar que mi estrategia simple no era tan eficiente como podría ser.

Siendo el comienzo de 2018, pensé que pondría mi teoría a prueba y probaría algunas estrategias comerciales diferentes en los datos históricos de criptomonedas. No pude encontrar nada que realmente satisficiera mis necesidades en línea, o no necesité una suscripción para comprar, así que construyo algo con Python.

El resultado del proyecto es git repo, puede probarlo usted mismo (python 3) – https://github.com/Raudaschl/historical_crypto_trade_simulator

Pasos

Requiere pandas y pitón 3

Instalar pandas

 pip instala pandas 

Paso 1

Descargue datos históricos python download.py Para descargar los precios de diferentes criptomonedas de los últimos 300 días como un archivo csv cortesía de la API de cryptocompare.com. Puede editar los tipos de monedas en el archivo download.py.

Paso 2

Ejecute el script python trader.py Esto generará los siguientes resultados:

Valor original : el valor actual de sus inversiones, suponiendo que no se haya aplicado ninguna estrategia comercial, además de conservar sus inversiones

Dividendos originales: los dividendos totales basados ??en sus inversiones iniciales

Dividendos finales: dividendos totales basados ??en inversiones originales y nuevas

Valor de inversión original : el valor total de sus inversiones originales después de aplicar la estrategia

Nuevo valor de inversión: el valor total de las nuevas inversiones realizadas en función de su estrategia

Valor total final : el valor total de sus inversiones y los dividendos tomados

Paso 3 – Personalizar

Establecer órdenes

La matriz bitCoinOrders se completa con diferentes órdenes de cyptocoin, por ejemplo:

 bitCoinOrders.append ({"coin": "btc", "buyPrice": 2690, "coins": 0.0782, "date": "2017-05-27"}) 

moneda : establecer el símbolo de moneda (debe ser una de las monedas descargadas anteriormente) precio de compra: precio de compra original ($) monedas: cantidad de monedas compradas fecha: fecha de compra

Calcular función

Función

La función de cálculo toma una serie de órdenes y examina su valor desde el punto de compra. Durante esta iteración he establecido una estrategia de negociación que tiene como objetivo vender el 40% de las monedas de un solo pedido cuando ese pedido ha aumentado en valor en un 300%. Ese 40% se reinvierte comprando otras criptomonedas que se encuentran en la matriz dfAdditionalOrders . Si el valor de la venta del 40% es inferior a $ 40, entonces venderé todas las monedas directamente y reclamaré esa cantidad como dividendos.

Variables

profitFactor – Establezca el valor% donde obtendrá ganancias. El ajuste 3, por ejemplo, activará automáticamente una venta al reinversión del 300%

Porcentaje : el porcentaje del valor total de la orden cuando se alcanza el factor de ganancia para reinvertir.

minimumSellValue : venda todas las monedas de este orden específico cuando el valor llegue a profitFactor y el valor de la reinversión sea menor que este valor.

Función BuyWeightsBuild

Función

Esta función establece las monedas para comprar de los beneficios de cualquier venta (ver arriba). Excluyen la moneda que se vendió originalmente, así que, por ejemplo, si Bitcoin generaba ganancias y se vendía, no compraría más bitcoins con las ganancias.

Variables

 buyWeights.append ({"coin": "btc", "peso": 0.25}) 

moneda : el símbolo de la moneda que desea comprar (debe ser una de las monedas descargadas)

peso : este es un indicador de la cantidad que desea comprar de una moneda en comparación con otra. El valor total de todos los pesos debería sumar hasta 1.

Conclusiones

Entonces ahí lo tienes. En mis experimentos, descubrí que solo podía aumentar mi valor global en menos del 1% durante el último año, por lo que quizás el modelo más simple siga siendo el mejor para mí. Tal vez tu tendrás mejor suerte. ? ?

Git Repohttps://github.com/Raudaschl/historical_crypto_trade_simulator

PD: No soy un programador, así que por favor, trátenme el código ?