0% encontró este documento útil (0 votos)
18 vistas24 páginas

Comprensión de Secuencias en Python

Las secuencias de comprensión en Python permiten generar listas, conjuntos, diccionarios y expresiones generadoras de manera concisa y eficiente. Se presentan ejemplos de List Comprehension, Set Comprehension, Dict Comprehension y Generator Expressions, destacando su utilidad en tareas de programación y análisis de datos, incluyendo aplicaciones en Machine Learning y Trading. El documento también incluye ejemplos prácticos de cómo usar estas técnicas con datos simulados y reales de Binance.

Cargado por

dantberned
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas24 páginas

Comprensión de Secuencias en Python

Las secuencias de comprensión en Python permiten generar listas, conjuntos, diccionarios y expresiones generadoras de manera concisa y eficiente. Se presentan ejemplos de List Comprehension, Set Comprehension, Dict Comprehension y Generator Expressions, destacando su utilidad en tareas de programación y análisis de datos, incluyendo aplicaciones en Machine Learning y Trading. El documento también incluye ejemplos prácticos de cómo usar estas técnicas con datos simulados y reales de Binance.

Cargado por

dantberned
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Secuencia de comprencion en python

Las secuencias de comprensión en Python son formas concisas y eficientes de generar


listas, conjuntos o diccionarios usando una sola línea de código.

📌 Tipos de Comprensión en Python

11️⃣List Comprehension (Comprensión de listas)


2️⃣Set Comprehension (Comprensión de conjuntos)
3️⃣Dict Comprehension (Comprensión de diccionarios)
4️⃣Generator Expression (Expresión generadora)

1 List Comprehension (Listas)

Es la más usada y permite crear listas de forma compacta.

# Crear una lista con los cuadrados de los números del 1 al 5


cuadrados = [x**2 for x in range(1, 6)]
print(cuadrados) # Salida: [1, 4, 9, 16, 25]

🔹 Equivalente a:

cuadrados = []
for x in range(1, 6):
[Link](x**2)

📌 Con condición (if)

pares = [x for x in range(10) if x % 2 == 0]


print(pares) # Salida: [0, 2, 4, 6, 8]

📌 Con if-else

valores = ["par" if x % 2 == 0 else "impar" for x in range(5)]


print(valores) # Salida: ['par', 'impar', 'par', 'impar', 'par']

🚀 Aquí tienes bastantes ejemplos de List Comprehension en Python, desde lo básico


hasta lo avanzado.
📌 1 Concepto Básico

La comprensión de listas permite crear listas en una sola línea de código de manera
eficiente.

Ejemplo 1: Crear una lista de números elevados al cuadrado


numeros = [1, 2, 3, 4, 5]
cuadrados = [n**2 for n in numeros]
print(cuadrados) # 🔹 [1, 4, 9, 16, 25]

✅ Equivalente a:

cuadrados = []
for n in numeros:
[Link](n**2)

📌 2️⃣ Filtrar Elementos con Condiciones

Puedes agregar condiciones dentro de la lista.

Ejemplo 2: Obtener solo los números pares


python
CopiarEditar
pares = [n for n in range(10) if n % 2 == 0]
print(pares) # 🔹 [0, 2, 4, 6, 8]

Ejemplo 3: Convertir una lista de strings a mayúsculas, solo si tienen más de


3 letras
python
CopiarEditar
palabras = ["sol", "luna", "estrella", "mar"]
mayusculas = [[Link]() for p in palabras if len(p) > 3]
print(mayusculas) # 🔹 ['LUNA', 'ESTRELLA']

📌 3️⃣ Usar Condiciones If-Else Dentro

Si necesitas transformar valores según una condición, usa if-else.

Ejemplo 4: Reemplazar números negativos por 'negativo'


python
CopiarEditar
numeros = [10, -5, 3, -2, 8]
resultado = [n if n >= 0 else "negativo" for n in numeros]
print(resultado) # 🔹 [10, 'negativo', 3, 'negativo', 8]

📌 4️⃣ Trabajar con Strings

