使用 Python 和 Matplotlib下载美股数据

news2025/8/13 3:53:10

介绍:

提示:例如

这是关于使用机器学习创建交易策略的系列文章中的第一篇。关于机器学习在交易中的实际应用,我主要参考的是 Marco Lopez de Prado 的金融机器学习进展。

尽管在人工智能方面有多年经验,但我从未将其应用于交易,更喜欢每周/每月期权交易。在本文中,我专注于寻找容易获得的数据并开始摄取它们。虽然使用公共和广泛使用的数据不会为交易提供高质量的信号:许多其他交易者有可能分析和建立模型。相反,我想使用一种渐进的方法,并从非常幼稚的模型迭代到更复杂(和有利可图)的模型。

作为起点,我下载并可视化数据。在本练习中,我重点关注烛台图,这是交易图表的实际标准。我想分享我的整个学习过程,包括死胡同和我用来完善脚本的所有步骤。因此,我可能会编写次优代码并展示重构和修订。与其编写优雅、抽象且难以阅读的代码,我更愿意分享我通往解决方案的实际路径。


下载数据:

提示:为了简单起见,我使用Analytics Vidhya 帖子作为指导,从雅虎财经下载了与 Apple(代码:AAPL)相关的数据。我需要安装以下软件包:

例如:

  1. pip3 安装 yfinance

导入数据:

提示:这里可以添加计划学习的时间

  • 首先,我将 Apple 数据从 2019-01-01 到 2021-06-12 导入到 pandas 数据框中:


import pandas as pd
import yfinance as yf


df = yf.download(
    "AAPL",
    start="2019-01-01",
    end="2021-06-12",
    progress=False,
)
df.head()

数据如下所示:
在这里插入图片描述
这种格式通常称为OHLC:它包含给定时间窗口的开盘价、最高价、最低价和收盘价;在此示例中,每日开盘价、最高价、最低价和收盘价。时间窗口是数据框(日期列)的索引。此外,还有调整收盘价,即(来自雅虎文档):

学习产出:

提示:这里统计学习计划的总量

  • 调整后的收盘价是对所有适用的拆分和股息分配进行调整后的收盘价。
    因此,如果公司派发股息或拆分,则会调整价格并在此处报告标准化值。最后,有一个 Volume 列,其中包含股票的每日交易量。调整后的收盘价作为时间函数的表示可以通过 matplotlib 使用一些 Python 代码获得:
import matplotlib.pyplot as plt


plt.rc("font", size=14)
plt.figure(figsize=(16, 9))
plt.plot(df.index, df["Adj Close"], lw=2)
plt.grid()
plt.savefig("apple.png", dpi=300, bbox_inches="tight")

在这里插入图片描述

构建图表

引用Investopedia的话,烛台图代表给定时间窗口内的价格。在这个例子中,我考虑的是 Apple 的每日价格。

蜡烛的“主体”,即矩形,具有开盘价和收盘价的极值。如果白天价格上涨,则矩形为白色,否则为黑色。然而,有不同的惯例:与价格相关的蜡烛可以是绿色的,而与下降趋势相关的蜡烛可以是红色的。视觉上:

plt.figure(figsize=(16, 9))
plt.bar(
    temp.index,
    real_body_max - real_body_min,
    bottom=real_body_min,
    color=filled,
    edgecolor="black",
)
plt.vlines(temp.index, real_body_max, temp["High"], color="black")
plt.vlines(temp.index, temp["Low"], real_body_min, color="black")

在这里插入图片描述

def candlestick(df: pd.DataFrame) -> None:
    real_body_min = df[["Open", "Close"]].apply(min, axis=1)
    real_body_max = df[["Open", "Close"]].apply(max, axis=1)
    filled = np.where(df["Close"] < df["Open"], "black", "white")
    plt.figure(figsize=(16, 9))
    plt.bar(
        df.index,
        real_body_max - real_body_min,
        bottom=real_body_min,
        color=filled,
        edgecolor="black",
    )
    plt.vlines(df.index, real_body_max, df["High"], color="black")
    plt.vlines(df.index, df["Low"], real_body_min, color="black")


candlestick(temp)

修改视觉
下一步,我在制作情节时添加标题。这在处理更多代码时很有用。重构非常简单:

