Python机器学习之预测黄金价格python

2022-01-1911:06:04作者:老贡讲Python

本文使用机器学习方法来预测最重要的贵金属之一黄金的价格。我们将创建一个线性回归模型,该模型从过去的黄金ETF(GLD)价格中获取信息,并返回对第二天黄金ETF价格的预测。GLD是直接投资实物黄金的最大ETF。(扫描本文最下方二维码获取全部完整源码和JupyterNotebook文件打包下载。)

首先要做的是:导入所有必要库。

Df=yf.download('GLD','2008-01-01','2020-6-22',auto_adjust=True)DfDf=Df[['Close']]DfDf=Df.dropna()Df.Close.plot(figsize=(10,7),color='r')plt.ylabel("GoldETFPrices")plt.title("GoldETFPriceSeries")plt.show()

解释变量是一个被操纵以确定第二天黄金ETF价格的变量。简单地说,它们是我们想要用来预测黄金ETF价格的特征。

该策略中的解释变量是过去3天和9天的移动平均线。我们使用dropna()函数删除NaN值并将特征变量存储在X中。

但是,您可以向X添加更多您认为对预测黄金ETF价格有用的变量。这些变量可以是技术指标、其他ETF的价格,例如黄金矿工ETF(GDX)或石油ETF(USO),或美国经济数据。

同样,因变量取决于解释变量的值。简而言之,这是我们试图预测的黄金ETF价格。我们将黄金ETF价格存储在y中。

Df['S_3']=Df['Close'].rolling(window=3).mean()Df['S_9']=Df['Close'].rolling(window=9).mean()Df['next_day_price']=Df['Close'].shift(-1)DfDf=Df.dropna()X=Df[['S_3','S_9']]y=Df['next_day_price']将数据拆分为训练和测试数据集在这一步中,我们将预测变量和输出数据拆分为训练数据和测试数据。通过将输入与预期输出配对,训练数据用于创建线性回归模型。

测试数据用于估计模型的训练效果。

?前80%的数据用于训练,剩余的数据用于测试

?X_train&y_train是训练数据集

?X_test&y_test是测试数据集

t=.8t=int(t*len(Df))XX_train=X[:t]yy_train=y[:t]XX_test=X[t:]yy_test=y[t:]创建线性回归模型我们现在将创建一个线性回归模型。但是,什么是线性回归?

如果我们试图捕捉“x”和“y”变量之间的数学关系,通过对散点图拟合一条线,“最好”根据“x”的观察值解释“y”的观察值,那么这样的方程x和y之间的关系称为线性回归分析。

为了进一步分解,回归用自变量解释了因变量的变化。因变量“y”是您要预测的变量。自变量“x”是您用来预测因变量的解释变量。以下回归方程描述了这种关系:

Y=m1*X1+m2*X2+CGoldETFprice=m1*3daysmovingaverage+m2*15daysmovingaverage+c然后我们使用拟合方法拟合自变量和因变量(x和y)以生成回归系数和常数。

linear=LinearRegression().fit(X_train,y_train)print("LinearRegressionmodel")print("GoldETFPrice(y)=%.2f*3DaysMovingAverage(x1)\+%.2f*9DaysMovingAverage(x2)\+%.2f(constant)"%(linear.coef_[0],linear.coef_[1],linear.intercept_))输出线性回归模型:

黄金ETF价格(y)=1.20*3天移动平均线(x1)+-0.21*9天移动平均线(x2)+0.43(常数)

现在,是时候检查模型是否在测试数据集中工作了。我们使用使用训练数据集创建的线性模型来预测黄金ETF价格。预测方法找到给定解释变量X的黄金ETF价格(y)。

predicted_price=linear.predict(X_test)predicted_price=pd.DataFrame(predicted_price,index=y_test.index,columns=['price'])predicted_price.plot(figsize=(10,7))y_test.plot()plt.legend(['predicted_price','actual_price'])plt.ylabel("GoldETFPrice")plt.show()

该图显示了黄金ETF的预测价格和实际价格。

现在,让我们使用score()函数计算拟合优度。

r2_score=linear.score(X[t:],y[t:])*100float("{0:.2f}".format(r2_score))输出:

99.21

可以看出,模型的R平方为99.21%。R平方始终介于0和100%之间。接近100%的分数表明该模型很好地解释了黄金ETF的价格。

让我们计算一下这个策略的累积收益来分析它的表现。

累计收益计算步骤如下:

?生成黄金价格的每日百分比变化

?当第二天的预测价格高于当天的预测价格时,创建一个以“1”表示的买入交易信号

?通过将每日百分比变化乘以交易信号来计算策略回报。

