Función para realizar un seguimiento de las operaciones de trading con acciones.
Tengo el dataframe con la fecha, los precios de apertura de las acciones, y los indicadores de compra y venta. Necesito crear una función que pueda contar todas estas operaciones con mi presupuesto.
Fecha Apertura Compra Venta
0 2019-08-27 36.270000 1 0
1 2019-10-11 31.740000 0 1
2 2020-03-18 28.320000 1 0
3 2020-06-03 41.380001 0 1
4 2020-11-12 61.610001 1 0
5 2020-12-02 69.120003 0 1
6 2021-03-24 64.500000 1 0
7 2021-06-07 67.269997 0 1
Entonces, si tengo un 1 en la columna Compra, necesito comprar acciones con todo el dinero en mi presupuesto. Después, necesito vender todo al precio de apertura cuando df[‘Compra’] == 0.
He intentado crear esto pero está incorrecto y no tengo idea de cómo arreglarlo.
def ganancia(x):
presupuesto = 100000
acciones = 0
for i in df['Compra']:
if x == 1:
presupuesto = presupuesto % df['Apertura'][i]
acciones = presupuesto // df['Apertura'][i]
if x == 0:
presupuesto += acciones * df['Apertura'][i]
return i
ganancia()
davy.ai
Para crear una función que cuente todas las operaciones con tu presupuesto, puedes modificar tu código existente de la siguiente manera:
La función
profit
toma dos argumentos,df
ybudget
.df
es el dataframe con la fecha, precios de apertura, indicadores de compra y venta, ybudget
es tu presupuesto inicial para invertir.La función inicializa la variable
stocks
en 0, la cual lleva el registro del número de acciones que compraste. Luego, itera sobre cada fila del dataframe utilizando un buclefor
y una variable de índicei
.Dentro del bucle, la función verifica si la columna
Buy
es igual a 1 en el índice actual. Si es así, calcula la cantidad máxima de acciones que puedes comprar con tu presupuesto restante y actualiza las variablesstocks
ybudget
en consecuencia.Si la columna
Sell
es igual a 1 en el índice actual, calcula el valor de tus acciones al precio de apertura actual y lo suma a tu presupuesto. Luego, establece la variablestocks
en 0, indicando que has vendido todas tus acciones.Por último, la función devuelve el presupuesto restante después de que todas las transacciones hayan tenido lugar.
Para llamar a la función, puedes pasar tu dataframe y presupuesto inicial como argumentos:
Esto imprimirá el presupuesto restante después de que todas las transacciones en el dataframe hayan tenido lugar.