israelcastilloh / traders-behavior-metrics

Tools for analyzing the performance of trading activity, the point of view of both the capital and the trader of an account.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Descripción

Este laboratorio tiene como propósito particular el elaborar herramientas para el análisis del desempeño de la actividad de trading, desde el punto de vista de la cuenta y desde el punto de vista de la persona que opera la cuenta (trader). Por lo tanto, este laboratorio estará dividido en 4 partes, cada una, servirá para cumplir con la estructura básica de proyectos para sistemas de trading y las otras 3 partes son relacionadas cada una a los propósitos del módulo completo.

Instalar dependencias

Install all the dependencies stated in the requirements.txt file, just run the following command in terminal:

pip install -r requirements.txt

Or you can manually install one by one using the name and version in the file.

Funcionalidades

import functions as fn

data = fn.f_leer_archivos(str(input("Nombre de archivo en 0.2 Dependencias (Ejemplo: historicos_ejemplo.csv) :")))

Esta función sirve para cargar los archivos donde vienen los históricos de las operaciones de cuenta de inversión.

fn.f_pip_size('eurusd')  # ejemplo de pip size

Esta función sirve para calcular el tamaño de pip. El parámetro de entrada debe ser un instrumento de OANDA, tal como viene en la tabla de históricos.

fn.f_columnas_tiempo(data) # segundos con cada posición abierta

Esta función sirve para calcular el tiempo en segundos que duró cada posición, desde que abrio, hasta que cerró.

col_pip = fn.f_columnas_pip(data) # valores acumulados

Esta función arroja un Dataframe con columnas que cuantifican la cantida de pips por posición, así como los valores acumulados a través del tiempo.

fn.f_estadisticas_ba(data)  # diccionario con estadisticas y ranking

Esta función arroja un diccionario que contiene:

df_1_tabla:

  1. Operaciones totales
  2. Operaciones ganadoras
  3. Operaciones ganadoras de compra
  4. Operaciones perdedoras de venta
  5. Operaciones perdedoras
  6. Operaciones perdedoras de compra
  7. Operaciones perdedoras de venta
  8. Mediana de profit de operaciones
  9. Mediana de pips de operaciones
  10. Ganadoras Totales/Operaciones Totales
  11. Ganadoras Totales/Perdedoras Totales
  12. Ganadoras Compras/Operaciones Totales
  13. Ganadoras Ventas/ Operaciones Totales

df_1_ranking: muesta un DataFrame con el ratio de efectividad de las operaciones realizadas con cada instrumento operado

fn.f_profit_acm_d(data)
fn.f_evolucion_capital(data)  # evolución diaria

Ingresa un dataframe de histórico de operaciones. Regresa un histórico con las columnas: * 'timestamp' fechas dia a dia durante el priodo que hiciste trading * 'profit_d' profit por dia por cada dia * 'profit_acm_d' profit acumulado diario de tu cuenta de capital.

fn.f_estadisticas_mad(data)

Con el dataframe de evolución de capital, regresa un dataframe con:

  • Sharpe Ratio: rendimiento promedio excedente sobre la tasa libre de riesgo

  • Draw Down: Minusvalia máxima que se registró en la evolución de los valores

  • Draw Up: Plusvalía máxima que se registró en la evolución de los valores

be_de, stat, sens1, av,  = fn.f_be_de(col_pip)

Regresa la siguiente información:

f_be_de: función para recibir información del Disposition Effect en el histórico de operaciones.

  1. be_de, ocurrencias: cantidad de ocurrencias del disposition effect
  2. stat, status_quo: % de ocurrencias donde profit_perdedora/profit_acm < profit_ganadora/profit_acm.
  3. av, aversion_perdida: % de ocurrencias donde profit_perdedora/profit_ganadora > 2.0
  4. sens1, sensibilidad_decreciente:
    • Si el profit_acm de la cuenta aumentó.
    • Si el profit_ganadora (ult ancla) > profit_ganadora (1era ancla) & profit_perdedora (ult ancla) > profit_perdedora (1era ancla).
    • Si el ratio profit_perdedora/profit_ganadora ult ancla es > 2.
    • Si y sólo si por lo menos dos de las anteriores se cumplen, entonces, hay sensibilidad decreciente.
pie = vs.pie_ranking(dict_estadisticas["df_2_ranking"].index, dict_estadisticas["df_2_ranking"]["rank"])
graph = vs.graph_draw(data)
bar = vs.bar_chart(stat, av, sens1)

Visualizaciones de la información previa.

Autores

  • Diana Ramírez Hinojosa
  • Israel Castillo-Herrera
  • Ana Cristina Cruz

License

GNU General Public License v3.0

Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.

Contacto

For more information in reggards of this repo, please contact castillo.israelh@gmail.com, c.cristycruz@gmail.com, ramirezdiana721@gmail.com

About

Tools for analyzing the performance of trading activity, the point of view of both the capital and the trader of an account.

License:GNU General Public License v3.0


Languages

Language:Jupyter Notebook 99.2%Language:Python 0.8%