?最后,我们将绘制累积收益图

gold=pd.DataFrame()gold['price']=Df[t:]['Close']gold['predicted_price_next_day']=predicted_pricegold['actual_price_next_day']=y_testgold['gold_returns']=gold['price'].pct_change().shift(-1)gold['signal']=np.where(gold.predicted_price_next_day.shift(1)

我们还将计算夏普比:

sharpe=gold['strategy_returns'].mean()/gold['strategy_returns'].std()*(252**0.5)'SharpeRatio%.2f'%(sharpe)输出如下:

您可以使用以下代码来预测黄金价格,并给出我们应该购买GLD还是不持仓的交易信号:

importdatetimeasdtcurrent_date=dt.datetime.now()data=yf.download('GLD','2008-06-01',current_date,auto_adjust=True)data['S_3']=data['Close'].rolling(window=3).mean()data['S_9']=data['Close'].rolling(window=9).mean()datadata=data.dropna()data['predicted_gold_price']=linear.predict(data[['S_3','S_9']])data['signal']=np.where(data.predicted_gold_price.shift(1)

THE END
1.华夏中证细分有色金属产业主题ETF基金行情优势走势评级2024-12-02 华夏中证细分有色金属产业主题ETF 1.0233 华夏中证细分有色金属产业主题ETF基金表现 时间区间 涨跌幅 今年以来 13.05% 过去一月 -3.20% 过去一年 15.07% 过去三年 -20.66% 过去五年 -- 成立以来 2.33% 数据来源:大智慧财汇数据科技有限公司 截止日期:2024-12-02基金https://m.chinaamc.com/fund/516650/index.shtml
2.易方达黄金ETF(159934),易方达黄金ETF(159934)净值基金净值基金类型:COMM、ETF 成立日期:2013-11-29 基金规模:16.84亿份 基金经理:鲍杰 基金全称:易方达黄金交易型开放式证券投资基金基金管理人:易方达基金管理有限公司 基金净值[2024-12-04] 5.8661 日增长率:-0.14%累计净值:2.3898 近一周增长率 0.32% 近一月增长率 https://www.zlfund.cn/fund/159934/
3.华夏黄金ETF基金行情优势走势评级(基金代码:518850) 指数型 中高风险(R4) 免费开户 28.88% 近一年涨跌幅 5.9060 净值(2024-11-28) -0.33% 日涨跌幅 基金经理 荣膺 交易状态 开放申购 业绩走势 单位净值走势 累计净值走势 历史业绩 历史净值 项目 净值增长率(%) 今年以来 26.74 过去一周 https://www.chinaamc.com.cn/fund/518850/index.shtml
4.ETF型基金,ETF基金净值每日ETF基金净值查询全部 股票型 混合型 债券型 保本型 指数型 ETF联接 QDII ETF LOF 字母查找: 所有 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 每日开放式基金净值一览|共182只(每个交易日 16:00~23:00 动态更新基金净值) 自选 比较 序号 代码 基金简称 2024-12-05 2024-12-04 日http://www.jjmmw.com/fund/s8o5d0f7p1a0m/
5.华夏黄金ETF联接A基金行情优势走势评级(基金代码:008701) 指数型 中高风险(R4) 立即购买立即定投免费开户 28.87% 近一年涨跌幅 1.4097 净值(2024-12-11) 0.78% 日涨跌幅 基金经理 荣膺 交易状态 开放申购 业绩走势 单位净值走势 累计净值走势 历史业绩 历史净值 项目 净值增长率(%) 今年以来 http://www.hxam.com/fund/008701/index.shtml
6.江西银行代销产品公示清单(2016年9月)江西银行代销基金产品一览表 基金管理人名称 产品代码 产品名称 产品类型 易方达基金管理有限公司 000950 易沪深 300 非银 ETF 联接 股票型基金 110025 易方达资源行业股票型证券投资基金 股票型基金 110011 易方达中小盘股票型证券投资基金 股票型基金 110018 易方达增强回报债券型证券投资基金 B 类 债券型基金https://www.jx-bank.com/col210/2017.html
7.4月3日贵金属龙头股排名前十:湖南黄金金贵银业涨超4%4月3日,贵金属板块大幅拉升,截至目前上涨4.15%。据数据显示,板块内的四川黄金上涨8.46%,湖南黄金、金贵银业涨超4%,紫金矿业、赤峰黄金、西部黄金涨超3%,山东黄金、恒邦股份涨超2%,中金黄金、银泰黄金涨超1%。 贵金属龙头股排名前十股票一览表(总市值):https://m.cngold.org/stock/xw9235812.html
8.沪深股转贵金属市场交易手续费一览表沪、深、股转、贵金属市场交易手续费一览表 开户收费标准https://www.csc108.com/articleDetail?fn=0&name=FL&docId=4815247
9.一表速查跨境型ETF一表速查跨境型ETF 申万宏源证券上海北京西路营业部 2024年12月11日 10:04 上海 阅读原文微信扫一扫关注该公众号 https://mp.weixin.qq.com/s?__biz=MjM5NDYwODIwNQ==&mid=2650464317&idx=1&sn=6186425d3bd52eaa089b10f26d3ff21e&chksm=bfcba6c759d00bac2ac1d58da9e91d2feb8cb053dbafa95b12c156c824e2f94f841debb19165&scene=27
10.最新每日开放式基金净值查询一览表基金速查网提供基金净值查询,天天基金净值增长排名,最新每日开放式基金净值查询一览表,按日期查询每天基金净值历史数据.https://www.dayfund.cn/dayvalue_5.html?date=%E6%98%93%E6%96%B9%E8%BE%BE50%EF%BC%8C2017
11.银华中证港股通消费主题交易型开放式指数证券投资基金招募说明书1、指数名称和代码 指数名称:中证港股通消费主题指数 指数简称:HKC消费 指数代码:931454(港元)/931455(人民币) 2、指数基日和基点 该指数以2014年11月14日为基日,以1000点为基点。 3、样本选取方法 (1)样本空间 同中证港股通综合指数的样本空间 http://www.howbuy.com/fund/info/dtl/1597354216045.htm
12.每日开放式基金净值表郑重声明:天天基金网发布此信息目的在于传播更多信息,与本网站立场无关。天天基金网不保证该信息(包括但不限于文字、视频、音频、数据及图表)全部或者部分内容的准确性、真实性、完整性、有效性、及时性、原创性等。相关信息并未经过本网站证实,不对您构成任何投资决策建议,据此操作,风险自担。数据来源:东方财富https://fund.eastmoney.com/fund.html
13.中国四大银行及17家全国性银行关于银行询证函业务办理的最新公告[2020]21号)(以下简称“《操作指引》”)要求,函证事项包括:银行存款、银行借款、注销账户、委托贷款、担保、银行承兑汇票、商业汇票贴现、商业汇票托收、信用证、外汇买卖合约、证券或其他产权文件托管、银行理财产品、资金归集以及其他(含贵金属、外汇期权、外币利率互换、人民币利率互换、人民币货币掉期和外汇货币掉期)https://m.lejucaijing.com/news-7017324195524951688.html
14.买入科创板ETF(588090)讨论交流,股票股价,行情,新闻,研究报告科创板ETF( sh588090 )模拟买入+自选股吧 --- ¥1.001 涨停-- 跌停-- 昨收:1.020 今开:1.https://www.55188.com/stocks-sh588090.html
15.记录一些同花顺,同方财富,通达信股票,基金api接口股票api接口接口说明:所有ETF代码 地址:https://stockapi.com.cn/v1/fund/etf 请求示例: https://stockapi.com.cn/v1/fund/etf 1 返回值说明: [{name:"code", type:"int", demo:"20000", desc:"返回码"},{name:"msg", type:"string", demo:"success", desc:"状态"},{name:"data", type:"Object[]"https://blog.csdn.net/u014496893/article/details/124975559
16.中泰证券13、与去年同期相比,失业率分别下降了03和02个有色金属行业百分点。 14、10月份欧元区的PPI同比下降了32%(前值-34%)4)十一月全球制造业环比上行:11月全球制造业PMI为50,环上行逻辑强化比+06,上升至荣枯线,全球经济复苏景气度持续好转。 15、贵金属:黄金ETF持仓环比下降,中国央行再次增持黄央行重启购金金截至12http://www.huiyunyan.com/doc-45879fd0bfa1dc5fc1f38bc5817c266a.html
17.买下地球系列债券系列ETF 总体系列 美国系列 注:美国系列因类别繁多,所以无法全部列出。 公司债系列 高收益债系列 新兴债系列 反向(一倍)系列 抗通膨系列 汇率系列ETF 放空(一倍)系列 原油能源系列ETF 原油系列 能源系列 放空(一倍)系列 贵金属系列ETF 黄金 白银 http://www.360doc.com/content/16/0529/18/19828857_563312998.shtml
18.黄金ETF(518880)股票股价股价行情财报数据报告黄金ETF(518880) 简介:黄金ETF 基金名称:华安易富黄金交易型开放式证券投资基金 成立日期:2013-07-18 基金管理人:华安基金管理有限公司 基金经理:许之彦 今开:5.915https://xueqiu.com/S/SH518880/