import pandas as pd
import numpy as np
from datetime import *
url = 'http://www.micex.ru/issrpc/marketdata/stock/index/history/by_ticker/index_history_MICEXEQRRON.csv?secid=MICEXEQRRON&lang=ru'
df = pd.read_csv(url, sep=';', index_col=2, parse_dates = [2])
print df
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 1718 entries, 2012-11-23 00:00:00 to 2006-01-10 00:00:00 Data columns: ID 1718 non-null values NAME 1718 non-null values OPEN 0 non-null values HIGH 0 non-null values LOW 0 non-null values CLOSE 1718 non-null values VALUE 1718 non-null values DURATION 0 non-null values YIELD 0 non-null values dtypes: float64(7), object(2)
df['CLOSE'].plot()
<matplotlib.axes.AxesSubplot at 0x54ea970>
Оставляем только колонку Close и переименуем название колонки в REPO
dfrepo = df[['CLOSE']]
dfrepo.columns = ['REPO']
dfrepo
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 1718 entries, 2012-11-23 00:00:00 to 2006-01-10 00:00:00 Data columns: REPO 1718 non-null values dtypes: float64(1)
micexurl = 'http://www.micex.ru/issrpc/marketdata/stock/index/history/by_ticker/index_history_MICEXINDEXCF.csv?secid=MICEXINDEXCF&lang=ru'
dfmicex = pd.read_csv(micexurl, sep=';', index_col=2, parse_dates = [2])
Оставим только данные после 2006 года
dfmicex = dfmicex[dfmicex.index > datetime(2006, 1, 1)]
dfmicex
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 1721 entries, 2012-11-23 00:00:00 to 2006-01-10 00:00:00 Data columns: ID 1721 non-null values NAME 1721 non-null values OPEN 1721 non-null values HIGH 1721 non-null values LOW 1721 non-null values CLOSE 1721 non-null values VALUE 1721 non-null values DURATION 0 non-null values YIELD 0 non-null values dtypes: float64(7), object(2)
dfmicex['CLOSE'].plot()
<matplotlib.axes.AxesSubplot at 0x6e82ed0>
df = dfmicex.combine_first(dfrepo)
df
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 1721 entries, 2006-01-10 00:00:00 to 2012-11-23 00:00:00 Data columns: CLOSE 1721 non-null values DURATION 0 non-null values HIGH 1721 non-null values ID 1721 non-null values LOW 1721 non-null values NAME 1721 non-null values OPEN 1721 non-null values REPO 1718 non-null values VALUE 1721 non-null values YIELD 0 non-null values dtypes: float64(8), object(2)
Чтобы удобнее было оперировать DataFrame переименуем колонки оставим только самые нужные
df = df[ ['OPEN', 'HIGH', 'LOW', 'CLOSE', 'REPO'] ]
df.columns = ['O','H','L', 'C', 'R']
df
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 1721 entries, 2006-01-10 00:00:00 to 2012-11-23 00:00:00 Data columns: O 1721 non-null values H 1721 non-null values L 1721 non-null values C 1721 non-null values R 1718 non-null values dtypes: float64(5)
df['R'].plot(c='r')
title('REPO INDEX')
<matplotlib.text.Text at 0x7980c70>
df['C'].plot(c='g')
title('MICEX INDEX')
<matplotlib.text.Text at 0x79dd350>
repo = df['R']
c = df['C']
avgrepo = pd.rolling_mean(repo, 10)
x = repo / avgrepo
x.plot()
<matplotlib.axes.AxesSubplot at 0x7bddf50>