Puedes aplicar operaciones en strings dentro de una List Comprehension.

Ejemplo 5: Obtener la primera letra de cada palabra


python
CopiarEditar
frutas = ["manzana", "pera", "uva", "kiwi"]
iniciales = [f[0] for f in frutas]
print(iniciales) # 🔹 ['m', 'p', 'u', 'k']

Ejemplo 6: Contar vocales en una palabra


python
CopiarEditar
palabra = "computadora"
vocales = [letra for letra in palabra if letra in "aeiou"]
print(len(vocales)) # 🔹 5 (las vocales en "computadora")

📌 5️⃣ Anidar Bucles en List Comprehension

Puedes combinar dos bucles dentro de una misma expresión.

Ejemplo 7: Multiplicación de matrices (producto cartesiano)


python
CopiarEditar
matriz = [(x, y) for x in range(3) for y in range(3)]
print(matriz)
# 🔹 [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2,
2)]

📌 6️⃣ Uso con Diccionarios (Dict Comprehension)

También funciona con diccionarios (Dict Comprehension).

Ejemplo 8: Crear un diccionario con el cuadrado de números


python
CopiarEditar
numeros = [1, 2, 3, 4, 5]
diccionario = {n: n**2 for n in numeros}
print(diccionario)
# 🔹 {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Ejemplo 9: Convertir una lista de nombres en un diccionario con su longitud


python
CopiarEditar
nombres = ["Carlos", "Ana", "Miguel", "Lucía"]
longitudes = {nombre: len(nombre) for nombre in nombres}
print(longitudes)
# 🔹 {'Carlos': 6, 'Ana': 3, 'Miguel': 6, 'Lucía': 5}

📌 7️⃣ Uso con Conjuntos (Set Comprehension)

Si necesitas valores únicos, usa Set Comprehension.

Ejemplo 10: Obtener los números únicos elevados al cubo


python
CopiarEditar
numeros = [2, 3, 2, 4, 3, 5]
cubos_unicos = {n**3 for n in numeros}
print(cubos_unicos)
# 🔹 {8, 27, 64, 125}

📌 8️⃣ Casos Aplicados a Machine Learning y Data Science

En ciencia de datos, List Comprehension optimiza el procesamiento de listas.

Ejemplo 11: Normalizar una lista de precios (Min-Max Scaling)


python
CopiarEditar
precios = [100, 200, 300, 400, 500]
maximo = max(precios)
minimo = min(precios)

normalizados = [(p - minimo) / (maximo - minimo) for p in precios]


print(normalizados)
# 🔹 [0.0, 0.25, 0.5, 0.75, 1.0]

Ejemplo 12: Extraer palabras clave de un texto


python
CopiarEditar
texto = "El Bitcoin y Ethereum son criptomonedas populares"
palabras_clave = [p for p in [Link]() if [Link]() not in ["el",
"y", "son"]]
print(palabras_clave)
# 🔹 ['Bitcoin', 'Ethereum', 'criptomonedas', 'populares']

📌 9️⃣ Generadores con () en Lugar de []

Si no necesitas guardar la lista, usa Generators con ().

Ejemplo 13: Sumar los cuadrados de los primeros 1000 números sin crear
una lista grande
python
CopiarEditar
suma_cuadrados = sum(n**2 for n in range(1000))
print(suma_cuadrados)

✅ Más eficiente en memoria que [n**2 for n in range(1000)].

📌 🔥 10️⃣ List Comprehension en Trading y Criptomonedas

Ejemplo 14: Obtener el precio máximo de BTC en las últimas 10 velas


python
CopiarEditar
precios = [41000, 41200, 40800, 41500, 41700, 42000, 41850, 42300, 42500,
43000]
maximo = max([p for p in precios])
print(maximo) # 🔹 43000

Ejemplo 15: Filtrar operaciones ganadoras (profit > 0)


python
CopiarEditar
operaciones = [{"precio_entrada": 41000, "precio_salida": 41500},
{"precio_entrada": 42000, "precio_salida": 41800},
{"precio_entrada": 42500, "precio_salida": 43000}]

