In [60]:
import pandas as pd
import numpy as np
from datetime import *

Качаем котировки индекса РЕПО

In [50]:
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]) 
In [51]:
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)
In [52]:
df['CLOSE'].plot()
Out[52]:
<matplotlib.axes.AxesSubplot at 0x54ea970>

Оставляем только колонку Close и переименуем название колонки в REPO

In [53]:
dfrepo = df[['CLOSE']]
dfrepo.columns = ['REPO']
            
In [54]:
dfrepo
Out[54]:
<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)

Качаем котировки индекса ММВБ

In [55]:
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 года

In [61]:
dfmicex = dfmicex[dfmicex.index > datetime(2006, 1, 1)]
dfmicex
Out[61]:
<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)
In [62]:
dfmicex['CLOSE'].plot()
Out[62]:
<matplotlib.axes.AxesSubplot at 0x6e82ed0>

Объединяем OHLC Micex + Repo

In [63]:
df = dfmicex.combine_first(dfrepo)
In [64]:
df
Out[64]:
<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 переименуем колонки оставим только самые нужные

In [67]:
df = df[ ['OPEN', 'HIGH', 'LOW', 'CLOSE', 'REPO'] ]
df.columns = ['O','H','L', 'C', 'R']
          
In [68]:
df
Out[68]:
<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)
In [73]:
df['R'].plot(c='r')
title('REPO INDEX')
Out[73]:
<matplotlib.text.Text at 0x7980c70>
In [74]:
df['C'].plot(c='g')
title('MICEX INDEX')
Out[74]:
<matplotlib.text.Text at 0x79dd350>
In [76]:
repo = df['R']
c = df['C']          
In [77]:
avgrepo = pd.rolling_mean(repo, 10)
In [82]:
x = repo / avgrepo
x.plot()
Out[82]:
<matplotlib.axes.AxesSubplot at 0x7bddf50>
In [ ]: