Guía para Verificar el Riesgo y el Margen de Operaciones Pasadas con Datos de FxBlue

Hola,

Al colocar una operación, normalmente calculas los Lotes a Operar basándote en el riesgo deseado. Pero cuando estás analizando operaciones de otra persona —o revisando los resultados de un bot de trading algorítmico—, a menudo querrás conocer el riesgo y margen real detrás de cada operación.

Para verificar el margen, puedes usar la fórmula compartida en la publicación anterior. Para el riesgo, haremos un pequeño ajuste.


Verificar el Riesgo

Usaremos una versión modificada de la fórmula de riesgo. En lugar de resolver para Lotes a Operar, resolveremos para Riesgo ($) para verificar si el tamaño de lote ejecutado se alinea con el riesgo previsto.

Fórmula:

$$
Riesgo\ ($) = \frac{ | (Precio\ de\ Entrada - Precio\ de\ Freno) | \times Tamaño\ de\ Lote \times Lots\ a\ Operar } {Tasa\ de\ Conversión}
$$

Ejemplo

Volvamos al Ejemplo #3 la publicación anterior: una operación GBPJPY donde tuvimos que truncar el valor de Lotess a Operar a dos decimales. Usando los mismos datos, podemos calcular el riesgo real.

  • Lotes a Operar: 0.68
  • Riesgo Deseado: $500
  • Precio de Entrada: 198.758
  • Precio de Freno: 199.848
  • Tasa de Conversión: 150
  • Tamaño de Lote: 100,000 GBP
  • Apalancamiento: 100

Paso 1. Sustituir los valores en la fórmula

$$
Riesgo\ ($) = \frac{ |(198.758 - 199.848)| \times 100,000 \times 0.68 } {150}
$$

Paso 2. Simplificar la diferencia absoluta

$$
Riesgo\ ($) = \frac{ 1.09 \times 100,000 \times 0.68 } {150}
$$

Paso 3. Multiplicar

$$
Riesgo\ ($) = \frac{ 74,120 } {150}
$$

Paso 4. Dividir — Resultado final

$$
Riesgo\ ($) = 494.13
$$

El riesgo real de esta operación fue $494.13, ligeramente por debajo del $500 previsto. Esta diferencia es esperada, ya que truncamos el tamaño de lote a dos decimales.


Análisis en Hoja de Cálculo

Ahora que las matemáticas están claras, veamos cómo automatizar este proceso analizando los datos de FxBlue en una hoja de cálculo. Para este ejemplo, usaremos Google Sheets, aunque también puedes trabajar en Excel si lo prefieres.

Paso 1. Descargar los Archivos Necesarios

  1. Descarga la hoja de cálculo preconstruida:

  2. Descarga el historial de la cuenta desde FxBlue:

    • Ve a la página de FxBlue de la cuenta que quieres analizar. Por ejemplo, el Portafolio Agresivo: ibitebyt3s-10k-50r o cualquiera de los portafolios en mi página de Track Record.
    • En la página, haz clic en Excel para descargar el archivo CSV. Esto te dará un archivo como orders-ibitebyt3s-10k-50r.csv.

Paso 2. Cargar la Hoja de Cálculo

  1. Ve a Google Sheets.

  2. Crea una nueva hoja de cálculo en blanco.

  3. Selecciona Archivo > Abrir > Subir > Examinar, luego sube el archivo Fx Blue - Data Analyzer - Español.xlsx.

  1. Una vez cargada, estarás listo para importar los datos.

Paso 3. Importar los Datos CSV

  1. Cambia a la pestaña datos_CSV que está hasta abajo de la ventana.
  1. Ve a Archivo > Importar > Subir > Examinar, luego selecciona el archivo .csv descargado previamente: orders-ibitebyt3s-10k-50r.csv.
  1. Configura Ubicación de importación en Reemplazar hoja de cálculo actual.
  2. Configura Tipo de separador en Detectar automáticamente.
  3. Haz clic en Importar datos.

