在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python语言基础 → Python-量化代码

Python-量化代码

Python语言基础

下载此实例
  • 开发语言:Python
  • 实例大小:0.02M
  • 下载次数:5
  • 浏览次数:43
  • 发布时间:2021-06-13
  • 实例类别:Python语言基础
  • 发 布 人:ant2021
  • 文件格式:.docx
  • 所需积分:2
 相关标签: python 量化 py 代码

实例介绍

【实例简介】
【实例截图】

【核心代码】


# 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


标签: python 量化 py 代码

实例下载地址

Python-量化代码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
;
报警