python能干什么?写个程序分析下股票/基金指数指导下自己基金定投时机吧

1. 想法: 最近在想学了python能做些什么,正好看了一篇python量化投资得介绍,就想能不能用python分析股票,预测股票涨跌。可仔细一想,真是so yang so simple,如果真可以预测,根本轮不到我们写了。哈哈,不过我发现自己在支付宝定投得基金,有时候连续都是买在高点,总是定投时间不对啊,所以就想分析一下这个基金看看周几涨的概率大些,在前一天定投,哈哈,是不是可行?比如沪深300指数相关基金就很多,可不可以分析出下面数据:

**2. 首先要拿到分析数据:**现在网上有很多财经网站可以使用爬虫自动爬到本地,爬取这部分这次先不聊,我们就手动下载到本地吧。推荐网易财经,下载方式如图:

3.程序实现
注意:下载得文件我放在了程序目录下方便

#!/usr/bin/env python
# coding=gbk
#author:liubiao
# @Desc  : 分析股票/基金指数,找出定投时机
import  pandas as pd
#周数字转成中文周
def get_week_day(dayweek):
  week_day_dict = {
    0 : '周一',
    1 : '周二',
    2 : '周三',
    3 : '周四',
    4 : '周五',
    5 : '周六',
    6 : '周天',
  }
  return week_day_dict[dayweek]

#合并股票文件
def get_concat(stocks):
    return [pd.read_csv(code+'.csv',encoding='gbk') for code in stocks]
#分析股票,找出周几涨得概率大些
def get_result(df,begaindate):
    #清洗数据,把值为None删掉
    df = df.loc[df['涨跌幅'] != 'None', :]
    #筛选出要分析日期之后得数据
    df=df.loc[pd.to_datetime(df['日期'])>pd.to_datetime(begaindate),:]
    #增加星期列
    df['星期']=pd.to_datetime(df['日期']).dt.dayofweek.map(get_week_day)
    #涨跌幅要设置成数组才能比较大小
    df['涨跌幅']=df['涨跌幅'].astype(float)
    #根据涨跌幅打标涨或跌
    df['涨跌']=df['涨跌幅'].map(lambda x : "涨" if x>=0 else "跌")
    #增加汇总显示得次数列,赋值无所谓,只要不为空就行
    df['次数']=[i for i in range(1,len(df)+1)]
    #分组汇总
    df=df.groupby(['名称','星期','涨跌'])['次数'].count()
    #分组汇总后返回得df不是DataFrame类型,不能使用pivot_table,所以重新创建一个新得df
    result=pd.DataFrame(df)
    result=result.pivot_table(index =['名称','星期'],columns=['涨跌'],values='次数',aggfunc='first').reset_index()
    #排序并保存结果
    result.sort_values(by='涨',ascending=False).to_csv('result.csv',index=False,encoding='gbk')
    return result

if __name__ == '__main__':
    #股票池
    stocks=['399300', '000001', '399001']
    df = pd.concat(get_concat(stocks), axis=0)
    get_result(df,'2019-01-01')

4. 验证数据
我要验证得是沪深300指数相关基金,为了对比我同时分析了上证指数和深证指数。首先我们看下2020年得数据:

get_result(df,'2020-01-01')


再看下2019年到现在数据:

get_result(df,'2019-01-01')


最后在看下2018年以来数据:

get_result(df,'2018-01-01')

6.结论:
分析上面数据可以了解到最近三年来,周二上涨得概率最大,周三下跌得概率最大,所以基金定投最好设置在周一或周五,这样定投买入的时机会大部分买在上涨前。

更多推荐

python能干什么?写个程序分析下股票/基金指数指导下自己基金定投时机吧