Paso 4. Configurar Información de Cuenta y Símbolos

  1. Cambia a la pestaña Informacion_de_Cuenta_y_Mercado.

  2. Ingresa el Apalancamiento de la cuenta en la celda superior izquierda.

  3. Actualiza la información de símbolos si es necesario:

    • Tabla 1: Ingresa cada símbolo (por ejemplo, XAUUSD) y su tamaño de Lote. (En MetaTrader, puedes encontrar esta información aquí).
    • Tabla 2: Ingresa las tasas de conversión si tus instrumentos están cotizados en monedas distintas al USD.
    • NOTA: La hoja de cálculo asume tasas de conversión fijas, aunque las tasas reales fluctúan.

Paso 5. Análisis de Datos

Tabla_de_Datos

Finalmente, cambia a la pestaña Tabla_de_Datos para ajustar las fórmulas en las columnas Saldo de la Cuenta y Ganancia Acumulada para cubrir todo el conjunto de datos.

Esta hoja organiza el historial de la cuenta en secciones claras:

  • Identificadores:

    • Tipo — Tipo de registro (por ejemplo, depósito, retiro u operación cerrada).
    • Ticket — ID único asignado a cada operación.
    • Símbolo — Instrumento operado (por ejemplo, XAUUSD, EURUSD).
    • Dirección — Si la operación fue Compra o Venta.
    • Resultado - Indica si la operación fue Ganadora o Perdedora.
  • Riesgo y Margen:

    • Lots — Los Lotes a Operar de la operación, o mejor dicho, los lotes que fueron operados.
    • Riesgo — La cantidad de dinero aceptada como pérdida según el precio de freno.
    • Margen — El capital requerido para abrir y mantener la operación.
  • Ganancia y Costos:

    • Ganancia — Ganancia o pérdida bruta de la operación.
    • Swap — Interés o comisión por mantener una operación abierta durante la noche.
    • Comisión — Tarifa del broker por ejecutar la operación.
    • Ganancia Neta — Ganancia después de restar swap y comisiones.
    • Saldo de la Cuenta — Dinero total en la cuenta tras cerrar la operación.
    • Ganancia Acumulada — Total acumulado de ganancias y pérdidas de todas las operaciones.
  • Detalles de la Operación:

    • Precio de Apertura — Precio de entrada al abrir la operación.
    • Precio de Cierre — Precio de salida al cerrar la operación.
    • Precio Objetivo — Precio objetivo para cerrar automáticamente con ganancia.
    • Precio de Freno — Precio establecido para cerrar automáticamente para limitar pérdidas.
    • Fecha de Apertura — Fecha y hora exacta de apertura.
    • Fecha de Cierre — Fecha y hora exacta de cierre.
    • Pips — Unidades de precio ganadas o perdidas en la operación.
    • Duración en Horas — Tiempo que la operación permaneció abierta, medido en horas.

Columnas como Riesgo, Margen, Saldo de la Cuenta y Ganancia Acumulada se calculan automáticamente. Depósitos y retiros se muestran pero en gris. Las operaciones abiertas se ignoran.

NOTA: Todas las marcas de tiempo están en la hora del servidor del broker (a menudo UTC+2 o UTC+3).

Análisis

La pestaña Analysis resume el desempeño de la cuenta con estadísticas clave:

  • Número Total de Operaciones — Total de operaciones ejecutadas.
  • Número Total de Ganadoras — Número de operaciones con ganancia.
  • Número Total de Perdedoras — Número de operaciones con pérdida.
  • Porcentaje de Éxito — Porcentaje de operaciones con ganancia.
  • Saldo de la Cuenta — Saldo actual después de todas las operaciones.
  • Ganancia Acumulada — Ganancia/pérdida neta de todas las operaciones.

