交作业
来源: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
同学优秀👍
00