如何用python python爬虫抓取图片金融数据

智联提示您:用人单位以任何名义向应聘者收取费用都属违法行为(如押金、资料费、代收体检费、代收淘宝信誉等),请提高警惕并注意保护个人信息!
您当前所在位置&&&当前页面
数据挖掘/数据抓取工程师/爬虫python
五险一金年底双薪股票期权全勤奖带薪年假免费班车员工旅游节日福利
职位月薪:元/月
工作地点:-萝岗区
发布日期: 09:06:51
工作性质:全职
工作经验:不限
最低学历:不限
招聘人数:1人
职位类别:
职位描述: &1、负责文本、图像等数据的抓取、去重、分类,垃圾过滤,质量识别等工作;2、为业务推广、产品方向的改进,提供数据分析支持。&岗位要求: &1、具备强悍的编码能力; &2、熟悉linux开发环境,熟悉C++和Python语言的优先; &3. 熟悉基本算法设计/数据结构, 熟悉网络爬虫原理和策略优先;&4. 熟练掌握网页抓取原理及技术、正则表达式、XPath等;&5、理解http,熟悉html, DOM, xpath优先; &6、理解数据库原理,理解SQL性能优先; &7、熟悉浏览器内核优先;8、工作认真细致踏实,有较强的学习能力。
工作地址:
广州市科学城科学大道162号创意大厦B1栋附楼401-402
最新职位推荐
今日相似推荐
地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州
地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州地点:广州
公司规模:20-99人
公司性质:上市公司
公司行业:
公司主页:
公司地址:
广州市科学城科学大道162号创意大厦B1栋附楼4楼
您也许对以下职位类别感兴趣:
热门职位推荐:金融数据的获取——一个爬虫的简单例子6收藏分享举报文章被以下专栏收录圣杯没有,铁杯总有吧推荐阅读{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&量化交易模型业余研究&,&permission&:&COLUMN_PUBLIC&,&memberId&:599922,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&圣杯没有,铁杯总有吧&,&urlToken&:&QuantAlchemist&,&id&:9577,&imagePath&:&4b70deef7.jpg&,&slug&:&QuantAlchemist&,&applyReason&:&&,&name&:&业余量化投资炼金术士的杂记&,&title&:&业余量化投资炼金术士的杂记&,&url&:&https:\u002F\\u002FQuantAlchemist&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:583,&avatar&:{&id&:&4b70deef7&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\\u002F4b70deef7_l.jpg&,&articlesCount&:23},&state&:&accepted&,&targetPost&:{&titleImage&:&&,&lastUpdated&:,&imagePath&:&&,&permission&:&ARTICLE_PUBLIC&,&topics&:[,9089],&summary&:&对量化投资策略进行研究,第一步就是获取我们需要的数据。使用历史数据能够对策略进行回测,以验证策略的有效性和可信性。另一方面,量化投资本身也是一种对数据的研究,因此它也必须遵循数据分析的相关步骤。作为一个业余的量化投资爱好者,免费的数据来源…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:599922,&publishedTime&:&T14:59:27+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:355406,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&金融数据的获取——一个爬虫的简单例子&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:9577,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&&,&author&:{&bio&:&&,&isFollowing&:false,&hash&:&fd09dbd05c65d15afe9a50&,&uid&:88,&isOrg&:false,&slug&:&jin-rou&,&isFollowed&:false,&description&:&有数据分析挖掘、金融工程相关兼职项目可私信我~&,&name&:&金柔&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fjin-rou&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:599922,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:311880}],&title&:&金融数据的获取——一个爬虫的简单例子&,&author&:&jin-rou&,&content&:&\u003Cp\u003E
对量化投资策略进行研究,第一步就是获取我们需要的数据。使用历史数据能够对策略进行回测,以验证策略的有效性和可信性。另一方面,量化投资本身也是一种对数据的研究,因此它也必须遵循数据分析的相关步骤。作为一个业余的量化投资爱好者,免费的数据来源主要有以下几种途径:\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003EYahoo、Sina 财经的API\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EPython的Tushare包\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003E自己手工爬取\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E
Tushare是一个免费、开源的Python财经数据接口包,它对数据进行了规整因此使用起来非常方便。尽管有如此优秀的数据包简化了数据的采集工作,我们依然需要掌握从网站上爬取数据的技能,以获取接口没有提供的数据。本篇文章将会介绍一个小爬虫,告诉大家如何从网站上获取所有股票的代码和名称。\u003C\u002Fp\u003E\u003Cp\u003E
Python的urllib2库是爬虫的基础,使用urllib2库可以获取网页的内容,再使用正则表达式对所需的内容进行提取。我们在东方财富网的stocklist页面下对股票的代码和名字进行爬取,若要获取该网页下的全部内容,则需要以下几步:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003E对服务器发送一个请求,使用urllib2的Request方法返回reguest对象\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003E采用urlopen方法处理构建的request对象,返回服务器的应答(response对象)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003E对response对象使用read方法,返回网页的内容\u003C\u002Fp\u003E\u003Cbr\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cblockquote\u003E\u003Cp\u003Erequest = urllib2.Request('\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\\u002Fstocklist.html\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E股票代码查询一览表\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E')\u003C\u002Fp\u003E\u003Cp\u003Eresponse = urllib2.urlopen(request)\u003C\u002Fp\u003E\u003Cp\u003Econtent = response.read().decode(\&gbk\&)\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cbr\u003E\u003Cp\u003E
一些网站不允许程序直接采用上面的方式进行访问,因此需要通过程序模拟浏览器的行为。通常采用的技术是在Requset方法的headers参数中设置agent,这样服务器认为是浏览器发出的请求就可以正常respose。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cblockquote\u003E\u003Cp\u003Eurl = '\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\\u002Fstocklist.html\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E股票代码查询一览表\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E'\u003C\u002Fp\u003E\u003Cp\u003Eheaders = { 'User-Agent' : 'Mozilla\u002F4.0 ( MSIE 5.5; Windows NT)' }\u003C\u002Fp\u003E\u003Cp\u003Erequest = urllib2.Request(url,headers)\u003Cbr\u003E\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cbr\u003E\u003Cp\u003E
在进行网页内容的读取过程中,会遇到这样或那样的原因导致异常使得读取不成功,可以使用try-except捕获相应的异常。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cblockquote\u003E\u003Cp\u003Etry:\u003C\u002Fp\u003E\u003Cp\u003E
urllib2.urlopen(request)\u003C\u002Fp\u003E\u003Cp\u003Eexcept urllib2.URLError, e:\u003C\u002Fp\u003E\u003Cp\u003Eif hasattr(e,\&code\&):\u003C\u002Fp\u003E\u003Cp\u003Eprint u\&爬取股票列表失败,错误原因\&,e.reason\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003E\u003Cbr\u003E
以上就是获取网页Html的过程,下面就需要在这茫茫Html中获取我们需要的东西。这个时候需要用到正则表达式对需要的内容进行匹配。\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F1c26ba05995a26dfc776eca6b888bb2b_b.jpg\& data-rawwidth=\&1580\& data-rawheight=\&240\& class=\&origin_image zh-lightbox-thumb\& width=\&1580\& data-original=\&https:\u002F\\u002F1c26ba05995a26dfc776eca6b888bb2b_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1580'%20height='240'&&\u002Fsvg&\& data-rawwidth=\&1580\& data-rawheight=\&240\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1580\& data-original=\&https:\u002F\\u002F1c26ba05995a26dfc776eca6b888bb2b_r.jpg\& data-actualsrc=\&https:\u002F\\u002F1c26ba05995a26dfc776eca6b888bb2b_b.jpg\&\u003E\u003Cp\u003E
上图中蓝色标出的部分是我们需要的股票名称和代码,采取以下正则表达式可以获取需要的内容。正则表达式的写法不是唯一的,但需要保证使用该正则不会出现遗漏或多匹配出不需要的其他信息的情况。如果你对正则表达式不太熟悉也没有关系,Python提供了Beautiful Soup工具能够更为简单地提起Html或者Xml中的内容。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cblockquote\u003E\u003Cp\u003Epattern = re.compile('&li&&a.*?href=.*?html\&&(.*?)\\((.*?)\\).*?&\u002Fli&',re.S)\u003C\u002Fp\u003E\u003Cp\u003Eitems = re.findall(pattern,content)\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cbr\u003E\u003Cp\u003E
采用findall方法返回的是一个List,我们可以将爬取的结果放在一个名为stocklist的txt文件中。\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Cp\u003Ereload(sys)\u003C\u002Fp\u003E\u003Cp\u003Esys.setdefaultencoding('utf-8')\u003C\u002Fp\u003E\u003Cp\u003Ef = open('stocklist.txt','w')\u003C\u002Fp\u003E\u003Cp\u003Efor item in items:\u003C\u002Fp\u003E\u003Cp\u003Ef.write(item[1]+','+item[0]+'\\n')\u003C\u002Fp\u003E\u003Cp\u003E f.close()\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cbr\u003E\u003Cp\u003E
当然,更好的结果储存方式是将结果放在数据库中,下面就是以sqllite数据库为例进行了一个爬取结果的储存。将爬取结果放在数据库中能够方便调用,并且可以设置shell任务做定时的爬取和更新。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cblockquote\u003E\u003Cp\u003Econn = sqlite3.connect(\&stock.db\&)\u003C\u002Fp\u003E\u003Cp\u003Ecursor = conn.cursor()\u003C\u002Fp\u003E\u003Cp\u003Ecursor.execute('''drop table if exists stock_index''')\u003C\u002Fp\u003E\u003Cp\u003Ecursor.execute('''create table if not exists stock_index (stock_name varchar(60), id varchar(20))''')\u003C\u002Fp\u003E\u003Cp\u003Ecursor.executemany(\&insert into stock_index(stock_name,id) values(?, ?)\&, stockList)\u003C\u002Fp\u003E\mit()\u003C\u002Fp\u003E\u003Cp\u003Ecursor.close()\u003C\u002Fp\u003E\u003Cp\u003Econn.close()\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cbr\u003E好了,如何从网站上爬取我们需要的数据就介绍到这里。Python有着更为强大的爬虫框架Scrapy,有兴趣的同学可以学习一下。关于本次小爬虫的全部代码,可以关注我的微信公众号,以后会有更多关于量化的原创文章哦!。\u003Cbr\u003E\u003Cbr\u003E我的微信公众号:会掘金的小鹿(NuggetsRoad)&,&updated&:new Date(&T06:59:27.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&collapsedCount&:0,&likeCount&:6,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&量化&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&量化交易&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&爬虫 (计算机网络)&}],&adminClosedComment&:false,&titleImageSize&:{&width&:0,&height&:0},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&column&:{&slug&:&QuantAlchemist&,&name&:&业余量化投资炼金术士的杂记&},&tipjarState&:&inactivated&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:0,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T14:59:27+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:&&,&isFollowing&:false,&hash&:&016475bdc2cd1bc722ad&,&uid&:026500,&isOrg&:false,&slug&:&yuan-ren-tai-shan&,&isFollowed&:false,&description&:&&,&name&:&烧鹅趣味编程&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fyuan-ren-tai-shan&,&avatar&:{&id&:&v2-dc8f3cc58&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&There is no place like home&,&isFollowing&:false,&hash&:&ee53f4516cbc5efac10dff4bb7034fb1&,&uid&:84,&isOrg&:false,&slug&:&zeqin-he&,&isFollowed&:false,&description&:&&,&name&:&贺泽Q&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fzeqin-he&,&avatar&:{&id&:&87c87f7df8e2fc58dbe2dd201b1c951f&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&大学生&,&isFollowing&:false,&hash&:&ab2cccafe686e&,&uid&:140400,&isOrg&:false,&slug&:&chen-chen-hui-9&,&isFollowed&:false,&description&:&&,&name&:&陈陈等&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fchen-chen-hui-9&,&avatar&:{&id&:&v2-2f50e32d266f36baba8fb03&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&南师泰院历史系在读&,&isFollowing&:false,&hash&:&ff3e6f33ac65a163ebd1b&,&uid&:874400,&isOrg&:false,&slug&:&ma-xin-yang-30&,&isFollowed&:false,&description&:&&,&name&:&Lucemon&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fma-xin-yang-30&,&avatar&:{&id&:&v2-460bc923f&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&迷茫证券小员工,发呆重度爱好者&,&isFollowing&:false,&hash&:&ecbb1cd73188&,&uid&:84,&isOrg&:false,&slug&:&qian-bu-cai&,&isFollowed&:false,&description&:&&,&name&:&钱不才&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fqian-bu-cai&,&avatar&:{&id&:&962b499f61dc7e8fa454d979ba90dfb7&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cimg src=\&https:\u002F\\u002F1c26ba05995a26dfc776eca6b888bb2b_200x112.jpg\& data-rawwidth=\&1580\& data-rawheight=\&240\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&https:\u002F\\u002F1c26ba05995a26dfc776eca6b888bb2b_r.jpg\&\u003E对量化投资策略进行研究,第一步就是获取我们需要的数据。使用历史数据能够对策略进行回测,以验证策略的有效性和可信性。另一方面,量化投资本身也是一种对数据的研究,因此它也必须遵循数据分析的相关步骤。作为一个业余的量化投资爱好者,免费的数据来源…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&量化&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&量化交易&},{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&回测框架&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&&,&isFollowing&:false,&hash&:&fd09dbd05c65d15afe9a50&,&uid&:88,&isOrg&:false,&slug&:&jin-rou&,&isFollowed&:false,&description&:&有数据分析挖掘、金融工程相关兼职项目可私信我~&,&name&:&金柔&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fjin-rou&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&QuantAlchemist&,&name&:&业余量化投资炼金术士的杂记&},&content&:&\u003Cp\u003E在建立自己的量化策略回测系统之前,我们必须对策略回测中的一些概念和可能碰到的坑有一定地了解。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E回测看似是一件非常简单的事情,但是回测者往往会犯一些错误,这些错误大多都会夸大策略的收益。策略的构建者自信满满,以为自己找到了量化\&圣杯\&。遗憾的是,大多回测收益率极高的策略都是在会测中犯了细节上的错误,如果把这些策略用于实盘,那么很可能与回测结果大相劲庭。\u003C\u002Fp\u003E\u003Cp\u003E回测可以被认为是量化投资与其他投资最为不同的地方,我们可以采用丰富的历史数据对策略的过去表现进行衡量,从而为策略可以用于实盘中提供可靠的证据。因此,回测的的意义主要在于证实策略的有效性,从而帮助我们筛选策略并最优化模型参数。\u003C\u002Fp\u003E\u003Cp\u003E我们从七个方面讲讲回测中可能会遇到的问题。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E1、交易成本\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E交易成本除了显式的佣金、印花税等外,还有一些隐式的成本。在回测中,隐式交易成本容易被忽视。隐式交易成本主要有流动性成本、机会成本。\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003E流动性成本(冲击成本):大规模市价买入或卖出时,由于大单对市价的冲击从而未按照预定指令价位成交。\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003E机会成本:限价买入时,不会产生流动性成本,但可能会因为指令不执行错过获利机会。\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E降低交易成本的方法有:\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003E降低佣金:避免交易低价股\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003E降低市场冲击成本:限制单个指令的交易规模(单个指令不超过日均交易量的1%,将大额指令拆成小额分别执行)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cstrong\u003E2、滑点\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E滑点指的是开仓点位和成交点位之间的差异,前面说到的流动性成本是形成滑点的一种。除此之外,滑点还可能因为网络延迟、交易平台不稳定等情况导致。\u003C\u002Fp\u003E\u003Cp\u003E实盘中处理滑点的方法需要在下单交易的时候做算法处理,并且选择交易一些流动性较高的品种。在回测中,我们一般会在程序中设置固定数值的滑点。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E3、幸存者偏差\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E产生\&幸存者偏差\&的原因是“死人不会说活”。在对策略回测的时候,我们一般只会选择那些在回测期有数据的股票,那些在回测期或者在回测期前就退市了的公司默认被排除了。于是回测的结果是对仍存活的公司而言,破产、退市、兼并、收购而消失的公司并不会在回测中体现。\u003C\u002Fp\u003E\u003Cp\u003E避免“幸存者偏差”的简单方法是使用近期数据进行回测;如果需要使用较远期的时段进行回测,那么需要选择没有遗漏“非幸存者”的数据集。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E4、未来函数\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E未来函数是指在进行买卖信号判断的时候,利用了未来不确定的行情信息。使用了\&未来函数\&的策略能够预知未来,得到极其夸张的收益率也不足为奇。未来函数的错误在策略设计的时候就能避免,判断信号是否出现的时候只能使用已有的行情信息。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E5、过拟合\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E过拟合产生于策略模型中过多的规则和参数。过拟合使得策略在回测期表现非常好,但将模型和参数用到当前行情时却十分糟糕。\u003C\u002Fp\u003E\u003Cp\u003EMachine Learning中判断过拟合问题的方法同样也可以用于量化模型中,主要有交叉检验,模拟测试以及敏感性测试等办法。采用这些方法可以对量化策略模型是否存在过拟合问题进行检验,若存在过拟合问题则必须对模型进行调整。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E6、偷价格\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E未来函数是采用未来的信息进行交易,而偷价格则是利用信号触发前的价格进行交易。在信号被触发时,我们只能使用信号触发时的价格进行交易,而不能用已经成为过去的价格。\u003C\u002Fp\u003E\u003Cp\u003E在一般的情况下,偷价格是很容易避免的,但是如果跳空和交易信号同时出现时很容易犯偷价格的错误。由于跳空造成的价格不连续,指定的价格不会触达策略设置交易的价格,如果使用该价格下单那么会出现偷价格的现象。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E7、复权\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E由于股票存在股利分配等股本的变动,其价格会做一定的调整,这种非正常的价格变动在回测中是要被排出的,因此需要使用复权后的数据进行回测。在拿到历史数据集时,一定需要了解价格数据是否做了复权的处理。\u003C\u002Fp\u003E\u003Cp\u003E一般来讲,在回测中采用前复权的数据,前复权是保持现有价位不变,将以前的价格进行缩减,这种处理是以当前价格为基准进行调整,较后复权更直观一些。当然,采用用向后复权也不会有太大问题,在计算策略收益率的时候两者结果是一致的。\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E\u003Cb\u003E请关注我的微信公众号,有更多关于量化的原创文章哦!。\u003Cbr\u003E\u003C\u002Fb\u003E\u003Cb\u003E我的微信公众号:会掘金的小鹿(NuggetsRoad)\u003Cbr\u003E\u003C\u002Fb\u003E\u003Cb\u003E是时候关注一波了!!\u003C\u002Fb\u003E\u003C\u002Fp\u003E&,&state&:&published&,&sourceUrl&:&&,&pageCommentsCount&:0,&canComment&:false,&snapshotUrl&:&&,&slug&:,&publishedTime&:&T18:46:13+08:00&,&url&:&\u002Fp\u002F&,&title&:&回测的那些事儿&,&summary&:&在建立自己的量化策略回测系统之前,我们必须对策略回测中的一些概念和可能碰到的坑有一定地了解。 回测看似是一件非常简单的事情,但是回测者往往会犯一些错误,这些错误大多都会夸大策略的收益。策略的构建者自信满满,以为自己找到了量化\&圣杯\&。遗憾的…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&commentPermission&:&anyone&,&commentsCount&:0,&likesCount&:3}},&annotationDetail&:null,&commentsCount&:0,&likesCount&:6,&FULLINFO&:true}},&User&:{&jin-rou&:{&isFollowed&:false,&name&:&金柔&,&headline&:&有数据分析挖掘、金融工程相关兼职项目可私信我~&,&avatarUrl&:&https:\u002F\\u002Fda8e974dc_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&jin-rou&,&bio&:&&,&hash&:&fd09dbd05c65d15afe9a50&,&uid&:88,&isOrg&:false,&description&:&有数据分析挖掘、金融工程相关兼职项目可私信我~&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\\u002Fpeople\u002Fjin-rou&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&nwebStickySidebar&:&sticky&,&androidPassThroughPush&:&all&,&newMore&:&new&,&liveReviewBuyBar&:&live_review_buy_bar_2&,&liveStore&:&ls_a2_b2_c1_f2&,&searchHybridTabs&:&without-tabs&,&isOffice&:&false&,&homeUi2&:&default&,&answerRelatedReadings&:&qa_recommend_with_ads_and_article&,&remixOneKeyPlayButton&:&headerButton&,&asdfadsf&:&asdfad&,&qrcodeLogin&:&qrcode&,&newBuyBar&:&livenewbuy3&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&zcmLighting&:&zcm&,&favAct&:&default&,&appStoreRateDialog&:&close&,&mobileQaPageProxyHeifetz&:&m_qa_page_nweb&,&iOSNewestVersion&:&4.2.0&,&default&:&None&,&wechatShareModal&:&wechat_share_modal_show&,&qaStickySidebar&:&sticky_sidebar&,&androidProfilePanel&:&panel_b&,&nwebWriteAnswer&:&default&}},&columns&:{&next&:{},&QuantAlchemist&:{&following&:false,&canManage&:false,&href&:&\u002Fapi\u002Fcolumns\u002FQuantAlchemist&,&name&:&业余量化投资炼金术士的杂记&,&creator&:{&slug&:&jin-rou&},&url&:&\u002FQuantAlchemist&,&slug&:&QuantAlchemist&,&avatar&:{&id&:&4b70deef7&,&template&:&https:\u002F\\u002F{id}_{size}.jpg&}}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}}

我要回帖

更多关于 python 爬虫 抓取json 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信