def candlestick(df: pd.DataFrame, title:str) -> None:
    real_body_min = df[["Open", "Close"]].apply(min, axis=1)
    real_body_max = df[["Open", "Close"]].apply(max, axis=1)
    filled = np.where(df["Close"] < df["Open"], "black", "white")
    
    
    plt.figure(figsize=(16, 9))
    plt.title(title)
    plt.bar(
        df.index,
        real_body_max - real_body_min,
        bottom=real_body_min,
        color=filled,
        edgecolor="black",
    )
    plt.vlines(df.index, real_body_max, df["High"], color="black")
    plt.vlines(df.index, df["Low"], real_body_min, color="black")


candlestick(df.iloc[20:23, :], "AAPL")

此外,我在绘图中添加了一个网格并更改了颜色约定:

def candlestick(df: pd.DataFrame, title: str) -> None:
    real_body_min = df[["Open", "Close"]].apply(min, axis=1)
    real_body_max = df[["Open", "Close"]].apply(max, axis=1)
    filled = np.where(df["Close"] < df["Open"], "red", "green")

    plt.figure(figsize=(16, 9))
    plt.title(title)
    plt.bar(
        df.index,
        real_body_max - real_body_min,
        bottom=real_body_min,
        color=filled,
        edgecolor=filled,
    )
    plt.grid()
    plt.vlines(df.index, real_body_max, df["High"], color=filled, lw=4)
    plt.vlines(df.index, df["Low"], real_body_min, color=filled, lw=4)


candlestick(df.iloc[20:23, :], "AAPL")


candlestick(df.iloc[20:23, :], "AAPL")

在这里插入图片描述

参考:https://medium.com/mlearning-ai/downloading-and-visualizing-financial-data-3b05bf835c55

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot中@Import三种使用方式

Import是一个非常有用的注解&#xff0c;它的长处在于你可以通过配置来控制是否注入该Bean&#xff0c;也可以通过条件来控制注入哪些Bean到Spring容器中。 比如我们熟悉的&#xff1a;EnableAsync 、EnableCaching、EnableScheduling等等统一采用的都是借助Import注解来实现的…

TMD,JVM类加载原来是这样的!!!!

接上篇&#xff1a;https://boxuegu.blog.csdn.net/article/details/128000217 通过字节码&#xff0c;我们了解了class文件的结构 通过运行数据区&#xff0c;我们了解了jvm内部的内存划分及结构 接下来&#xff0c;让我们看看&#xff0c;字节码怎么进入jvm的内存空间&…

电脑硬盘分区软件哪个好用,无损分区软件哪个好

为了合理地利用磁盘空间&#xff0c;会进行磁盘分区的操作。由于磁盘分区涉及到计算机相关的操作知识&#xff0c;很多的用户都不会。所以&#xff0c;只能借助于专业的磁盘分区工具&#xff0c;那么&#xff0c;电脑硬盘分区软件哪个好用&#xff1f;在本文中&#xff0c;易我…

走进常熟东南相互电子,看AI如何深入产业让工厂更智能

苏州常熟一家4万多平方米的生产车间内&#xff0c;一块块指甲盖大小的PCB电路板&#xff0c;在装有人工智能算法模型的的摄像头下&#xff0c;快速精准地完成外观检测&#xff0c;让头发丝大小的瑕疵无处可藏。 成立于2006年的东南相互电子&#xff0c;是一家集半导体与元器件…

ActiveMQ 反序列化漏洞(CVE-2015-5254)特征分析

介绍 Apache ActiveMQ是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持Java消息服务、集群、Spring Framework等。 Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞&#xff0c;该漏洞源于程序没有限制可在代理中序列…

Flutter高仿微信-第37篇-单聊-红包

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取红包功能的…

第二章:Pythonocc官方demo 案例47(获取物体的最优的包容体)

源代码&#xff1a; #!/usr/bin/env python ## ##This file is part of pythonOCC. ## ##pythonOCC is free software: you can redistribute it and/or modify ##it under the terms of the GNU Lesser General Public License as published by ##the Free Software Foundati…

Hadoop笔记-02 安装

文章目录1 VBOX安装CentOS71.1 安装VBOX软件1.2 下载CentOS7镜像文件1.3 初始化VBOX虚拟盘1.4 CentOS7网络配置1.5 CentOS7 yum源配置1.6 CentOS7 一般配置1.6.1关闭防火墙1.6.2 修改hostname1.6.3 配置DNS绑定1.6.4 关闭selinux2 JDK等基础安装配置2.1 安装JDK前检查2.2 安装t…

《Happy Birthday》游戏开发记录(送给朋友的小礼物)

游戏开发的学习记录⑦ 项目&#xff1a;Happy Birthday &#xff08;一个小小小游戏&#xff0c;基于unity给朋友做的一个生日小礼物&#x1f381;&#xff0c;之前都是礼物加信&#x1f48c;&#xff0c;今年想用自己的技能&#xff0c;把信的内容以另一种方式送给她。但在做…

