Python量化交易实战-27使用P值验证策略的可靠性

使用P值验证策略的可靠性

首先创建一个statistical_test.py文件

一、测试平安银行的P值可靠性

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

import Data.Stock as st
import Strategy.Base as stb
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import Strategy.ma_strategy as ma
from scipy import stats

# 对策略收益进行ttest检验
def ttest(data_return): 
    # 调用假设检验tt est函数:scipy
    t, p =  stats.ttest_1samp(data_return, 0, nan_policy='omit')
    # 获取单边P值
    p_value = p/2 
    # 打印t、P
    print("t value:" , t)
    print("p value:" , p_value)
 
    # 判断是否与理论均值有显著性差异
    print("是否拒绝H0:收益均值=0:", p < 0.05)
    return t, p_value


if __name__ == '__main__':
    code = '000001.XSHE'
    data = st.get_single_price(stock_code=code, timefrequency='daily', start_date=None, end_date='2021-01-01')
    data = ma.ma_strategy(data)
    # 策略的单次收益率
    returns = data['profit_pct']
    print(returns)
    # 绘制一下分布图用于观察
    # plt.hist(returns, bins=30)
    # plt.show()
    #对多个股票进行计算和测试
    ttest(returns)

P Value0.08,也就是说,从统计学上来说,它与均值0并没有显著的差异,但是这个结果不能够反推这个策略不赚钱,只能说从概率学上说,只有百分之8到10的概率是不赚钱的。大体上还是可以参考的策略,

如果说有一支股票,你测到它的P Value=0.001,它并不能代表这支股票一定能赚到钱,它代表的是样本和理论数据有显著差异。也就是它极有可能让你赚钱,

所以从结论来说你可以简单的理解,当P Value<0.05的时候,这个策略似乎是更可靠的,但这只是一个推论性质的指标,不是绝对的,

二、查看多只股票的P值

多测试2个股票的数据:

if __name__ == '__main__':
    stocks = ['000001.XSHE','000858.XSHE','002594.XSHE']
    for code in stocks:
        data = st.get_single_price(stock_code=code, timefrequency='daily', start_date='2016-12-01', end_date='2021-01-01')
        data = ma.ma_strategy(data)
        # 策略的单次收益率
        returns = data['profit_pct']
        # print(returns)
        # 绘制一下分布图用于观察
        # plt.hist(returns, bins=30)
        # plt.show()
        #对多个股票进行计算和测试
        print(code)
        ttest(returns)

第一支股票的t Value和最小,所以它样本的相似度最高,

从结果上来说,3支股票的p value都没有小于0.05,也就是它和我们的样本没有啥显著性的差异

但是 当p value越小,能代表和原来理论设置的0样本的差异越大 也就是越可能让我赚钱.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚坏叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值