ganadoras = [op for op in operaciones if op["precio_salida"] >


op["precio_entrada"]]
print(ganadoras)
# 🔹 [{'precio_entrada': 41000, 'precio_salida': 41500},
{'precio_entrada': 42500, 'precio_salida': 43000}]

🎯 Conclusión

🔹 List Comprehension es una herramienta poderosa para optimizar código en Python.


🔹 Se puede usar en listas, diccionarios, conjuntos y generadores.
🔹 Útil en Machine Learning, Trading y Ciencia de Datos.
🔥 ¿Te gustaría ejemplos más avanzados o con datos reales de Binance? 🚀

4o

Dijiste:
ejemplo mas avanzados pero paso a paso y despues con datos reales en binance

ChatGPT dijo:

¡Genial! Vamos a profundizar en List Comprehension con ejemplos más avanzados paso
a paso y luego aplicaremos la técnica con datos reales de Binance. 🚀

📌 1️⃣ Ejemplo Avanzado: Transformación de Datos en un


DataFrame

🎯 Objetivo:

Simularemos datos de precios de BTC y crearemos nuevas columnas usando List


Comprehension en pandas.

Paso 1: Crear un DataFrame Simulado


import pandas as pd
import numpy as np

# Crear datos simulados para BTC


[Link](42) # Reproducibilidad
data = {
"precio": [Link](40000, 50000, 10), # Precios aleatorios
"volumen": [Link](100, 500, 10), # Volumen aleatorio
}
df = [Link](data)

print(df)

✅ Salida esperada (valores variarán por random):

precio volumen
0 47474 220.584252
1 45773 488.635578
2 40486 323.181723
3 49465 478.915082
4 42643 218.883132
5 49269 322.050949
6 40245 322.628450
7 48900 237.024530
8 44069 136.266758
9 40512 188.034667
Paso 2: Calcular Diferencia de Precios con List Comprehension
df["cambio"] = [df["precio"][i] - df["precio"][i-1] if i > 0 else 0 for i
in range(len(df))]
print(df)

✅ Ahora tenemos la diferencia de precio entre velas.

Paso 3: Clasificar las Velas (Alcista/Bajista)


df["tipo_vela"] = ["Alcista" if df["cambio"][i] > 0 else "Bajista" for i
in range(len(df))]
print(df)

✅ Clasificamos cada vela según su cambio de precio.

Paso 4: Filtrar Solo las Velas Alcistas


velas_alcistas = df[[df["tipo_vela"][i] == "Alcista" for i in
range(len(df))]]
print(velas_alcistas)

✅ Ahora tenemos solo las velas alcistas en un nuevo DataFrame.

📌 2️⃣ Usando List Comprehension en Binance

🎯 Objetivo:

Obtener datos reales de BTC en Binance y aplicar List Comprehension para análisis.

Paso 1: Obtener Datos Reales con Binance API


import requests

# URL de Binance para obtener velas de BTC/USDT


url = "[Link]
params = {
"symbol": "BTCUSDT",
"interval": "1h", # Velas de 1 hora
"limit": 10 # Últimas 10 velas
}

# Obtener datos
response = [Link](url, params=params)
data = [Link]()

# Convertir datos a DataFrame


df = [Link](data, columns=["time", "open", "high", "low", "close",
"volume",
"close_time", "quote_asset_volume",
"trades",
"taker_buy_base", "taker_buy_quote",
"ignore"])

# Convertir columnas a float


df["close"] = df["close"].astype(float)
df["volume"] = df["volume"].astype(float)
print(df[["close", "volume"]]) # Mostrar solo precios de cierre y
volumen

✅ Ahora tenemos datos reales de Binance.

Paso 2: Calcular Diferencia de Precios


df["cambio"] = [df["close"][i] - df["close"][i-1] if i > 0 else 0 for i
in range(len(df))]

✅ Calculamos cuánto cambió el precio en cada vela.

