基本信息
源码名称:Python-量化代码
源码大小:0.02M
文件格式:.docx
开发语言:Python
更新时间:2021-06-13
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍



# coding: utf-8

 

 

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from __future__ import division

 

# 获取数据函数

def get_stock_data(stock_code, index_code, start_date, end_date):

    """

    :param stock_code: 股票代码,例如‘sz000002’

    :param index_code: 指数代码,例如‘sh000001’

    :param start_date: 回测开始日期,例如‘1991-1-30'

    :param end_date: 回测结束日期,例如‘2015-12-31’

    :return: 函数返回其他函数的各参数序列

    """

    # 此处为存放csv文件的本地路径,请自行改正地址.注意windows和mac系统,斜杠的方向不一样

    stock_data = pd.read_csv(r'G:\财通实习\历史日线数据_样本%282013 2014年数据%292\all_trading_data\stock data\sh600000.csv', parse_dates=['date'])

    benchmark = pd.read_csv(r'G:\财通实习\历史日线数据_样本%282013 2014年数据%292\all_trading_data\index data\sh000001.csv', parse_dates=['date'])

    date = pd.date_range(2016-01-01,2016-03-15)  # 生成日期序列

 

    # 选取在日期范围内的股票数据序列并按日期排序

    stock_data = stock_data.ix[stock_data['date'].isin(date), ['date', 'change', 'adjust_price']]

    stock_data = stock_data.ix[stock_data['date'].isin(date), ['date', 'change', 'adjust_price']]

 

    # 选取在日期范围内的指数数据序列并按日期排序

    date_list = list(stock_data['date'])

    benchmark = benchmark.ix[benchmark['date'].isin(date_list), ['date', 'change', 'close']]

    benchmark.sort_values(by='date', inplace=True)

    benchmark.set_index('date', inplace=True)

 

    # 将回测要用到的各个数据序列转成list格式

    date_line = list(benchmark.index.strftime('%Y-%m-%d'))  # 日期序列

    capital_line = list(stock_data['adjust_price'])  # 账户价值序列

    return_line = list(stock_data['change'])  # 收益率序列

    indexreturn_line = list(benchmark['change'])  # 指数的变化率序列

    index_line = list(benchmark['close'])  # 指数序列

 

    return date_line, capital_line, return_line, index_line, indexreturn_line

 

 

# 计算年化收益率函数

def annual_return(date_line, capital_line):

    """

    :param date_line: 日期序列

    :param capital_line: 账户价值序列

    :return: 输出在回测期间的年化收益率

    """

    # 将数据序列合并成dataframe并按日期排序

    df = pd.DataFrame({'date': date_line, 'capital': capital_line})

    df.sort_values(by='date', inplace=True)

    df.reset_index(drop=True, inplace=True)

    rng = pd.period_range(df['date'].iloc[0], df['date'].iloc[-1], freq='D')

    # 计算年化收益率

    annual = pow(df.ix[len(df.index) - 1, 'capital'] / df.ix[0, 'capital'], 250 / len(rng)) - 1

    print '年化收益率为:%f' % annual