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 Repo – https://github.com/Raudaschl/historical_crypto_trade_simulator
PD: No soy un programador, así que por favor, trátenme el código ?