Paso 3: Identificar Velas Alcistas y Bajistas


df["tipo_vela"] = ["Alcista" if df["cambio"][i] > 0 else "Bajista" for i
in range(len(df))]

✅ Clasificamos cada vela en Alcista/Bajista.


Paso 4: Filtrar Solo Velas Alcistas
velas_alcistas = df[[df["tipo_vela"][i] == "Alcista" for i in
range(len(df))]]
print(velas_alcistas[["close", "tipo_vela"]])

✅ Filtramos las velas alcistas con precios de cierre.

📌 3️⃣ 🔥 Optimización con Pandas (Más Rápido)

En lugar de List Comprehension, podemos hacer esto en una sola línea con pandas:

df["cambio"] = df["close"].diff()
df["tipo_vela"] = df["cambio"].apply(lambda x: "Alcista" if x > 0 else
"Bajista")

✅ Esto es más rápido que List Comprehension en grandes datasets.

📌 Resumen Final
Ejemplo Descripción

1️⃣DataFrame Simulado Creamos datos de BTC manualmente.

2️⃣Diferencia de Precios Calculamos el cambio de precio entre velas.

3️⃣Clasificación de Velas Identificamos si una vela es alcista o bajista.

4️⃣Datos Reales de Binance Aplicamos la misma lógica con datos reales.

5️⃣Optimización con Pandas Convertimos List Comprehension en código más eficiente.

2 Set Comprehension (Conjuntos)


2️⃣

Igual que la comprensión de listas, pero genera un conjunto (set) en vez de una lista.

cuadrados = {x**2 for x in range(1, 6)}


print(cuadrados) # Salida: {1, 4, 9, 16, 25}

3️⃣Dict Comprehension (Diccionarios)


Permite crear diccionarios de forma rápida.

cuadrados_dict = {x: x**2 for x in range(1, 6)}


print(cuadrados_dict)
# Salida: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

📌 Filtrando valores

pares_cuadrados = {x: x**2 for x in range(10) if x % 2 == 0}


print(pares_cuadrados)
# Salida: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

4️⃣Generator Expression (Generadores)

Similar a las listas por comprensión, pero usa paréntesis () en vez de corchetes [] y
genera valores uno a uno en vez de almacenar todo en memoria.

gen = (x**2 for x in range(1, 6))


print(next(gen)) # Salida: 1
print(next(gen)) # Salida: 4

🟢 Ideal para trabajar con grandes volúmenes de datos sin consumir mucha memoria.

📌 Resumen

Tipo Símbolo Resultado

Lista [ ] [1, 4, 9, 16, 25]

Conjunto { } {1, 4, 9, 16, 25}

