我想对标准普尔500指数实施K-最近邻算法来预测未来价格,并通过scikit-learn库开发python定量算法交易模型 . 虽然我对kNN算法有基本的了解,但我是python机器学习编码的完整新手,所以如果有人能帮助我,我会很高兴 .
这是我的模拟逻辑
-
资产:标准普尔500指数月度价格(可与ETF一起投资)
-
逻辑
-
根据每个月底的kNN算法预测下个月(上涨或下跌)的价格方向---->预测:买入标准普尔500指数,下跌:持有现金(假设指数3%年回报)
-
训练数据集:最近滚动12个月度数据(训练数据集随着时间的推移不断变化,就像移动平均值一样)
-
自变量:近期3,6,9,12蛾返回,近12个月滚动月度回报标准差
-
因变量:下个月的回报表示为正数或负数
这是我的代码 . 我可以编写基本数据集,但不知道编码主算法和模拟逻辑 . 有人可以完成这个代码吗?
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import pandas_datareader.data as web
def price(stock, start):
price = web.DataReader(name=stock, data_source='yahoo', start=start)['Adj Close']
return price.div(price.iat[0]).resample('M').last().to_frame('price')
a = price('SPY','2000-01-01')
a['cash'] = [(1.03**(1/12))**x for x in range(len(a.index))]
a['R3'] = a.price/a.price.shift(3)
a['R6'] = a.price/a.price.shift(6)
a['R9'] = a.price/a.price.shift(9)
a['R12'] = a.price/a.price.shift(12)
a['rollingstd'] = a.price.pct_change().rolling(12).std()
1 回答
我做到了 . 虽然这是使用分形动量得分的另一种策略版本,但它可能会有所帮助