转载:JQData股票在某时间段涨跌幅及年化收益的函数

股票在某时间段涨跌幅及年化收益的函数
应小编的要求,写了个返回股票在某时间段涨跌幅的函数

涨跌幅函数为rangeChange(stockSymbol, startDate, endDate)
年化收益函数为annualizedReturn(stockSymbol, startDate, endDate)

这个代码已经很简化了,功能强大。你要说再加啥功能,我也不知道加啥了。小编一定要让我多写一点,无语

from jqdatasdk import *
import pandas as pd
from datetime import datetime, timedelta # 导入datetime模块

auth(‘username’,‘code’) #输入用户名密码

def rangeChange(stockSymbol, startDate, endDate):
#返回区间内股票的收益率

df = get_price(stockSymbol, start_date=startDate, end_date=endDate, frequency='daily', fields=['pre_close',"close"],skip_paused=False, fq='pre')

startDateF=datetime.strptime(startDate, "%Y-%m-%d") 

if df.index[0]==startDateF:
    #如果初始日为交易日,取该交易日的收盘价       
    startPrice=df.ix[0,1]
else:
    #如果初始日为非交易日,取之前最近交易日的收盘价
    startPrice=df.ix[0,0]

endPrice=df.ix[-1,1]
return endPrice/startPrice-1

def annualizedReturn(stockSymbol, startDate, endDate):
performance=rangeChange(stockSymbol, startDate, endDate)
startDateF=datetime.strptime(startDate, “%Y-%m-%d”)
endDateF=datetime.strptime(endDate, “%Y-%m-%d”)
calDays=(endDateF-startDateF).days
annualReturn=(1+performance)**(1/(calDays/365))-1
return annualReturn

#############
#用户输入
startDate=“2015-01-01”#输入初始日
endDate=“2018-02-01” #输入到期日
stockSymbol=‘000001.XSHE’ #输入股票代码
##############

performance=rangeChange(stockSymbol, startDate, endDate)
print(performance)

annualReturn=annualizedReturn(stockSymbol, startDate, endDate)
print(annualReturn)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值