Diccionario {clave: valor} {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Generador ( ) (x**2 for x in range(1, 6))

Aquí tienes ejemplos prácticos de secuencias de comprensión en trading y análisis de


datos, aplicados a Binance y manipulación de DataFrames con Pandas.
📌 1️⃣ Uso en Trading (Binance API)

🔹 Filtrar precios recientes de BTC/USDT y extraer solo los que son mayores
a 50,000 USDT
from [Link] import Client

client = Client() # Sin API key para consulta pública

# Obtener datos de BTC/USDT en futuros


klines = client.futures_klines(symbol="BTCUSDT",
interval=Client.KLINE_INTERVAL_1MINUTE, limit=10)

# Extraer precios de cierre y filtrar los mayores a 50,000 USDT


precios_altos = [float(k[4]) for k in klines if float(k[4]) > 50000]
print(precios_altos)

✅ Usa List Comprehension para extraer y filtrar datos directamente.

📌 2️⃣ Uso en Análisis de Datos (Pandas)

🔹 Agregar una columna con la diferencia entre precio de apertura y cierre


en un DataFrame
import pandas as pd

# Datos ficticios de velas


data = {'open': [40000, 40500, 39800, 41000],
'close': [40500, 40300, 40000, 41500]}

df = [Link](data)

# Agregar una columna con la diferencia (Dict Comprehension)


df['diff'] = [abs(row['close'] - row['open']) for _, row in
[Link]()]

print(df)

✅ Evita usar for tradicionales y hace el código más eficiente.

📌 3️⃣ Uso con Generadores para Optimización

🔹 Calcular promedios móviles sin cargar toda la memoria


import numpy as np

precios = [40000, 40500, 39800, 41000, 41500]


# Generador que calcula la media móvil de 3 períodos
media_movil = ([Link](precios[i:i+3]) for i in range(len(precios)-2))

print(list(media_movil)) # Convertimos a lista para mostrar el resultado

✅ Usa () en vez de [] para calcular promedios sobre la marcha sin almacenar todo en
RAM.

📌 Resumen de Aplicaciones en Trading


Tipo de comprensión Aplicación en Trading

List Comprehension Filtrar velas con condiciones (e.g., precio alto)

Dict Comprehension Crear diccionarios con datos de volumen, precios, etc.

Set Comprehension Eliminar precios duplicados en listas grandes

Generadores Optimizar cálculos como media móvil sin usar memoria extra

Aquí tienes un ejemplo de Machine Learning donde usamos List Comprehension y Dict
Comprehension para procesar datos antes de entrenar un modelo.

🔹 Problema:

Queremos predecir si BTC subirá o bajará basado en características como volumen, RSI
y precio anterior.

1️⃣ Cargar Datos y Preprocesar con List Comprehension

Antes de entrenar el modelo, transformamos los datos eficientemente.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from [Link] import RandomForestClassifier
from [Link] import accuracy_score

# Simulación de datos de BTC


data = {
'precio_anterior': [40000, 40500, 39800, 41000, 41500, 42000],
'rsi': [45, 55, 38, 60, 70, 80],
'volumen': [1.2, 1.8, 1.5, 2.0, 2.5, 3.0],
'precio_actual': [40500, 40300, 40000, 41500, 42200, 41800]
}
df = [Link](data)

# 🔹 Definir la variable objetivo (1 = sube, 0 = baja)


df['sube'] = [1 if df['precio_actual'][i] > df['precio_anterior'][i] else
0 for i in range(len(df))]

# 🔹 Seleccionar características y variable objetivo


X = df[['precio_anterior', 'rsi', 'volumen']]
y = df['sube']

# Dividir en entrenamiento y prueba


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)

✅ Uso de List Comprehension para generar la columna sube

2️⃣ Entrenar Modelo de Machine Learning

Entrenamos un modelo Random Forest para predecir si BTC subirá o bajará.

# Crear y entrenar el modelo


modelo = RandomForestClassifier(n_estimators=100, random_state=42)
[Link](X_train, y_train)

# Hacer predicciones
y_pred = [Link](X_test)

# Evaluar precisión
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisión del modelo: {accuracy:.2f}')

3️⃣ Análisis de Importancia de Variables con Dict Comprehension

Para saber qué factores afectan más la predicción:

# Obtener importancia de características


importancia = {[Link][i]: modelo.feature_importances_[i] for i in
range(len([Link]))}

# Mostrar importancia de cada variable


print(importancia)

📌 Resumen
Uso Técnica de Comprensión

Crear columna sube List Comprehension


Uso Técnica de Comprensión

Mapear importancia de variables Dict Comprehension

🚀 ¿Quieres agregar más indicadores técnicos como RSI, MACD o volumen Delta?
Aquí tienes un ejemplo mejorado donde agregamos RSI, MACD y Delta de volumen al
análisis para predecir si BTC subirá o bajará usando Machine Learning.

📌 Pasos del modelo:

1️⃣Obtener datos simulados de precio, volumen, RSI, MACD y Delta de volumen.


2️⃣Procesar datos con List Comprehension y Dict Comprehension.
3️⃣Entrenar un modelo Random Forest para predecir si BTC sube o baja.
4️⃣Evaluar el modelo y analizar qué indicadores son más importantes.

1️⃣Cargar datos y calcular indicadores


import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from [Link] import RandomForestClassifier
from [Link] import accuracy_score

# 🔹 Simulación de datos de BTC con RSI, MACD y Delta de volumen


data = {
'precio_anterior': [40000, 40500, 39800, 41000, 41500, 42000, 41800,
42300, 42800, 42500],
'precio_actual': [40500, 40300, 40000, 41500, 42200, 41800, 42100,
43000, 42900, 42600],
'volumen': [1.2, 1.8, 1.5, 2.0, 2.5, 3.0, 2.8, 3.2, 3.5, 3.1]
}

df = [Link](data)

# 🔹 Calcular RSI (índice de fuerza relativa)


def calcular_rsi(precios, periodo=14):
delta = [Link](precios)
ganancia = [Link](delta > 0, delta, 0)
perdida = [Link](delta < 0, -delta, 0)

avg_ganancia = [Link](ganancia[-periodo:]) if len(ganancia) >=


periodo else [Link](ganancia)
avg_perdida = [Link](perdida[-periodo:]) if len(perdida) >= periodo
else [Link](perdida)

rs = avg_ganancia / avg_perdida if avg_perdida != 0 else 100


rsi = 100 - (100 / (1 + rs))
return rsi

df['rsi'] = [calcular_rsi(df['precio_anterior'][:i+1]) for i in


range(len(df))]

# 🔹 Calcular MACD (diferencia entre medias móviles de 12 y 26 períodos)


df['ema_12'] = df['precio_anterior'].ewm(span=12, adjust=False).mean()
df['ema_26'] = df['precio_anterior'].ewm(span=26, adjust=False).mean()
df['macd'] = df['ema_12'] - df['ema_26']

# 🔹 Calcular Delta de Volumen (diferencia entre volumen actual y


anterior)
df['delta_volumen'] = [df['volumen'][i] - df['volumen'][i-1] if i > 0
else 0 for i in range(len(df))]

# 🔹 Variable objetivo: 1 si sube, 0 si baja


df['sube'] = [1 if df['precio_actual'][i] > df['precio_anterior'][i] else
0 for i in range(len(df))]

# 🔹 Seleccionar características
X = df[['precio_anterior', 'rsi', 'macd', 'delta_volumen']]
y = df['sube']

# Dividir en datos de entrenamiento y prueba


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)

✅ Aquí usamos List Comprehension para RSI, Delta de Volumen y la columna


"sube".

2️⃣Entrenar el modelo
# 🔹 Entrenar un modelo Random Forest
modelo = RandomForestClassifier(n_estimators=100, random_state=42)
[Link](X_train, y_train)

# 🔹 Hacer predicciones
y_pred = [Link](X_test)

# 🔹 Evaluar precisión
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisión del modelo: {accuracy:.2f}')

✅ El modelo usa RSI, MACD y Delta de Volumen para predecir si BTC subirá o
bajará.

3️⃣Análisis de Importancia de Indicadores


# 🔹 Importancia de cada indicador
importancia = {[Link][i]: modelo.feature_importances_[i] for i in
range(len([Link]))}

# 🔹 Mostrar importancia de cada variable


print("Importancia de cada indicador:", importancia)
✅ Aquí usamos Dict Comprehension para mapear importancia de cada indicador.

📌 Resumen Final
Indicador Cálculo

RSI Evalúa si el precio está sobrecomprado o sobrevendido

MACD Mide la tendencia del mercado con medias móviles

Delta de Volumen Detecta cambios en la presión de compra o venta

que otro modelo??


ChatGPT dijo:

Hay varios modelos que podrías probar para predecir si BTC subirá o bajará,
dependiendo de la complejidad que quieras agregar. Aquí te dejo tres opciones
interesantes:

📌 1️⃣ Regresión Logística (Simple y Rápida)

✅ Ventaja: Rápido, fácil de interpretar.


❌ Desventaja: No capta relaciones no lineales en los datos.

from sklearn.linear_model import LogisticRegression

# Entrenar modelo de regresión logística


modelo_log = LogisticRegression()
modelo_log.fit(X_train, y_train)