También incluye gráficos de Riesgo, Saldo de la Cuenta y tendencias de Ganancia Acumulada.


Reflexiones Finales

Al combinar los datos crudos de FxBlue con una hoja de cálculo estructurada, puedes verificar de manera independiente el riesgo y margen real de cada operación, sin depender únicamente de los resultados reportados. Este enfoque es especialmente útil al analizar estrategias de terceros o monitorear sistemas automatizados, ya que muestra qué tan ajustada estuvo la ejecución a las reglas de gestión de dinero previstas.

Cómo Calcular el Riesgo y el Margen

Hola,

En este post te mostraré cómo calcular el Riesgo y el Margen, dos de los conceptos más importantes a la hora de gestionar operaciones en mercados financieros. El Riesgo te dice cuánto dinero podrías perder en una operación, mientras que el Margen indica cuánto capital requiere tu bróker para abrir dicha operación. También explicaré cómo el Apalancamiento influye en el Margen y por qué es crucial entender sus efectos.

Si quieres ir más allá, revisa mi siguiente publicación donde explico cómo monitorear el Riesgo usando los datos publicados en una página de track record de FxBlue.

Definiciones Básicas

  1. Lotes (Contratos): La unidad estándar para medir cuánto de un activo estás operando. Los brókers no preguntan cuánto dinero deseas arriesgar; en su lugar, preguntan cuántos lotes quieres operar. Para conocer cuantos lotes debes operar, debes definir tu Riesgo y el Margen requerido para determinar el número adecuado de lotes a operar. El lote mínimo operable en CFDs suele ser 0.01, aunque puede variar según el bróker y el activo.
  2. Lotes a Operar (Tamaño de Posición): El número de contratos usados en una operación.
  3. Tamaño de Lote (Contract Size): La cantidad del activo subyacente representado por 1 lote. Este valor lo define el bróker. Ejemplos:
    • 1 lote de XAUUSD: 100 onzas de Oro
    • 1 lote de USDMXN: 100,000 USD
    • 1 lote de GBPJPY: 100,000 GBP
  4. Precio de Entrada: El precio al que abres una operación.
  5. Precio de Freno: El precio en el que la operación se cerrará automáticamente para limitar pérdidas.
  6. Riesgo: La cantidad de dinero que estás dispuesto a perder si la operación llega al Precio de Freno. Se determina antes de entrar en la operación y es esencial para controlar las pérdidas.
  7. Margen: El dinero que debes tener en tu cuenta para abrir una operación.
  8. Apalancamiento: Una herramienta que te permite controlar una posición mayor con una cantidad menor de capital. Aunque amplifica las ganancias potenciales, también multiplica las pérdidas posibles.
  9. Tipo de Cambio: La tasa usada para convertir el valor de una operación o su riesgo desde la divisa cotizada hacia la divisa de tu cuenta. Esto es necesario cuando la divisa de tu cuenta es distinta a la divisa cotizada en la operación. En la práctica, este número fluctúa en tiempo real, pero para simplificar, lo asumiremos fijo en los ejemplos de este .

Riesgo y Margen

Al abrir una operación, es recomendable calcular primero el Riesgo y luego verificar si cuentas con el Margen suficiente para asumirla. De lo contrario, corres el riesgo de operar bajo la influencia del miedo o la avaricia.

Para que quede claro, primero explicaré los conceptos y luego te guiaré con algunos ejemplos.

Riesgo

Con esta fórmula determinamos cuántos lotes deben usarse en una operación para que coincidan con nuestro riesgo monetario deseado. En otras palabras, calculamos los Lotes a Operar que se alinean con el Riesgo elegido:

$$
Lotes\ a\ Operar=\ \frac{Riesgo\ ($)\ \times\ Tipo\ de\ Cambio}{|\ (Precio\ de\ Entrada\ -\ Precio\ de\ Freno)\ |\ \times\ Tamaño\ de\ Lote }
$$

Margen

