Successful Algorithmic Trading原书加代码


Successful Algorithmic Trading(原书加代码),包含全部章节的内容。
资源截图
代码片段和文件信息
#!/usr/bin/python
# -*- coding: utf-8 -*-

# cadf.py

import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
import pandas.io.data as web
import pprint
import statsmodels.tsa.stattools as ts

from pandas.stats.api import ols


def plot_price_series(df ts1 ts2):
    months = mdates.MonthLocator()  # every month
    fig ax = plt.subplots()
    ax.plot(df.index df[ts1] label=ts1)
    ax.plot(df.index df[ts2] label=ts2)
    ax.xaxis.set_major_locator(months)
    ax.xaxis.set_major_formatter(mdates.DateFormatter(‘%b %Y‘))
    ax.set_xlim(datetime.datetime(2012 1 1) datetime.datetime(2013 1 1))
    ax.grid(True)
    fig.autofmt_xdate()

    plt.xlabel(‘Month/Year‘)
    plt.ylabel(‘Price ($)‘)
    plt.title(‘%s and %s Daily Prices‘ % (ts1 ts2))
    plt.legend()
    plt.show()

def plot_scatter_series(df ts1 ts2):
    plt.xlabel(‘%s Price ($)‘ % ts1)
    plt.ylabel(‘%s Price ($)‘ % ts2)
    plt.title(‘%s and %s Price Scatterplot‘ % (ts1 ts2))
    plt.scatter(df[ts1] df[ts2])
    plt.show()

def plot_residuals(df):
    months = mdates.MonthLocator()  # every month
    fig ax = plt.subplots()
    ax.plot(df.index df[“res“] label=“Residuals“)
    ax.xaxis.set_major_locator(months)
    ax.xaxis.set_major_formatter(mdates.DateFormatter(‘%b %Y‘))
    ax.set_xlim(datetime.datetime(2012 1 1) datetime.datetime(2013 1 1))
    ax.grid(True)
    fig.autofmt_xdate()

    plt.xlabel(‘Month/Year‘)
    plt.ylabel(‘Price ($)‘)
    plt.title(‘Residual Plot‘)
    plt.legend()

    plt.plot(df[“res“])
    plt.show()

if __name__ == “__main__“:
    start = datetime.datetime(2012 1 1)
    end = datetime.datetime(2013 1 1)

    arex = web.DataReader(“AREX“ “yahoo“ start end)
    wll = web.DataReader(“WLL“ “yahoo“ start end)

    df = pd.Dataframe(index=arex.index)
    df[“AREX“] = arex[“Adj Close“]
    df[“WLL“] = wll[“Adj Close“]

    # Plot the two time series
    plot_price_series(df “AREX“ “WLL“)

    # Display a scatter plot of the two time series
    plot_scatter_series(df “AREX“ “WLL“)

    # Calculate optimal hedge ratio “beta“
    res = ols(y=df[‘WLL‘] x=df[“AREX“])
    beta_hr = res.beta.x

    # Calculate the residuals of the linear combination
    df[“res“] = df[“WLL“] - beta_hr*df[“AREX“]

    # Plot the residuals
    plot_residuals(df)

    # Calculate and output the CADF test on the residuals
    cadf = ts.adfuller(df[“res“])
    pprint.pprint(cadf)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)