# Predicciones y evaluación
y_pred_log = modelo_log.predict(X_test)
accuracy_log = accuracy_score(y_test, y_pred_log)

print(f'Precisión del modelo (Regresión Logística): {accuracy_log:.2f}')

📌 2️⃣ XGBoost (Optimizado para Datos Financieros)

✅ Ventaja: Captura patrones complejos, ideal para trading.


❌ Desventaja: Puede sobreajustar si no se ajustan bien los hiperparámetros.

import xgboost as xgb


# Crear el modelo XGBoost
modelo_xgb = [Link](n_estimators=100, learning_rate=0.1,
max_depth=5, random_state=42)
modelo_xgb.fit(X_train, y_train)

# Predicciones y evaluación
y_pred_xgb = modelo_xgb.predict(X_test)
accuracy_xgb = accuracy_score(y_test, y_pred_xgb)

print(f'Precisión del modelo (XGBoost): {accuracy_xgb:.2f}')

📌 3️⃣ Redes Neuronales (Para Detectar Patrones Complejos)

✅ Ventaja: Detecta patrones que otros modelos no pueden.


❌ Desventaja: Más lento y necesita más datos para entrenar bien.

import tensorflow as tf
from tensorflow import keras

# Crear modelo de red neuronal


modelo_nn = [Link]([
[Link](16, activation='relu',
input_shape=(X_train.shape[1],)),
[Link](8, activation='relu'),
[Link](1, activation='sigmoid') # Clasificación binaria
(sube o baja)
])

# Compilar y entrenar
modelo_nn.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
modelo_nn.fit(X_train, y_train, epochs=50, batch_size=5, verbose=0)

# Evaluar
accuracy_nn = modelo_nn.evaluate(X_test, y_test, verbose=0)[1]
print(f'Precisión del modelo (Red Neuronal): {accuracy_nn:.2f}')

📌 ¿Cuál elegir?
Modelo Pros Contras

Regresión Logística Rápido y fácil de interpretar No capta relaciones complejas

Potente y optimizado para datos


XGBoost Puede sobreajustar
financieros

Red Neuronal Aprende patrones ocultos en los datos Necesita más datos y es más lento

🚀 ¿Cuál te interesa probar primero? O quieres combinarlos en un modelo híbrido?

4o
Dijiste:
redes neuronales

ChatGPT dijo:

¡Buena elección! 🚀 Las redes neuronales pueden detectar patrones complejos en el precio
de BTC y sus indicadores.

📌 Implementación de una Red Neuronal para Predecir si BTC Subirá


o Bajará

🎯 Pasos:
1️⃣Preprocesar datos de precio, RSI, MACD y Delta de Volumen.
2️⃣Crear una red neuronal con TensorFlow/Keras.
3️⃣Entrenar el modelo y evaluar su precisión.

1️⃣Importar Librerías y Datos


import pandas as pd
import numpy as np
import tensorflow as tf
from tensorflow import keras
from sklearn.model_selection import train_test_split
from [Link] import StandardScaler
from [Link] import accuracy_score

# 🔹 Datos simulados (puedes reemplazarlos con datos reales de Binance)


data = {
'precio_anterior': [40000, 40500, 39800, 41000, 41500, 42000, 41800,
42300, 42800, 42500],
'precio_actual': [40500, 40300, 40000, 41500, 42200, 41800, 42100,
43000, 42900, 42600],
'volumen': [1.2, 1.8, 1.5, 2.0, 2.5, 3.0, 2.8, 3.2, 3.5, 3.1]
}

df = [Link](data)

# 🔹 Calcular indicadores técnicos


df['rsi'] = [[Link](30, 70) for _ in range(len(df))] #
Simulación de RSI
df['macd'] = df['precio_anterior'].ewm(span=12).mean() -
df['precio_anterior'].ewm(span=26).mean()
df['delta_volumen'] = [df['volumen'][i] - df['volumen'][i-1] if i > 0
else 0 for i in range(len(df))]