Una vez que calculamos los Lotes a Operar, podemos comprobar si nuestra cuenta tiene fondos suficientes para cubrir el Margen requerido:

$$
Margen\ ($)\ =\ \frac{Lotes\ a\ Operar\ \times\ Tamaño\ de\ Lote\ \times\ Precio\ de\ Entrada}{Apalancamiento\ \times\ Tipo\ de\ Cambio}
$$


Ejemplo 1: XAUUSD (Oro)

Supongamos que queremos comprar Oro mientras su precio actual es $1,000 y colocamos un freno en $900. Queremos arriesgar $500 de nuestra cuenta. Nuestra cuenta utiliza apalancamiento 1:1.

  • Precio de Entrada: $1,000
  • Precio de Freno: $900
  • Riesgo: $500
  • Tasa de Conversión: $1
  • Tamaño de Lote: 100 onzas
  • Apalancamiento: 1

Riesgo

Paso 1: Sustituir los valores en la fórmula de Riesgo

$$
Lotes\ a\ Operar=\ \frac{$500\ \times\ $1} {|\ ($1,000 -\ $900)\ |\ \times\ 100 }
$$

Paso 2: Resolver el paréntesis

$$
Lotes\ a\ Operar=\ \frac{$500} {$100 \times 100 }
$$

Paso 3: Resolver la división

$$
Lotes\ a\ Operar=\ \frac{$500} {$10,000 }
$$

Paso 4: Resultado final

$$
Lotes\ a\ Operar= 0.05
$$

Esto significa que necesitamos abrir 0.05 lotes (5 onzas de Oro) para arriesgar $500 con un freno en $900.


Margen

  • Lotes a Operar: 0.05

Paso 1: Sustituir los valores en la fórmula de Margen

$$
Margen\ ($)\ =\ \frac{0.05 \times 100 \times $1,000} {1 \times $1}
$$

Paso 2: Resolver las multiplicaciones

$$
Margen\ ($)\ =\ \frac{$5,000}{$1}
$$

Paso 3: División - Resultado final

$$
Margen\ ($)\ =\ $5,000
$$

Con apalancamiento 1:1, necesitas el total de $5,000 para abrir la operación. Con 1:100, el margen sería solo $50.


Ejemplo 2: USDMXN

Supongamos que queremos comprar USDMXN mientras su precio actual es 18.50 y colocamos un freno en 18.00. Queremos arriesgar $500 de nuestra cuenta. La cuenta está en USD, por lo que debemos incluir la tasa de conversión. Apalancamiento 1:100.

  • Precio de Entrada: 18.50
  • Precio de Freno: 18.00
  • Riesgo: $500
  • Tasa de Conversión: 18.50
  • Tamaño de Lote: 100,000 USD
  • Apalancamiento: 100

Riesgo

Paso 1: Sustituir en la fórmula de Riesgo

$$
Lotes\ a\ Operar\ = \frac{500 \times 18.50}{|(18.50 - 18.00)| \times 100,000}
$$

Paso 2: Resolver el paréntesis

$$
Lotes\ a\ Operar\ = \frac{500 \times 18.50}{0.50 \times 100,000}
$$

Paso 3: Multiplicar y simplificar

$$
Lotes\ a\ Operar\ = \frac{9,250}{50,000}
$$

Paso 4: Resultado de la fórmula

$$
Lotes\ a\ Operar\ = 0.185
$$

Paso 5: Truncar a dos decimales

$$
Lotes\ a\ Operar\ = 0.18
$$

Necesitamos abrir 0.18 lotes (equivalente a controlar $18,000 MXN) para arriesgar ligeramente menos de $500 con un freno en 18.00.


Margen

  • Lotes a Operar: 0.18

Paso 1: Sustituir en la fórmula de Margen

$$
Margen\ ($)\ =\ \frac{0.18 \times 100,000 \times 18.50}{100 \times 18.50}
$$

