21. Precios de acciones
21. Precios de Acciones con Python: Tutorial para Principiantes
📈 Introducción: Tu asistente de bolsa personal
¿Alguna vez has querido saber el precio de las acciones de tus empresas favoritas sin abrir una app o navegador? ¡Ahora puedes preguntárselo a tu asistente virtual! Vamos a convertirlo en un mini analista de bolsa que te dará precios de acciones en tiempo real.
¿Qué son las acciones?
Son pequeñas partes de una empresa que puedes comprar/vender
Su precio cambia constantemente durante el día
Analoǵía: Es como comprar un pedacito de una pizza gigante (la empresa)
💼 ¿Cómo funciona? Esquema visual
text
🎤 TÚ: "Precio de Tesla"
↓
🤖 ASISTENTE: Detecta "precio" y "acción"
↓
📦 yfinance: Pide datos a Yahoo Finance
↓
🌐 INTERNET: Obtiene precios en tiempo real
↓
💾 DATOS: Recibe información estructurada
↓
🔊 ASISTENTE: "Tesla está a $865.42"
🛠️ Lo que necesitaremos
1. Nueva librería: yfinance
Biblioteca especializada en datos financieros
Accede a Yahoo Finance (gratuito)
No necesita API Key
bash
# En tu terminal o CMD:
pip install yfinance
Importante: Después de instalar, CIERRA y ABRE Visual Studio Code.
📊 Entendiendo los "tickers"
Cada acción tiene un código único llamado "ticker":
Analoǵía: Los tickers son como los apodos de las acciones.
✍️ Código paso a paso explicado
Paso 1: Importar y configurar la librería
python
import yfinance as yf # ← 'as yf' crea un alias (apodo)
¿Por qué as yf?
yfinance es largo de escribir muchas veces
yf es más corto y fácil
Es como decirle a un amigo: "A partir de ahora te llamaré 'Alex' en vez de 'Alejandro'"
Paso 2: Detectar cuándo preguntamos por acciones
python
# En tu función principal:
if 'acción' in comando and 'precio' in comando:
precio_acciones()
Ejemplos que activarán la función:
"Precio de una acción"
"¿Cuánto vale Tesla?"
"Dime el valor de Amazon"
"Acción de Facebook"
Paso 3: Crear la función principal
python
def precio_acciones():
"""
Pregunta y muestra el precio de una acción
"""
# 1. Preguntar qué acción quiere el usuario
hablar("¿Qué acción quieres ver?")
# 2. Escuchar la respuesta
nombre_accion = escuchar().lower()
# 3. Traducir nombre a ticker
if 'tesla' in nombre_accion:
ticker = "TSLA"
elif 'amazon' in nombre_accion:
ticker = "AMZN"
elif 'facebook' in nombre_accion or 'meta' in nombre_accion:
ticker = "META"
elif 'apple' in nombre_accion or 'manzana' in nombre_accion:
ticker = "AAPL"
elif 'google' in nombre_accion:
ticker = "GOOGL"
else:
hablar(f"No reconozco la acción {nombre_accion}")
return
# 4. Obtener el precio
try:
# Crear objeto de la acción
accion = yf.Ticker(ticker)
# Obtener datos del último día
historial = accion.history(period="1d")
# Extraer el precio de cierre
precio = historial["Close"].iloc[-1]
# Decir el precio
hablar(f"El precio de {ticker} es de {precio:.2f} dólares")
# También imprimirlo bonito
print(f"📊 {ticker} ({nombre_accion.title()}): ${precio:.2f}")
except Exception as e:
hablar("No pude obtener el precio en este momento")
print(f"Error: {e}")
🔍 Explicación detallada de partes clave
1. yf.Ticker("TSLA")
Crea un objeto que representa la acción
Es como crear un "archivo" con toda la información de Tesla
2. .history(period="1d")
Obtiene el historial de precios
"1d" = últimos 1 día
También puedes usar: "5d", "1mo", "1y"
3. ["Close"].iloc[-1]
["Close"] = Precio de cierre del día
.iloc[-1] = Último valor disponible (el más reciente)
Analoǵía: Es como tomar el último dato de una lista de temperaturas diarias
🎯 Código completo mejorado
python
# ASISTENTE VIRTUAL - PRECIOS DE ACCIONES
import yfinance as yf
import pyttsx3
# Configuración de voz
engine = pyttsx3.init()
def hablar(texto):
engine.say(texto)
engine.runAndWait()
def precio_acciones_inteligente():
"""
Versión mejorada con más acciones y manejo de errores
"""
# Diccionario de acciones conocidas
acciones = {
# "palabra que dice usuario": "ticker real"
"tesla": "TSLA",
"amazon": "AMZN",
"facebook": "META",
"meta": "META",
"apple": "AAPL",
"manzana": "AAPL",
"google": "GOOGL",
"microsoft": "MSFT",
"netflix": "NFLX",
"nvidia": "NVDA",
"twitter": "TWTR",
"disney": "DIS",
"ibm": "IBM",
"intel": "INTC"
}
hablar("¿De qué empresa quieres saber el precio?")
# Escuchar respuesta
respuesta = escuchar().lower()
if not respuesta:
hablar("No escuché tu respuesta")
return
# Buscar coincidencias
ticker_encontrado = None
empresa_encontrada = None
for palabra, ticker in acciones.items():
if palabra in respuesta:
ticker_encontrado = ticker
empresa_encontrada = palabra
break
# Si no encontramos la acción
if not ticker_encontrado:
hablar(f"No tengo información de {respuesta}")
hablar("Prueba con: Tesla, Amazon, Apple, Google, Microsoft...")
return
try:
# Obtener datos
hablar(f"Consultando precio de {empresa_encontrada.title()}...")
accion = yf.Ticker(ticker_encontrado)
# Obtener información adicional
info = accion.info
nombre_completo = info.get('longName', empresa_encontrada)
# Precio actual
historial = accion.history(period="1d")
if historial.empty:
hablar(f"No hay datos disponibles para {nombre_completo}")
return
precio_actual = historial["Close"].iloc[-1]
precio_abierto = historial["Open"].iloc[0]
# Calcular cambio
cambio = precio_actual - precio_abierto
porcentaje = (cambio / precio_abierto) * 100
# Preparar mensaje
if cambio > 0:
tendencia = "subió"
emoji = "📈"
elif cambio < 0:
tendencia = "bajó"
emoji = "📉"
else:
tendencia = "se mantuvo igual"
emoji = "➡️"
mensaje = f"""{emoji} {nombre_completo} ({ticker_encontrado}):
Precio actual: ${precio_actual:.2f}
Hoy {tendencia} {abs(cambio):.2f} dólares ({abs(porcentaje):.2f}%)"""
# Decir versión resumida
hablar(f"{nombre_completo} está a {precio_actual:.2f} dólares. Hoy {tendencia} {abs(porcentaje):.2f} por ciento.")
# Imprimir versión completa
print("=" * 50)
print(mensaje)
print("=" * 50)
except Exception as e:
hablar("Error al obtener datos financieros")
print(f"Error detallado: {e}")
def precio_acciones_directo(comando):
"""
Versión que extrae la acción directamente del comando
Ejemplo: "precio de tesla" → detecta Tesla automáticamente
"""
# Lista de acciones para buscar en el comando
acciones_dict = {
"tesla": "TSLA",
"amazon": "AMZN",
"apple": "AAPL",
"google": "GOOGL",
"microsoft": "MSFT",
"meta": "META",
"facebook": "META",
"netflix": "NFLX"
}
comando_lower = comando.lower()
# Buscar si menciona alguna acción directamente
for accion_nombre, ticker in acciones_dict.items():
if accion_nombre in comando_lower:
# Obtener precio directamente
try:
accion = yf.Ticker(ticker)
historial = accion.history(period="1d")
precio = historial["Close"].iloc[-1]
hablar(f"{accion_nombre.title()} está a {precio:.2f} dólares")
return
except:
pass
# Si no mencionó acción específica, preguntar
precio_acciones_inteligente()
# Diagrama visual del proceso:
"""
🎤 TÚ DICES: "¿Cuánto vale Apple?"
↓
🤖 ASISTENTE: Detecta "Apple" en el comando
↓
🔍 BUSCA: Encuentra ticker "AAPL" en diccionario
↓
🌐 YFINANCE: Pide datos de AAPL a Yahoo
↓
📊 PROCESA: Precio actual = $175.64
↓
📈 ANALIZA: Hoy subió $2.50 (1.44%)
↓
🔊 RESPONDE: "Apple está a 175.64 dólares. Hoy subió 1.44%"
"""
📊 Información adicional que puedes obtener
python
# Ejemplos de datos disponibles:
accion = yf.Ticker("TSLA")
# Información general
info = accion.info
print(info['longName']) # Nombre completo
print(info['sector']) # Sector (Automotriz)
print(info['country']) # País (United States)
# Historial
historial = accion.history(period="5d")
print(historial[['Open', 'High', 'Low', 'Close', 'Volume']])
# Dividendos
dividendos = accion.dividends
# Recomendaciones de analistas
recomendaciones = accion.recommendations
🚨 Solución de problemas comunes
Problema 1: "No module named 'yfinance'"
bash
# Solución:
pip uninstall yfinance
pip install yfinance --upgrade
# Cerrar y abrir VS Code
Problema 2: Precios desactualizados
python
# Yahoo Finance tiene delay de 15 minutos
# Para datos en tiempo real necesitarías API premium
print("⚠️ Los precios tienen 15 minutos de delay")
Problema 3: Acción no encontrada
python
# Verificar el ticker en Yahoo Finance
# Algunas empresas tienen múltiples tickers:
# Google: GOOGL (clase A) y GOOG (clase C)
# Meta: FB (viejo) y META (nuevo)
✨ Mejoras avanzadas
1. Seguimiento de múltiples acciones:
python
def portfolio():
"""Revisa varias acciones a la vez"""
mis_acciones = {
"TSLA": 5, # 5 acciones de Tesla
"AAPL": 10, # 10 acciones de Apple
"AMZN": 2 # 2 acciones de Amazon
}
total = 0
for ticker, cantidad in mis_acciones.items():
precio = yf.Ticker(ticker).history("1d")["Close"].iloc[-1]
valor = precio * cantidad
total += valor
print(f"{ticker}: {cantidad} × ${precio:.2f} = ${valor:.2f}")
print(f"Valor total del portafolio: ${total:.2f}")
2. Alertas de precio:
python
def alerta_precio(ticker, limite):
"""Verifica si una acción supera un límite"""
precio = obtener_precio(ticker)
if precio > limite:
hablar(f"¡Alerta! {ticker} superó ${limite}")
hablar(f"Precio actual: ${precio}")
3. Gráficos simples:
python
import matplotlib.pyplot as plt
def grafico_accion(ticker):
"""Muestra gráfico de los últimos 30 días"""
datos = yf.Ticker(ticker).history(period="30d")
datos['Close'].plot(title=f"{ticker} - Últimos 30 días")
plt.show()
✅ Resumen clave
pip install yfinance instala la librería financiera
Los tickers son códigos de 2-5 letras para cada acción
yf.Ticker("TSLA") crea el objeto de la acción
.history("1d")["Close"].iloc[-1] obtiene el último precio
Siempre usar try-except porque los precios pueden fallar
📝 Cuestionario de repaso
Pregunta 1
¿Qué comando instala la librería para precios de acciones?
a) pip install finance
b) pip install yahoo-finance
c) pip install yfinance
d) install yfinance
Pregunta 2
¿Qué es un "ticker"?
a) El precio de una acción
b) Un reloj que hace tic-tac
c) El código único de una acción
d) Un tipo de gráfico
Pregunta 3
Si quieres el precio de Apple, ¿qué ticker usas?
a) APPL
b) APL
c) AAPL
d) APPLE
Pregunta 4
¿Qué hace .iloc[-1] en el código?
a) Toma el primer precio
b) Toma el último precio disponible
c) Calcula el promedio
d) Redondea el número
Pregunta 5
¿Por qué es importante usar try-except?
a) Para que el código sea más rápido
b) Para manejar errores si falla la conexión
c) Porque es obligatorio en Python
d) Para instalar librerías automáticamente
Respuestas del cuestionario
c) pip install yfinance - Recuerda: "y" de Yahoo + "finance"
c) El código único de una acción - Como DNI para empresas
c) AAPL - ¡Ojo con la ortografía! Apple es AAPL, no APPL
b) Toma el último precio disponible - -1 significa "último elemento"
b) Para manejar errores si falla la conexión - Internet puede fallar, hay que estar preparados
💰 Reto final: Crea tu propio asistente financiero
Desafío 1: Agrega más empresas
python
# Agrega estas empresas latinoamericanas:
"bancolombia": "CIB",
"femsa": "FMX",
"américa móvil": "AMX"
Desafío 2: Calcula ganancias/pérdidas
python
def calcular_ganancia(ticker, precio_compra, cantidad):
precio_actual = obtener_precio(ticker)
diferencia = (precio_actual - precio_compra) * cantidad
hablar(f"Tienes {'ganancia' if diferencia > 0 else 'pérdida'} de ${abs(diferencia):.2f}")
Desafío 3: Criptomonedas
python
# yfinance también funciona con criptos!
"bitcoin": "BTC-USD",
"ethereum": "ETH-USD",
"dogecoin": "DOGE-USD"
🎉 ¡Felicidades!
Ahora tu asistente puede:
✅ Consultar precios de acciones en tiempo real
✅ Reconocer múltiples empresas
✅ Mostrar cambios porcentuales
✅ Manejar errores de conexión
Próximo paso: Agregar seguimiento de portafolio, alertas de precios, o integración con criptomonedas. ¡Tu asistente financiero está listo para ayudarte!
Esta respuesta es generada por AI, solo como referencia
https://www.youtube.com/watch?v=Pj9KbAKpQyk
https://www.youtube.com/watch?v=-0tIy8wWtzE
https://www.youtube.com/watch?v=YqSSId7xfwU
https://www.youtube.com/watch?v=MjK-j7YJ5YI
https://www.youtube.com/watch?v=l2G8-iQYfoA
https://www.youtube.com/watch?v=t-YO0XeHczU
Comentarios
Publicar un comentario