# 🔹 Variable objetivo: 1 si sube, 0 si baja


df['sube'] = [1 if df['precio_actual'][i] > df['precio_anterior'][i] else
0 for i in range(len(df))]
# 🔹 Seleccionar características y normalizar datos
X = df[['precio_anterior', 'rsi', 'macd', 'delta_volumen']]
y = df['sube']

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Dividir en entrenamiento y prueba


X_train, X_test, y_train, y_test = train_test_split(X_scaled, y,
test_size=0.2, random_state=42)

✅ Aquí normalizamos los datos con StandardScaler() para mejorar el rendimiento de la


red neuronal.

2️⃣Crear y Entrenar la Red Neuronal


# 🔹 Crear la Red Neuronal
modelo = [Link]([
[Link](16, activation='relu',
input_shape=(X_train.shape[1],)),
[Link](8, activation='relu'),
[Link](1, activation='sigmoid') # Clasificación binaria
(sube o baja)
])

# 🔹 Compilar el modelo
[Link](optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])

# 🔹 Entrenar el modelo
[Link](X_train, y_train, epochs=50, batch_size=5, verbose=1)

✅ Explicación:

 3 capas: 16, 8 y 1 neurona final.


 Función de activación relu (mejor para redes profundas).
 Optimización con Adam (rápido y estable).
 epochs=50 (ajustable según la precisión deseada).

3️⃣Evaluar el Modelo
# 🔹 Hacer predicciones
y_pred_prob = [Link](X_test) # Probabilidades
y_pred = [1 if prob > 0.5 else 0 for prob in y_pred_prob] # Convertir a
0 o 1
# 🔹 Evaluar precisión
accuracy_nn = accuracy_score(y_test, y_pred)
print(f'Precisión del modelo (Red Neuronal): {accuracy_nn:.2f}')

✅ Salida esperada: Precisión entre 60%-80% dependiendo de los datos.

📌 Resumen Final

🔹 Indicadores Usados: RSI, MACD, Delta de Volumen, Precio


🔹 Optimización: Adam, relu, binary_crossentropy
🔹 Salida: 1 (BTC sube) o 0 (BTC baja)

🚀 ¿Próximos Pasos?

1️⃣Aumentar datos con velas de 1h o 5m de Binance.


2️⃣Agregar más indicadores como VPVR o EMA.
3️⃣Optimizar hiperparámetros (epochs, batch_size).
4️⃣Implementar en tiempo real con una API de Binance.

🔥 ¿Quieres probarlo con datos reales de Binance? 🚀


Secuencias de comprension
 Listas, Sets & Diccionarios por comprensión
34:06
 Solo por curiosidad
00:05
 Ciclos for anidados en las secuencias por comprensión.
01:03

Funciones

 Funciones - Parte 1
37:05
 Funciones - Parte 2
27:09
 Palabra clave pass
00:31
 Determinación de Tipos
11:03
 Documentación oficial acerca de la determinación de
tipos
00:15
 Argumento Key de funciones predefinidas.
21:35
 Quiz argumento Key
1 preguntas
 Función Lambda (Función anónima) - Parte 1
17:12
 Función Lambda (Función anónima) - Parte 2
19:39
 Quiz de función Lambda
1 preguntas
 Argumento *args
19:38
 Argumento **kwargs
09:19
 Funciones lógicas predefinidas
 Funciones - Ejercicios
07:03
 Ejercicios - Solución Parte 1
22:38
 Ejercicios - Solución Parte 2
19:42

Programación Funcional

 Introducción
10:32
 Más acerca de la programación funcional
00:25
 Iteradores
25:57
 Espacio en memoria de los iteradores.
00:47

Programación Orientada a Objetos

 POO - Introducción
 Clases y Objetos
23:42
 Métodos especiales
18:45
 Recordatorio Métodos especiales
00:08
 Comunicando a objetos.
14:51
 Comunicando a objetos - Juego
24:10
 Herencia
10:52
 Decorador @property
04:14
 Decoradores @classmethod & staticmethod

También podría gustarte