通过jqdata分析周内不同时间的涨跌幅与上涨概率

由于使用两个账户进行定投,定投周期为每周,一个在周一进行定投,另一个在周四进行定投,昨天定投扣款后,总感觉周一定投时上涨的概率比周四上涨的概率大,于是有了本篇分析,分析的结果如下:

  1. 从历史角度来看(2007年至今),有且仅有周四的涨跌幅为负数,且有且仅有周四上涨概率小于50%
  2. 统计2018年年初至今的数据,周一依旧比周四涨幅与上涨概率大
  3. 2018年至今,周三的行情比周四还差,无论是涨跌幅还是概率都差不少

In [1]:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import  jqdatasdk
import talib

In [3]:

jqdatasdk.auth(tel, pwd)
auth success

选取历史(2007年1月1日到2018年11月19日)数据进行计算

In [121]:

hs300_df = jqdatasdk.get_price('000300.XSHG', start_date='2007-01-01', end_date='2018-11-30', frequency='daily', fields=['open', 'close', 'high', 'low'])

In [122]:

hs300_df.head()

Out[122]:

 openclosehighlow
2007-01-042073.2502067.0922139.4942054.242
2007-01-052051.1522072.8832083.4022030.762
2007-01-082072.0052131.5562131.7372071.721
2007-01-092137.4852200.0862201.3602128.064
2007-01-102210.7572255.9662255.9662194.770

In [123]:

hs300_df['date'] = hs300_df.index

In [124]:

import time,datetime

# 计算当天为周几
def get_week_day(date):
  week_day_dict = {
    0 : '星期一',
    1 : '星期二',
    2 : '星期三',
    3 : '星期四',
    4 : '星期五',
    5 : '星期六',
    6 : '星期天',
  }
  day = date.weekday()
  return week_day_dict[day]

In [125]:

hs300_df['weekday'] = hs300_df['date'].apply(lambda x : get_week_day(x))

In [126]:

hs300_df.head()

Out[126]:

 openclosehighlowdateweekday
2007-01-042073.2502067.0922139.4942054.2422007-01-04星期四
2007-01-052051.1522072.8832083.4022030.7622007-01-05星期五
2007-01-082072.0052131.5562131.7372071.7212007-01-08星期一
2007-01-092137.4852200.0862201.3602128.0642007-01-09星期二
2007-01-102210.7572255.9662255.9662194.7702007-01-10星期三

In [127]:

# 计算当日的收益率
hs300_df['dr%'] = (hs300_df['close'] - hs300_df['open']) / hs300_df['open'] * 100

In [128]:

hs300_df.head()

Out[128]:

 openclosehighlowdateweekdaydr%
2007-01-042073.2502067.0922139.4942054.2422007-01-04星期四-0.297022
2007-01-052051.1522072.8832083.4022030.7622007-01-05星期五1.059453
2007-01-082072.0052131.5562131.7372071.7212007-01-08星期一2.874076
2007-01-092137.4852200.0862201.3602128.0642007-01-09星期二2.928722
2007-01-102210.7572255.9662255.9662194.7702007-01-10星期三2.044956

In [129]:

weekday_group = hs300_df.groupby('weekday')

In [130]:

# 计算周一到周五的每日平均涨跌幅
weekday_group['dr%'].mean()

Out[130]:

weekday
星期一    0.151212
星期三    0.196211
星期二    0.105253
星期五    0.191623
星期四   -0.045323
Name: dr%, dtype: float64

In [131]:

# 计算周一到周五的每日的上涨概率
weekday_group['dr%'].agg(lambda x : len(x[x > 0]) / len(x))

Out[131]:

weekday
星期一    0.570922
星期三    0.524618
星期二    0.566781
星期五    0.561313
星期四    0.469983
Name: dr%, dtype: float64

选取今年(2018年1月1日到2018年11月30日)的数据进行计算

In [132]:

hs300_df = jqdatasdk.get_price('000300.XSHG', start_date='2018-01-01', end_date='2018-11-30', frequency='daily', fields=['open', 'close', 'high', 'low'])

In [133]:

hs300_df['date'] = hs300_df.index
hs300_df['weekday'] = hs300_df['date'].apply(lambda x : get_week_day(x))
hs300_df['dr%'] = (hs300_df['close'] - hs300_df['open']) / hs300_df['open'] * 100
weekday_group = hs300_df.groupby('weekday')

In [134]:

# 计算周一到周五的每日平均涨跌幅
weekday_group['dr%'].mean()

Out[134]:

weekday
星期一    0.105922
星期三   -0.335314
星期二    0.227191
星期五    0.161232
星期四   -0.060633
Name: dr%, dtype: float64

In [135]:

# 计算周一到周五的每日的上涨概率
weekday_group['dr%'].agg(lambda x : len(x[x > 0]) / len(x))

Out[135]:

weekday
星期一    0.547619
星期三    0.347826
星期二    0.555556
星期五    0.600000
星期四    0.400000
Name: dr%, dtype: float64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值