Paso 2: Resolver las multiplicaciones

$$
Margen\ ($)\ =\ \frac{333,000}{1,850}
$$

Paso 3: División - Resultado final

$$
Margen\ ($)\ =\ 180
$$

El margen requerido para esta operación es $180.


Ejemplo 3: GBPJPY

Supongamos que queremos vender GBPJPY mientras su precio actual es 198.758 y colocamos un freno en 199.848. Queremos arriesgar $500 de nuestra cuenta. La cuenta está en USD, por lo que incluimos la tasa de conversión (JPY → USD = 150). Apalancamiento 1:100.

  • Precio de Entrada: 198.758
  • Precio de Freno: 199.848
  • Riesgo: $500
  • Tasa de Conversión: 150
  • Tamaño de Lote: 100,000 GBP
  • Apalancamiento: 100

Riesgo

Paso 1: Sustituir en la fórmula de Riesgo

$$
Lotes\ a\ Operar\ = \frac{500 \times 150}{|(198.758 - 199.848)| \times 100,000}
$$

Paso 2: Resolver el paréntesis

$$
Lotes\ a\ Operar\ = \frac{500 \times 150}{1.09 \times 100,000}
$$

Paso 3: Multiplicar y simplificar

$$
Lotes\ a\ Operar\ = \frac{75,000}{109,000}
$$

Paso 4: Resultado de la fórmula

$$
Lotes\ a\ Operar\ \approx 0.688
$$

Paso 5: Truncar a dos decimales

$$
Lotes\ a\ Operar\ = 0.68
$$

Necesitamos abrir 0.68 lotes (controlando 68,000 GBP en JPY) para arriesgar ligeramente menos de $500 con un freno en 199.848.


Margen

  • Lotes a Operar: 0.68

Paso 1: Sustituir en la fórmula de Margen

$$
Margen\ ($) = \frac{0.68 \times 100,000 \times 198.758}{100 \times 150}
$$

Paso 2: Resolver las multiplicaciones

$$
Margen\ ($) = \frac{13,509,144}{15,000}
$$

Paso 3: División - Resultado final

$$
Margen\ ($) \approx 901
$$

El margen requerido para esta operación es $901.


Reflexiones Finales & Puntos Clave

  1. El Riesgo va primero: Calcula siempre cuánto dinero estás dispuesto a perder antes de pensar en las ganancias. El tamaño de la posición a través de la fórmula de riesgo te ayuda a no quemar tu cuenta.
  2. Margen ≠ Riesgo: El margen es solo el boleto de entrada para abrir una operación. Tu verdadero riesgo lo define el precio de freno y el tamaño de posición que elijas.
  3. El apalancamiento es un arma de doble filo: Aunque reduce el margen requerido, NO reduce las pérdidas potenciales. Úsalo con prudencia.
  4. Los tipos de cambio importan: Cuando operas activos cotizados en una divisa diferente a la de tu cuenta, el tipo de cambio afecta tanto al riesgo como al margen.
  5. El Freno es crucial: Cuanto más alejado esté tu freno, menor debe ser el tamaño de tu posición para mantener el mismo riesgo.
  6. Verifica la disponibilidad de margen: Aunque el riesgo y el tamaño de la posición sean correctos, si no tienes suficiente margen la operación no se ejecutará.
  7. Cuidado con los margin calls: Si tu balance cae por debajo del requisito de margen, el bróker puede cerrar automáticamente tus operaciones.
  8. El trading no es dinero rápido: Incluso con cálculos cuidadosos, las ganancias son graduales y requieren disciplina. El objetivo es sobrevivir lo suficiente para que tu ventaja se materialice.

Si quieres continuar, en el siguiente publicación muestro cómo monitorear el Riesgo directamente desde un track record de FxBlue.

Prettify Burp "Copy as curl" commands with sed and vim

