交作业

来源:4-10 【作业】双均线策略:寻找最优参数

Eric_hao

2023-03-22

import pandas as pd
import strategy.statistical_test as stat
import strategy.ma_strategy as ma
import data.stock as st

stocks = [‘000001.XSHE’, ‘000010.XSHE’, ‘000020.XSHE’, ‘000014.XSHE’, ‘000019.XSHE’,
‘000023.XSHE’, ‘000026.XSHE’, ‘000030.XSHE’, ‘000032.XSHE’,‘000035.XSHE’]

stocks = [‘000001.XSHE’, ‘000030.XSHE’]

sma_list = [5,10,5,5,10]
lma_list = [10,20,20,120,20]

sma_list = [10,5,10]

lma_list = [20,20,20]

1. 任选 10 只股票

2. 调整均线周期参数,如:MA5-MA10、MA5-MA20、MA5-MA60、MA5-MA120、MA10-MA20 等

for code in stocks:
prc_data = pd.DataFrame()
# 3. 计算不同周期参数的收益率
for i in range(len(sma_list)):
df = st.get_csv_price(code, ‘2017-01-01’, ‘2022-01-01’)
df = df[[‘close’]]
df = ma.ma_strategy(df, sma_list[i], lma_list[i])
df = df[[‘close’, ‘short_ma’, ‘long_ma’, ‘profit_pct’]]
list_name = ‘ma’+str(sma_list[i]) + ‘-’ + str(lma_list[i])
prc_data[list_name] = df[[‘profit_pct’]].reset_index(drop=True)

# 4. 找到每只股票收益率最高的周期参数
prc = pd.DataFrame(prc_data.mean())
prc.columns=['收益情况百分比']
prc = prc.sort_values(by ='收益情况百分比', ascending=False)
prc['收益情况百分比'] = prc['收益情况百分比'].apply(lambda x: format(x, '.2%'))
# print(prc)
print('股票代码为:%s'%code)
print('收益率最高的周期参数为:%s,收益率为:%s' %(prc.index[0], prc.iloc[0].values[0]))
# print(prc_data)

5. 并对该周期参数的收益率进行假设检验

retruns = stat.ttest(prc_data[prc.index[0]])

6. 所得 p 值是否能拒绝 H0:收益率均值 = 0

运行结果

股票代码为:000001.XSHE
收益率最高的周期参数为:ma10-20,收益率为:0.21%
t的值是: 0.5465832931047204
p_values的值是: 0.2941172274353997
是否可以拒绝H0策略呢: False
(0.5465832931047204, 0.2941172274353997)





股票代码为:000010.XSHE
收益率最高的周期参数为:ma10-20,收益率为:-0.36%
t的值是: -0.9782302153259657
p_values的值是: 0.16684877054978703
是否可以拒绝H0策略呢: False
(-0.9782302153259657, 0.16684877054978703)





股票代码为:000020.XSHE
收益率最高的周期参数为:ma5-20,收益率为:-0.09%
t的值是: -0.2238219596552248
p_values的值是: 0.41204742314551507
是否可以拒绝H0策略呢: False
(-0.2238219596552248, 0.41204742314551507)





股票代码为:000014.XSHE
收益率最高的周期参数为:ma5-20,收益率为:-0.62%
t的值是: -1.8780924012125957
p_values的值是: 0.034029060394536105
是否可以拒绝H0策略呢: True
(-1.8780924012125957, 0.034029060394536105)





股票代码为:000019.XSHE
收益率最高的周期参数为:ma5-120,收益率为:0.60%
t的值是: 1.0280761866521075
p_values的值是: 0.16699591137089176
是否可以拒绝H0策略呢: False
(1.0280761866521075, 0.16699591137089176)





股票代码为:000023.XSHE
收益率最高的周期参数为:ma10-20,收益率为:-0.91%
t的值是: -2.8738295606262865
p_values的值是: 0.0034254925640513616
是否可以拒绝H0策略呢: True
(-2.8738295606262865, 0.0034254925640513616)





股票代码为:000026.XSHE
收益率最高的周期参数为:ma5-20,收益率为:-0.86%
t的值是: -2.534855519379403
p_values的值是: 0.007580597203908448
是否可以拒绝H0策略呢: True
(-2.534855519379403, 0.007580597203908448)





股票代码为:000030.XSHE
收益率最高的周期参数为:ma10-20,收益率为:-0.17%
t的值是: -0.2637787814916032
p_values的值是: 0.3967486503598854
是否可以拒绝H0策略呢: False
(-0.2637787814916032, 0.3967486503598854)





股票代码为:000032.XSHE
收益率最高的周期参数为:ma5-120,收益率为:-0.90%
t的值是: -1.6005046322114997
p_values的值是: 0.07407712580542894
是否可以拒绝H0策略呢: False
(-1.6005046322114997, 0.07407712580542894)





股票代码为:000035.XSHE
收益率最高的周期参数为:ma10-20,收益率为:-0.63%
t的值是: -1.2689146568192453
p_values的值是: 0.10785713871213201
是否可以拒绝H0策略呢: False
(-1.2689146568192453, 0.10785713871213201)

Process finished with exit code 0

写回答

1回答

DeltaF

2024-02-05

同学优秀👍

0
0

程序员理财课 Python量化交易系统实战

打造一个自动交易平台,新手也能提升理财收益

1987 学习 · 405 问题

查看课程

相似问题

交作业

回答 1

交作业

回答 2

交作业

回答 2

交作业

回答 3