STM32实战总结:HAL之modbus

什么是modbus&#xff1f; Modbus是一种串行通信协议&#xff0c;是Modicon公司&#xff08;现在的施耐德电气 Schneider Electric&#xff09;于1979年为使用可编程逻辑控制器&#xff08;PLC&#xff09;通信而发表。Modbus已经成为工业领域通信协议的业界标准&#xff08;De…

OsgEarth3基础3D图形实现

OsgEarth3基础3D图形实现主要难点Geometry能力姿态支持任意立方体 PolygonCube矩形立方体 Box圆锥体 Cone圆柱体 Cylinder四棱锥 Pyramid球体 Sphere源码示例ElementGeometry圆锥Cone这里尝试在通过OsgEarth提供的各种图形绘制方法&#xff0c;实现基础的3D图形。每个图形除了基…

推荐一个非常实用的程序员导航网站,码农必备!

这是一个非常好用的程序员导航网站&#xff0c;拥有该网站&#xff0c;就拥有一站式导航&#xff0c;再也不用为找网址而发愁了&#xff01; 先直接上网址&#xff1a;https://hao.panziye.com/ 现在来说说为什么推荐该程序员导航网站&#xff01; 1、支持自定义导航网址 该…

pytorch的安装教程

1. 官网 pytorch.org 哎呀呀呀&#xff0c;这是嘛呀哪里有download的按钮啊 别急 &#xff0c;往下拉就ok了哈哈 得看你自己电脑的配置了&#xff0c;自己选就行 、、注意哦 我们得复制一条指令 、 有anaconda的吧 在自己想要的环境里面 黏贴就行 有了 pytorch 可以干嘛呢…

Electron:BrowserView使用方法

我们知道&#xff0c;使用BrowserWindow来创建一个新的窗口&#xff0c;那么如果想在窗口中战胜斯更多的web内容&#xff0c;比如嵌入其他网站的内容&#xff0c;那就使用BrowserView了。 BrowserView的位置是相对于父窗口&#xff0c;比如&#xff1a; 代码如下&#xff1a;…

python项目使用pyinstaller打包

一、安装pyinstaller 打包要使用pyinstaller,使用pip来安装一下这个第三方库,打开命令行输入pip install pyinstaller 二、打包含有多个文件的python项目 1、首先打开电脑的cmd命令行,并切换到项目的根目录 项目路径输入cmd回车,可直接打开含有项目路径的cmd窗口 2、…

【推荐系统】行列式点过程(DPP)算法推导

一、背景 推荐系统主要解决用户和物品之间的相关性&#xff0c;以及推荐列表的多样性。相关性主要通过用户兴趣和物品之间的匹配程度来衡量&#xff0c;希望把用户感兴趣的物品推荐给用户&#xff0c;可以通过CTR预估模型来构建。多样性的衡量没有那么直观&#xff0c;一种方法…

std::unique_ptr(基础和仿写)

目录 一、C参考手册说明 1、解释注释 2、 参考代码 二、对std::unique_ptr分析 1、创建一个unique_ptr 2、无法进行复制构造和赋值操作 3、可以进行移动赋值 4.可以返回unique——ptr 5、管理动态数组 6、在容器中保存指针 三、对std::unique_ptr设计 1、对于的那个…

关于生命周期的面试题vue

1.第一次进入到页面&#xff08;组件&#xff09;会执行哪些生命周期 beforeCreate 》 没有data&#xff0c;没有elcreated 》 有data&#xff0c;没有elbeforeMount 》 有data&#xff0c;没有el&#xff08;其实已经在准备了&#xff09;mounted 》 有data&#xff0c;有el …

SRM供应商管理系统有什么作用?

目前国内稍具规模的企业都导入了企业资源管理ERP系统&#xff0c;实现了内部管理数字化转型&#xff0c;提升了内部各部门之间的协同能力。但是企业供应链管理涉及大量的外部资源&#xff0c;特别是数量庞大的供应商资源&#xff0c;而大部分的ERP系统很难实现采购同供应商之间…

感恩节,感谢2022的转变,有在好好生活!

疫情之下的感恩节 原来今天是感恩节。2022年快要结束了&#xff0c;在这样一个特别的节日里&#xff0c;就不写技术类文章了&#xff0c;写一写我的2022年&#xff0c;这一年&#xff0c;我的学习、工作和生活都有发生改变&#xff0c;感谢过去的时光&#xff0c;改变让我有在…