Burp Suite is my go to tool whenever I want to fiddle around with web requests. It’s very useful for simple requests but sometimes things might get a bit more complicated when I need to interact with the data received or forward it to the next request. Maybe I need to calculate the hash for a challange in a CTF, or it could also be that I want more control of the concurrency between requests or for some reason I need to do things in a programmatic way. I’m aware of Burp Macros but I’m not a big fan of them.

I’ve seen that a lot of people like to script in python but my preferred language is bash and its popular command to make web requests is curl. Fortunately translating raw HTTP requests to curl is a feature found by right clicking said request either in Chrome, Firefox or Burp Suite. Unfortunately, the default output of Firefox and Burp Suite isn’t in the most “workable format”.

My ideal “workable” format is to have headers separated by newlines and surrounded by double quotes instead of single quotes. The advantage of using double quotes is that variables can be present within the string. Let’s compare some curl command generators.

Chrome has a nice output to work with along a convenient --compressed flag:

1
2
3
4
5
6
# Chrome
curl 'https://public-firing-range.appspot.com/' \
-H 'authority: public-firing-range.appspot.com' \
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
-H 'Other: headers'
--compressed

Firefox stays a step behind by joining all headers into a single line:

1
curl 'https://public-firing-range.appspot.com/' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H 'Accept-Language: en,en-US;q=0.8,es-MX;  q=0.5,es;q=0.3' -H 'Other: headers'

Lastly, Burp Suite on top of joining all headers in a single line it also surrounds them between single quotes with a prefixed dollar sign $'':

1
2
3
curl -i -s -k -X $'GET' \
-H $'Host: public-firing-range.appspot.com' -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H $'Other: headers' \
$'https://public-firing-range.appspot.com/'

As you can see, translating some of these generated commands into something usable in a script by hand would be very time consuming. One could just write what is needed by hand without using any generated curl command but I ended up liking a lot more to start with requests that were already built by the browser.

Setup

How does it works?

Given the situation with the generated curl commands and the fact that I will be using such features on a daily basis I found a way to satisfy my needs. The full solution requires vim but if you want to know how the sed part works stick to this chapter. It’s also worth to say that this solution was originally created to fix only the burp generated command, then I found out that it also works in the Firefox curl command as a charm but not with the chrome curl command.

Each line in this list corresponds to a line in the sed command respectively:

  1. Separate each header with a new line and add padding.
  2. Add a backslash to indicate line continuation (necessary for the bash syntax parser).
  3. Replace the single quotes and dollar sign surrounding the strings with double quotes.
  4. Delete empty lines (can be improved).
  5. Add a space between the -H option and the double quote.
1
2
3
4
5
6
7
8
9
10
#! /bin/bash
# burp_curl.sh

sed \
-e 's/\-H /\n \-H/g' \
-e 's/ \n/ \\\n/g' \
-e 's/\(\$'\''\|'\''\)/"/g' \
-e 's/ \\\n//g' \
-e 's/ -H"/ -H "/g'

Save this as an executable file reachable by the $PATH variable. I saved it as burp_curl.sh

curl + sed + vim

To have vim integration, add these lines to your .vimrc file.

1
2
3
" prettify curl commands
nmap <Leader>bc :%! burp_curl.sh <CR>
vmap <Leader>bc :%! burp_curl.sh <CR>

Now every time I hit Spacebar + b + c the curl command I just pasted to my buffer will be prettified. Note that this also works only in the currently selected lines (visual mode) so you’ll not have to worry about it messing up with other parts of your script.

If you did things right you should be able to prettify any curl command from burp or firefox as in the following gifs:

Visual Mode:

Normal Mode:

Note

It’s worth saying that when dealing with multipart/form-data content type you’ll definitely want to use the -F option instead of using the generated commands or curl might not catch the response. I

Finally, if the output of the request is readable in burp but you see gibberish with the curl command or no output at all, delete the Accept-Encoding: gzip, deflate header.