Tushare是一个免费提供各类金融数据 , 助力智能投资与创新型投资的平台。在这个平台上可以免费获得股票、期货和外汇的各种数据。(Tushare ID:492265)
本次我就使用Tushare来获取股票数据,模拟股票交易。
一、Tushare的注册安装
1、Tushare注册链接:https://tushare.pro/register?reg=492265,注册完成之后进入个人主页
; 2、完善个人信息
完善好个人资料可以获得20积分,加上注册送的100积分,可以用股票的行情数据,对于练手来说,够用了。如果你是学生的话,还可以进行学生认证,所有接口数据都可以使用。
3、TOKEN获取
点击接口TOKEN(复制自己的TOKEN,之后介绍TOKEN如何使用,注意:这个TOKEN是你自己的,不要外传)
二、使用Tushare进行股票分析
需求:
- 使用tushare包获取某股票的历史行情数据。
- 输出该股票所有收盘比开盘上涨3%以上的日期。
- 输出该股票所有开盘比前日收盘跌幅超过2%的日期。
- 假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
安装tushare包
pip install tushare
导入需要的包
import tushare as ts
import pandas as pd
from pandas import DataFrame,Series
import numpy as np
pro = ts.pro_api('你的TOKEN')
df = pro.daily(ts_code='600519.SH',start_date='20000101',fields='trade_date,open,high,low,close,pre_close')
获取到的股票历史行情数据,此处以茅台为例,股票代码为:600519.SH,可以根据自己需求换别的。
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.set_index('trade_date',inplace=True)
df.loc[(df['close'] - df['open']) / df['open'] > 0.03].index
df.loc[(df['open'] - df['pre_close']) / df['pre_close'] < -0.02].index
df_month = df.resample('M').first()
cost = df_monthly['open'].sum()*100
df_year = df.resample('A').last()[:-1]
resv = df_year['open'].sum()*1200
last_monry = 100*df['close'][0]
resv+last_monry-cost
需求:双均线策略制定
- 使用tushare包获取某股票的历史行情数据
- 计算该股票历史数据的5日均线和30日均线
- 分析输出所有金叉日期和死叉日期
- 如果我从假如我从2010年1月1日开始,初始资金为100000元,金叉尽量买入,死叉全部卖出,则到今天为止,我的炒股收益率如何?
继续使用上面获取到的茅台数据进行操作
df = df[::-1]
df
ma5 = df['close'].rolling(5).mean()
ma30 = df['close'].rolling(30).mean()
将5日均线与30日均线画出来
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(ma5[30::])
plt.plot(ma30[30::])
plt.plot(ma5[100:500])
plt.plot(ma30[100:500])
分析输出所有金叉日期和死叉日期
ma5 = ma5[30:]
ma30 = ma30[30:]
df = df[30:]
s1 = ma5 < ma30
s2 = ma5 > ma30
death_ex = s1 & s2.shift(1)
death_date = df.loc[death_ex].index
golden_ex = ~(s1 | s2.shift(1))
golden_date = df.loc[golden_ex].index
s1 = Series(data=1,index=golden_date)
s2 = Series(data=0,index=death_date)
s = s1.append(s2)
s = s.sort_index()
s
如果我从假如我从2010年1月1日开始,初始资金为100000元,金叉尽量买入,死叉全部卖出,则到今天为止,我的炒股收益率如何?
first_monry = 100000
money = first_monry
hold = 0
for i in range(len(s)):
time = s.index[i]
p = df.loc[time]['open']
if s[i] == 1:
hand_count = money // (p*100)
hold = hand_count * 100
money -= (hold * p)
else:
money += (p_death * hold)
hold = 0
last_monry = hold * df['close'][-1]
money + last_monry - first_monry
Original: https://blog.csdn.net/weixin_44800021/article/details/122681649
Author: 吕梦柯
Title: Python+Tushare股票数据分析
相关阅读
Title: 深度理解感受野(一)什么是感受野?
Title: 深度理解感受野(一)什么是感受野?
Introduction
经典目标检测和最新目标跟踪都用到了RPN(region proposal network),锚框(anchor)是RPN的基础,感受野(receptive field, RF)是anchor的基础。本文介绍感受野及其计算方法,和有效感受野概念
什么是感受野?
感受野与视觉
- 感受野(receptive field)这一概念来自于生物神经科学,是指感觉系统中的任一神经元,其所受到的感受器神经元的支配范围。感受器神经元就是指接收感觉信号的最初级神经元
- 视觉来自于光在个体感受器上的投射,它将客观世界的物理信息转化为人们可以感知的神经脉冲信号。
[En]
Vision comes from the projection of light on individual receptors, which converts the physical information of the objective world into nerve pulse signals that people can perceive.*
感受野的定义
One of the basic concepts in deep CNNs is the receptive field, or field of view, of a unit in a certain layer in the network. Unlike in fully connected networks, where the value of each unit depends on the entire input to the network, a unit in convolutional networks only depends on a region of the input.
This region in the input is the receptive field for that unit.
- 在卷积神经网络中,感受野(receptive field)不像输出由整个网络输入所决定的全连接网络那样,它是可以存在于网络中任意某层,输出仅由输入部分决定
- 就是指输出feature map上某个元素受输入图像上影响的区域
![En]
! [] (https://img-blog.csdnimg.cn/20210525205712705.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDc1NjAwMA==,size_16,color_FFFFFF,t_70)
如图所示,共有3个feature map输出。该图说明了2个33的conv可以代替1个55的conv层
- Layer1中方格可看作是一个元素,33的绿色方格则是一个33的卷积核
- Layer2由一个33的卷积核经过卷积运算输出,输出尺寸是33(假设stride=1,padding=0)显而易见,layer2中的绿色方格是由layer1中3*3的绿色方格所决定的。那么这一位置的感受野就是layer1中的绿色方格区域
- Layer3由layer2经过3*3的conv层输出,只有一个
; 理论感受野
https://distill.pub/2019/computing-receptive-fields/
如何计算?
卷积层的理论感受野可以由递推公式计算出来。首先定义下参数意义,r r r代表感受野l l l代表层数k k k代表卷积核大小s s s代表步长
r l = r l − 1 + ( k l − 1 ) ∗ ∏ i = 0 l − 1 s i r_l = r_{l-1}+(k_l - 1)*\prod_{i=0}^{l-1}{s_i}r l =r l −1 +(k l −1 )∗i =0 ∏l −1 s i
最大池化层的理论感受野
r l = r l − 1 + ( k l − 1 ) r_l = r_{l-1}+(k_l - 1)r l =r l −1 +(k l −1 )
图中,由1个conv33(stride=1,pad=1),1个ReLu层,1个22MaxPooling层(k=2,s=2,p=0)组成。f 0 f_0 f 0 为输入层,f 4 f_4 f 4 层 为输出层。很明显能够发现,f 4 f_4 f 4 层的感受野为6。推导过程如下
- f 1 f_1 f 1 默认感受野为1,即r 0 = 1 r_0=1 r 0 =1
- f 2 f_2 f 2 层为33conv层,r 1 = r 0 + ( k 1 − 1 ) ∗ ∏ i = 0 0 s 0 r_1=r_0+(k_1-1)\prod_{i=0}^{0}{s_0}r 1 =r 0 +(k 1 −1 )∗∏i =0 0 s 0 即r 1 = 1 + ( 3 − 1 ) ∗ 1 = 3 r_1=1+(3-1)*1=3 r 1 =1 +(3 −1 )∗1 =3
- f 3 f_3 f 3 层为激活函数层ReLu,不改变理论感受野大小(也不是没作用,有效感受野里面会提到它的作用)r 2 = 3 r_2=3 r 2 =3
- f 4 f_4 f 4 层为33conv层,和上一个conv层一样,r 3 = 3 + ( 3 − 1 ) ∗ 1 = 5 r_3=3+(3-1)1=5 r 3 =3 +(3 −1 )∗1 =5
- f 5 f_5 f 5 层为22maxpooling层,r 4 = 5 + ( 2 − 1 ) ∗ 1 = 6 r_4=5+(2-1)1=6 r 4 =5 +(2 −1 )∗1 =6
按照上述方法可以计算出主流的backbone理论感受野大小,如下图所示。 数据来自https://distill.pub/2019/computing-receptive-fields/
从感受野的计算公式很明显能够看出, stride
kernel_size
rf_size
都会对其产生影响,其中 srtide
对感受野大小起决定性作用。
; 有效感受野
有效感受野是在NIPS2016中的Understanding the Effective Receptive Field in Deep Convolutional Neural Networks提出的。
- 有效感受野是一种超参数, 无法像理论感受野那样被精确计算。但是文献[2]中采用求偏导数的方法对每个图像上的像素点,计算出他们对输出特征图的贡献值,并可视化。
- 有限感受野往往比理论感受野要小一些,关系大概是 anchor
- 有效感受野呈 高斯分布,并不是所有像素点的贡献都相同。直观的来说, *感受野中间的像素对于输出会有更大的影响
以下内容整理自:https://blog.csdn.net/DD_PP_JJ/article/details/104448825
采用不同初始化权重的方法和添加ReLU作为激活函数进行实验。Uniform初始化方法使卷积核的权重都为1,没有非线性性质。引入ReLU之后,网络中增加了非线性性,分布变得 a bit less Gaussian
不同的激活函数对ERF的分布也有影响,这说明ERF的分布也取决于 input。ReLU的高斯分布没有另外两个平滑,生成了一个较少的高斯分布,ReLU导致很大一部分梯度归零。上采样和空洞卷积可以增大感受野
文章中也给出了答案,见上图,随着网络层数的加深,实际有效的感受野是程n \sqrt{n}n 级别增长。而右图展示了随着网络层数的加深,有效感受野占理论感受野的比例是按照1 n \frac{1}{\sqrt{n}}n 1 级别进行缩减的。其中需要注意的是实际感受野的计算方式:若像素值大于(1-96.45%)的中心像素值,就认为该像素处于实际感受野中
哪些操作可以改变感受野?
- Convolution
- DeConvolution
- Pooling
- Residential connection
- Concatenation
参考文献
[1] A guide to convolution arithmetic for deep learning
[2] Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
Original: https://blog.csdn.net/weixin_40756000/article/details/117264194
Author: 黑夜里游荡
Title: 深度理解感受野(一)什么是感受野?Original: https://blog.csdn.net/weixin_40756000/article/details/117264194
Author: 黑夜里游荡
Title: 深度理解感受野(一)什么是感受野?

Tensorflow2(keras)-图像预处理操作(tf.EagerTensor和tf.Tensor)

【NLP】自然语言处理学习笔记(三)语音合成

Tensorflow-gpu安装超详细!!!

【Tensorflow 2】使用迁移学习(MobileNet)完成图像分类任务

1.【Pytorch编程】张量的概念、构建方法与存储方式理解

python解决系列问题:AttributeError: module ‘tensorflow‘ has no attribute ‘AUTO_REUSE‘、‘get_variable‘等等

Windows10 Tensorflow 安装(GPU版本)Jupyter Notebook测试 Keras安装

Tensorflow2.0学习-保存和加载模型 (五)

2021新网银行金融科技挑战赛 Baseline

Python+scrcpy+pyminitouch实现自动化(四)——实现语音识别自动打卡机器人

手眼标定原理(眼在手上和眼在手外)

基于openpose的K聚类算法手势识别

PRML 概率分布

faiss-3: 基础模块
