量化投资基础之常见金融数据读取方式(端口)

  • 点赞、关注再看,养成良好习惯
  • Life is short, U need Python

1. 前言

作为投资者,尤其是量化投资者,时常听到的一句话是“不要把鸡蛋放入同一个篮子中”,即所谓的分散投资策略。于是,从中可以看出分散投资可以降低投资风险,但是,投资者面对几千种各式各样的篮子,选择哪一个篮子,然后每个篮子该放多少个鸡蛋,大多数投资者仅仅凭自己的感觉或者一时冲动;另外,即使投资者选对篮子且鸡蛋数量也控制的很好,可是何时把手里的鸡蛋换成超额收益又是跟着感觉走。针对上述种种问题,量化投资破壳而出,专门解决上述问题的一种工具。

众所周知,金融数据是量化投资的基础和前提,投资者制定的量化投资策略都是建立在对金融数据分析的基础上。本文博主将带领大家尝试如何利用Python实现金融数据的获取。

据博主所知,目前在线编程量化投资平台众多,而且各种在线策略平台都支持Python语言(而且大多策略平台仅支持Python语言,且对应的Python课程资源以及策略案例众多,社区非常活跃),例如JoinQuant(聚宽量化交易平台)、BigQuant(点宽量化交易平台)、UQER(优矿量化交易平台)、WQ(万矿量化交易平台)等,这也是博主推出Python量化投资基础系列的原因。但是,本文不再涉及利用Python调取这些平台端口的金融数据(因为这些平台需要注册,且每天流量有限制,速度有点慢)。

2. 雅虎网

(1)官网https://www.yahoo.com/

(2)安装 pandas-datareader

(3)读取数据

import pandas_datareader.data as pdr 

