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

auto-trade xuhss 606℃ 0评论

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

首先创建一个statistical_test.py文件

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

一、测试平安银行的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)

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

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)

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

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

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

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

转载请注明:xuhss » Python量化交易实战-27使用P值验证策略的可靠性

喜欢 (1)

您必须 登录 才能发表评论!