2017-02-20 1 views
0

Я пытаюсь построить две цены акций на индексном участке. Этот сюжет очень распространен, поскольку он запускает обе акции с разными ценами, в том же месте.Диаграмма смещения индекса

Смотрите ниже график IBM против TSLA

def get_historical_closes(ticker, start_date, end_date): 
    # get the data for the tickers. This will be a panel 
    p = wb.DataReader(ticker, "yahoo", start_date, end_date) 
    # convert the panel to a DataFrame and selection only Adj Close 
    # while making all index levels columns 
    d = p.to_frame()['Adj Close'].reset_index() 
    # rename the columns 
    d.rename(columns={'minor': 'Ticker', 'Adj Close': 'Close'}, inplace=True) 
    # pivot each ticker to a column 
    pivoted = d.pivot(index='Date', columns='Ticker') 
    # and drop the one level on the columns 
    pivoted.columns = pivoted.columns.droplevel(0) 
    return pivoted 

tickers = ['IBM','TSLA'] 
start = '2015-12-31' 
end  ='2016-12-22' 

df_ret=get_historical_closes(tickers,start,end).pct_change().replace('NaN',0) 
df_ret=np.cumprod(1+df_ret) 
df_ret.plot() 

Как вы можете видеть, как начать в 1.00.

Что я хотел бы сделать, так это иметь сходимость при 1.00 в какой-либо произвольной точке индекса даты. Например, я хотел бы видеть тот же график, за исключением того, что линии сходятся на 1 31 июля 2016 года. Таким образом, компенсируется конвергенция индекса в данной точке.

Есть ли у кого-нибудь идеи, как это сделать?

ответ

0

пытался сделать это более сложным, чем то, что на самом деле должно быть. См. Ниже:

  df_day=df_ret[df_ret.index=='2016-03-31'] 

      df_plot = pd.DataFrame(index=df_ret.index, columns=df_ret.columns) 

      for col in df_ret.columns:  # For each factor 
       df_plot[col]=df_ret[col]/df_day[col].values 

      df_plot.plot() 
Смежные вопросы