# 读取标普500
sp500 = pdr.DataReader(name='^GSPC',data_source='yahoo',start='1/1/2020',end='2/26/2020)   
# 查看数据前5行
sp500.head()
# 输出数据
sp500.to_csv('sp500.csv')

或者

import pandas_datareader.data as pdr 

# 读取标普500
sp500 = pdr.get_data_yahoo('^GSPC',start='1/1/2020',end='20/2/2020') 
# 查看数据前5行
sp500.head()
# 输出数据
sp500.to_csv('sp500.csv')

在这里插入图片描述

  • 上证、深证标的
import pandas_datareader.data as pdr 

# 读取浦发银行:600000(上证)
stock_600000 = pdr.get_data_yahoo('600000.ss','1/1/2015','20/8/2015')   
stock_600000.head()

# 读取广发证券:000776(深证)
stock_000776 = pdr.get_data_yahoo('000776.sz','1/1/2015','20/8/2015')   
stock_000776.head()

3. TuShare

TuShare是一个免费、开源的python财经数据接口包。
主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。

考虑到Python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型。

(1)官网http://tushare.org/

(2)安装 tushare

(3)读取数据

import tushare as ts 

# 读取中国平安(601318)数据
zgpa = ts.get_hist_data('601318', start='2019-01-01', end='2019-02-20')
# 查看数据前5行
zgpa.head()
# 输出数据
zgpa.to_csv('zgpa.csv')

或者

import tushare as ts 

# 读取中国平安(601318)数据: ktype='D'/'W'/'M'(日/周/月); 默认日线数据
zgpa = ts.get_hist_data('601318', start='2019-01-01', end='2019-02-20', ktype='D')
# 查看数据前5行
zgpa.head()
# 输出数据
zgpa.to_csv('zgpa.csv')

在这里插入图片描述

  • 注: "ts.get_hist_data"接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2
import tushare as ts             # 事先安装:pip install tushare
pro = ts.pro_api()

df_000776 = pro.daily(ts_code='000776.SZ', start_date='20161017', end_date='20181117')       # 日线数据
df_000776 = pro.weekly(ts_code='000776.SZ', start_date='20161017', end_date='20181117')      # 周线数据
df_000776 = pro.monthly(ts_code='000776.SZ', start_date='20161017', end_date='20181117')     # 月线数据

df_000776.head()

4. BaoStock

(1)官网http://baostock.com/baostock/index.php

(2)安装baostock

(3)读取数据

import baostock as bs     

# 无需注册,直接输入此行代码即可
lg = bs.login(user_id="anonymous", password="123456")  
# 浦发银行数据(600000):frequency=’d'/'w'/'m'(日/周/月)
# 选取特征
fields = 'date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST'
rs = bs.query_history_k_data('sh.600000',fields,start_date='2019-01-01', end_date='2019-02-20', frequency="d")   
# 获取数据
pfyh = rs.get_data()
# 查看数据前5行
pfyh.head()
# 输出数据
pfyh.to_csv('pfyh.csv')

在这里插入图片描述

  • date(日期);code(代码);open(开盘价);high(最高价);high(最高价);low(最低价);close(收盘价);preclose(前收盘价);volume(成交量);amount(成交额);adjustflag(复权状态:1-后复权2-前复权3-不复权);turn(换手率);tradestatus(交易状态:1-正常0-停盘);pctChg(涨跌幅);peTTM(动态市盈率);pbMRQ(市净率);psTTM(市销率);pcfNcfTTM(市现率);isST(是否ST:1-是0-否)

  • 写作不易,切勿白剽
  • 博友们的点赞关注就是对博主坚持写作的最大鼓励
  • 持续更新,未完待续…

下一篇:量化投资基础(一)之 K线图策略

  • 24
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: ADC是指模数转换器(Analog-to-Digital Converter),用于将模拟信号转换为数字信号。正弦有效值是指正弦信号的有效振幅,也就是在一定时间内正弦信号的平均功率量度。 要读取正弦有效值,首先需要将正弦信号经过ADC进行采样和量化,将连续的模拟信号转换为离散的数字信号。采样率的选择应该至少是正弦信号频率的两倍,以避免混叠失真。 然后,对采样的数字信号进行数字信号处理,包括滤波和数字计算。其中最常用的方法是利用离散傅里叶变换(DFT)或快速傅里叶变换(FFT)对采样数据进行频谱分析,得到信号的频谱信息。 在频谱中,正弦信号的有效值可以通过计算信号的频谱幅值的平方和开方得到。由于正弦信号的频谱只在一个频率上有显著幅度,所以可以通过选取频谱幅值最大的频率分量来估算正弦有效值。这个频率通常就是正弦信号的频率,但仍需要进一步通过窗函数或零填充等方法获得更准确的估算值。 最后,将估算得到的正弦有效值进行合适的单位转换,得到用户所需要的物理量值。 总结来说,读取正弦有效值需要经过模拟信号到数字信号的转换,采样和量化,然后进行频谱分析,并选取信号频谱幅值最大的频率分量来估算正弦有效值。 ### 回答2: ADC(模拟-数字转换器)是将连续的模拟信号转换为离散的数字信号的设备。正弦波是一种常见的模拟信号。 要读取正弦波的有效值,需要经过以下几个步骤: 1. 确定采样频率:正弦波是一个周期性信号,需要以足够高的采样频率对其进行采样,以获取足够多的样本点。采样频率应该至少是正弦波频率的两倍(根据奈奎斯特定理)。 2. 连接正弦波信号和ADC:将正弦波信号与ADC的输入端连接,确保输入电压范围在ADC的工作范围内。 3. 采样和持续时间:对正弦波进行连续采样,持续一段时间,以获取足够多的样本点。持续时间应该足够长,以包含完整的正弦周期。 4. 数据处理和计算有效值:通过将采样的离散数据点进行平方和求和,然后除以采样点数量,再对结果进行平方根运算,即可计算出正弦波的有效值。 例如,假设我们以10kHz的采样频率对1kHz的正弦波进行采样,持续采样1秒钟。总共会采样到10,000个样本点。对这些样本点进行平方和求和后除以采样点数量,再对结果进行平方根运算,即可得到正弦波的有效值。 总之,要通过ADC读取正弦波的有效值,需要选择合适的采样频率、持续时间,并进行适当的数据处理和计算。 ### 回答3: ADC,即模数转换器,是一种将模拟信号转换为数字信号的电子设备。在读取正弦有效值时,我们需要先了解正弦信号的特点。 正弦信号是一种周期性的信号,其波形呈现为连续的波动,具有一定的幅值和频率。正弦信号的有效值代表了其振幅的大小,它是指一个周期内信号的平方平均值的平方根。 要在ADC中读取正弦有效值,可以按照以下步骤进行: 1. 选择合适的采样频率和位宽: 采样频率要满足奈奎斯特采样定理,即采样频率应大于信号的最高频率的两倍。位宽则决定了数字信号的精度,一般较高的位宽可以提高精度。 2. 进行模拟信号的采样: 将正弦信号接入ADC的输入端口,使其输出的模拟信号经过采样电路进行采样。采样电路会将模拟信号按照一定频率进行取样,得到一系列离散的采样数据。 3. 对采样数据进行数字化处理: 通过ADC将模拟信号转换为数字信号,得到一组离散的数字采样数据。这些采样数据代表了原始信号在不同时刻的幅值。 4. 计算有效值: 对采样数据进行处理,计算其平方值,然后对这些平方值进行平均并开方,最终得到正弦信号的有效值。 需要注意的是,正弦信号的有效值与其频率和幅值有关。在进行ADC读取时,要保证采样频率足够高,以避免信号失真;而足够大的位宽可以提高读取的精度。同时,由于正弦信号具有周期性,理论上只需对一个周期内的采样数据进行处理即可。 总而言之,通过适当的采样和数字化处理,ADC可以读取正弦信号的有效值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PyQuant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值