量化基金 数据获取及策略筛选

1、数据获取

天天基金 :gp股票型,hh混合型。。。
在这里插入图片描述

获取基金数据
import pandas as pd
import urllib.request
import requests

url1 = "http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=hh&rs=&gs=0&sc=6yzf&st=desc&sd=2020-04-29&ed=2021-04-29&pn=100"

headers = {
    "Cookie":"AS*******206b6c9fb2844a=1619699955",
  "Host":"fund.eastmoney.com",
"Referer":"http://fund.eastmoney.com/data/fundranking.html",
 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36",
}

kkk = requests.get(url1, headers =headers).text


m = ['datas', 'allRecords', 'pageIndex', 'pageNum', 'allPages', 'allNum', 'gpNum', 'hhNum', 'zqNum', 'zsNum',
     'bbNum', 'qdiiNum', 'etfNum', 'lofNum', 'fofNum']

kkk1 = kkk[15:-1]

for c in m:
    kkk1 = kkk1.replace(c,  '"' + c + '"')

all =[]
for i in eval(kkk1)["datas"]:
    all.append(i.split(",")[:16])

all_datass = pd.DataFrame(all,columns=["基金代码", "基金简称", "字母简称","日期", "单位净值", "产品链接","日增长率", "近一周", "近一月", "近三月","近六月", "近一年", "近两年", "近三年", "今年来","成立来"])

在这里插入图片描述

去字符串型空白值
import numpy as np
all_datass.replace(to_replace=r'^\s*$',value=np.nan,regex=True,inplace=True)
all_datass=all_datass.dropna()
获取夏普比率
夏普比率(Sharpe Ratio),又被称为夏普指数 --- 基金绩效评价标准化指标。夏普比率在现代投资理论的研究表明,风险的大小在决定组合的表现上具有基础性的作用。风险调整后的收益率就是一个可以同时对收益与风险加以考虑的综合指标,长期能够排除风险因素对绩效评估的不利影响。夏普比率就是一个可以同时对收益与风险加以综合考虑的三大经典指标之一。 投资中有一个常规的特点,即投资标的的预期报酬越高,投资人所能忍受的波动风险越高;反之,预期报酬越低,波动风险也越低。所以理性的投资人选择投资标的与投资组合的主要目的为:在固定所能承受的风险下,追求最大的报酬;或在固定的预期报酬下,追求最低的风险。
def formatrow1(row):
    
    id = row["基金代码"]

    url2 = 'http://fund.eastmoney.com/f10/tsdata_{}.html'.format(id)
    tables2 = pd.read_html(url2)
    shapes = tables2[1].iloc[1].to_list()
    
    return shapes[1],shapes[2], shapes[3] 

all_datass[["夏普比率(近1年)", "夏普比率(近2年)","夏普比率(近3年)"]] = all_datass.apply(formatrow1, axis=1, result_type="expand")

在这里插入图片描述

2、四四三三策略筛选基金

datass = all_datass
datass['rank'] = datass['近三年'].astype(float) * 0.3 + datass['近两年'].astype(float) * 0.25 + datass['近一年'].astype(float) * 0.2 + datass['近六月'].astype(float) * 0.15 + datass['近三月'].astype(float) * 0.1
datass.sort_values(by='rank', inplace=True,ascending=False)
datass1 = datass[:20]
datass1

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

loong_XL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值