请选择 进入手机版 | 继续访问电脑版
楼主: 邢不行
70461 355

[源码分享] 【量化小讲堂-Python、Pandas系列】逆天的反转策略在A股实证   [推广有奖]

chen643015 在职认证  发表于 2017-10-30 06:01:05 |显示全部楼层 |坛友微信交流群
感谢楼主分享

使用道具

王圆圆圆圆 在职认证  发表于 2017-11-3 11:42:23 |显示全部楼层 |坛友微信交流群
我的回测怎么报错了.......IndexError: single positional indexer is out-of-bounds

使用道具

jg427 发表于 2017-11-3 15:46:25 |显示全部楼层 |坛友微信交流群
谢谢分享,拜读

使用道具

刘小蕾 发表于 2017-11-9 11:12:01 |显示全部楼层 |坛友微信交流群
王圆圆圆圆 发表于 2017-11-3 11:42
我的回测怎么报错了.......IndexError: single positional indexer is out-of-bounds
这个问题我解决了~
问题始作俑者:如果有股票在stock_code_list里面,但是数据为空,那么在计算复权价格(cal_right_price)函数中就会报错“out-of-bounds”
解决办法:在获取股票数据(get_stock_data)函数的for循环中多加一个非零判断:
        if(len(stock_data)>0):
加完之后代码:
# 获取股票数据
def get_stock_data():
    # 遍历数据文件夹中所有股票文件的文件名,得到股票代码列表
    stock_code_list = []
    # 此处为股票数据文件的本地路径,请自行修改
    for root, dirs, files in os.walk('C:/Users/Administrator/Desktop/stock data'):
        if files:
            for f in files:
                if '.csv' in f:
                    stock_code_list.append(f.split('.csv')[0])
    all_stock = pd.DataFrame()

    for code in stock_code_list:
        # 此处为股票数据文件的本地路径,请自行修改
        stock_data = pd.read_csv('C:/Users/Administrator/Desktop/stock data/' + code + '.csv', parse_dates=['date'])
        if(len(stock_data)>0):
            stock_data = stock_data[['code', 'date', 'open', 'close', 'change']].sort_values(by='date')
            stock_data.reset_index(drop=True, inplace=True)
            # 计算复权价
            stock_data[['open', 'close']] = cal_right_price(stock_data, type='后复权')
            # 判断每天开盘是否涨停
            stock_data.loc[stock_data['open'] > stock_data['close'].shift(1) * 1.097, 'limit_up'] = 1
            stock_data['limit_up'].fillna(0, inplace=True)
            all_stock = all_stock.append(stock_data, ignore_index=True)

    return all_stock[['code', 'date', 'change', 'limit_up']]

使用道具

刘小蕾 发表于 2017-11-9 11:18:57 |显示全部楼层 |坛友微信交流群
回测2013-2014年数据结果:反转策略收益不错,但回撤也大。综合看反转策略夏普最高。

=====================动量策略主要回测指标=====================
年化收益率为:0.248775
最大回撤为:-0.244219, 开始日期:2013-10-14, 结束日期:2014-04-28
sharpe_ratio: 0.730498
=====================反转策略主要回测指标=====================
年化收益率为:0.496541
最大回撤为:-0.223969, 开始日期:2013-05-30, 结束日期:2013-07-08
sharpe_ratio: 2.045021
=====================同期上证指数主要回测指标=====================
年化收益率为:0.274880
最大回撤为:-0.160932, 开始日期:2013-05-29, 结束日期:2013-06-27
sharpe_ratio: 1.408857

使用道具

王圆圆圆圆 在职认证  发表于 2017-11-9 13:06:31 |显示全部楼层 |坛友微信交流群
刘小蕾 发表于 2017-11-9 11:12
这个问题我解决了~
问题始作俑者:如果有股票在stock_code_list里面,但是数据为空,那么在计算 ...
好滴好滴,我再看看,感谢

使用道具

hecttttor 发表于 2017-11-26 17:11:30 |显示全部楼层 |坛友微信交流群
谢谢楼主 在写的作业正好要用这个

使用道具

Prozacc 发表于 2017-12-22 17:02:45 |显示全部楼层 |坛友微信交流群
学习!!

使用道具

空城丸 发表于 2017-12-29 11:05:44 |显示全部楼层 |坛友微信交流群
支持下先

使用道具

钱学森64 发表于 2017-12-30 18:39:19 |显示全部楼层 |坛友微信交流群
谢谢分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-28 18:27