Estoy aprendiendo a hacer backtesting en Python usando los Pandas. Estoy aprendiendo a usar la Media móvil de Cruce. He señales generadas a comprar o a vender ya. Pero no estoy seguro de dónde ir de allí? Digamos que si tengo el capital inicial de $100,000
de lo que sería mi final % de retorno
Me doy cuenta de que esta es una pregunta muy básica, pero me parece que no puede envolver mi cabeza alrededor de ella todavía.
Esto es lo que tengo hasta ahora.
import datetime
import pandas as pd
from pandas_datareader import data, wb
import numpy as np
import Quandl
import matplotlib.pylab as pylab
%matplotlib inline
start_date = datetime.datetime(2009,1,1)
end_date = datetime.datetime(2014,1,1)
amzn = data.DataReader("AMZN", "yahoo", start_date, end_date)
def generate_signals(self):
# Create DataFrame and initialise signal series to zero
signals = pd.DataFrame(index=amzn.index)
signals['signal'] = 0
# Create the short/long simple moving averages
signals['short_mavg'] = pd.rolling_mean(amzn['Adj Close'], 40, min_periods=1)
signals['long_mavg'] = pd.rolling_mean(amzn['Adj Close'], 100, min_periods=1)
# When the short SMA exceeds the long SMA, set the ‘signals' Series to 1 (else 0)
signals['signal'][40:] = np.where(signals['short_mavg'][40:] >
signals['long_mavg'][100:], 1, 0)
# Take the difference of the signals in order to generate actual trading orders
signals['positions'] = signals['signal'].diff()
return signals
Me he tomado el código de https://s3.amazonaws.com/quantstart/media/powerpoint/an-introduction-to-backtesting.pdf
El Portfolio
parte no funciona para mí, así que estoy tratando de averiguar lo que se supone que sucederá en el real de backtesting.