人工智能|量化交易|算法与数据结构

Jan 1 2018
Hello 2018

Hello 2018

2017年阳历的最后一天,大雨一直浸蚀着整个新加坡,带走了这一年的点点滴滴。无论是开心的,亦或是悲伤的,都随着这涓涓细流消失在四面八方。一大早我便去了实验室,希望新的一年也能像今天这样,工作努力,懂得知足。实验室里的人,零零散散。来了一个,又走了一个。每个人都在自己的人生节点里做出种种选择,或大或小。就这几天,我们这些90后们还分分晒自己18岁的照片。因为到了2018年,00后们也都渐渐的成年了。时代的洪流冲刷着我们每个人的命运,冲散了我们曾经以为的海誓山盟。既要不忘初心,也要拥抱变化。

2018年阳历的第一天,雨停了,虽然天仍旧是灰蒙蒙的。除了四周春意盎然的花草树木,但这一丝丝凉意也竟让我想起了故乡的秋天。一层秋雨一阵凉,一瓣落花一脉香。一样流年自难忘,一把闲愁无处藏。2018年,对我而言有太多变数,也有太多的人生选择。相信多少年过后再回首,一定会铭记这一年所做出的努力与决定。虽然现在的我依旧迷茫,但毕竟路都是人走出来的。我也要迈着坚实的步伐,度过一个个难关,向着美好走去!

进去看看

Oct 6 2017
QuantCon@SG,你想知道的所有细节都在这里了

QuantCon@SG,你想知道的所有细节都在这里了

本科的时候就听说XJC师兄想要从零开始搭建一套量化交易系统,当时也是特别佩服。虽然周围金工的同学或多或少也在用SAS然后连接Wind来开发与回测投资策略,少部分同学也试着实盘去操作,但真正从一砖一瓦去搭建整个量化交易系统就是另一回事了。 后来大概在我大四的时候,预测者网诞生了。一开始其核心在于抓取大V以及分析师们的预测观点并进行评级,之后逐步开始卖量化投资策略和高频数据。 之所以以这个引子开头,是为了契合Quantopian这次的量化投资大会。一来,随着2016年国内各大量化策略平台(RiceQuant, Uqer, JoinQuant, 果仁网)雨后春笋般的出现,人人皆为宽客的时代已然来临,预测者网虽然没有很快的转型,但也是这波浪潮的冲锋号。二来,alternative data近来也比较火,正如有着GIC九年工作经验的keynote主讲人Yi Li大神提到用分析师数据来预测宏观市场状态,预测者网也有试图整合所有分析师的预测观点来最大化集体智慧。三来,机器学习/人工智能也算是在各个行业都大放异彩,这次QuantCon有很多演讲都和机器学习、增强学习有关。另外,文末有福利放送哦~

进去看看

Jan 3 2017
Codeforces科学刷题指南,一图一表便够了

Codeforces科学刷题指南,一图一表便够了

无论做什么事,多尝试、找套路、然后刻意练习都是至关重要的。对信息科学竞赛(Olympiad in Informatics)爱好者来说,找套路的关键就是多刷题。然而题海茫茫,单以Codeforces来说,截止2017年1月3日,总共有3206道题。换言之,如果一个人足够勤奋,能够一天刷三道题,那也得快三年才能把题目刷完,而且题目数量还在扩充。所以盲目的刷题简直是浪费生命,本人从16年上半年一直按照题目解决人数从高到低排序,不断的刷水题。显然易见,刷水题的后果就是没有长进,熟悉的还是熟悉,不懂的还是不懂,唯一让自己开心的就是刷题数量的累积。所以科学刷题的本质在于不断挑战新高度,在一个平台练习足够久足够熟练之后,就要进入下一个难度平台。为了方便大家,我把Codeforces上截止2017年1月3日的所有题目的基本信息用爬虫收集了下来,并存储到excel里。更进一步,本文试图分析不同算法在不同难度等级上的出现频率分布,以及不同算法在不同难度等级上被解决次数的分布。最后,我会简要介绍的我的刷题观,以及如何爬取Codeforces上的信息。

进去看看

Jan 1 2017
Hello 2017

Hello 2017

计划、组织、领导、控制,这恐怕是学过管理的人都耳熟能详的四个词。凡事预则立,不预则废。我想目标还是讲出来、写出来的比较好,一来有个靶子知道自己要做什么,二来心里可以惦记着也算是一种鞭策,三来也有个监督立flag的意味。其实大部分的目标,无外乎就是靠时间来换取结果,有个阶段性的计划也好对抗自己的拖延症,要不就陷入自己的舒适区无法前进。就像鲤鱼跃龙门一样,跨过了这个槛,才能有新的平台和视野。感觉毕业两年半,周围的同学都在大踏步的前进,而我还在原地踏步,实在是太惭愧了。在这里列出我2017年的小目标,通过每个季度的追踪以及校正,希望在新的一年能有所收获吧。

进去看看

Dec 31 2016
Good Bye 2016

Good Bye 2016

风过留声,雁过留痕。一天又一天,一年又一年,总觉得小时候的时光很漫长,而越长越大却觉得时间飞逝,稍不留神自己就老了。关于这个时间相对性,有人这样解释道,假如你今年 \(N\) 岁,那么这一年相当于你人生中的 \(1/N\) ,自然年龄越大对时间流逝的敏感也就越来越小。换句话讲,时间对人的效用是边际递减的。年少时一无所知,用20%时间学习了80%的源头知识;长大后有所攻,用80%的时间学习或者提出了20%的扩展性知识。尽管如此,抛开数字而言,这2016年无论对谁而讲,都是鲜活的一年。就像每个人都是一本书,有了酒,有了观众,便有了故事。赶在这2016年的尾巴上,让我做一回瞬间收藏家,用光影来记录我的2016年。谢谢2016年我遇到的所有人,如果没有你们,这也不会成为我的2016年。

  • 年初约定要发论文,经过半年的审稿再四个月的修改希望一切能遂愿吧,另外一篇QE结束之后就没怎么管了。
  • 年初说但求虐狗,也从一份友情收获到了真挚的爱情,虽然有着各种阻隔,但还是谢谢你给我的快乐时光。
  • 年初说要开发量化交易系统,虽然没有实现,但也借着今年初露锋芒的各大量化平台实现了几个还凑活的策略。
  • 年初想着在codeforces上再进一步,刷了半年题直到年尾重新拾起,发现自己只是在舒适区划水。
进去看看

Dec 24 2016
深度增强学习【2】从多臂赌博机问题到蒙特卡洛树搜索

深度增强学习【2】从多臂赌博机问题到蒙特卡洛树搜索

有的人苦于没有选择可选,只能一条路走到黑;而有的人选择过多、权衡过多,反而无从下手,相当于没做选择。约束太多有约束太多的烦恼,太过自由有太过自由的烦恼,这也算是一种 资源诅咒 吧。 然而面对选择困难症,到底有没有灵丹妙药来解决它。科学家说,必须有! 先来考虑一个问题,某天你走了狗屎运天上掉下了1000块钱,你觉得自己的运气正旺,而且反正是不义之财,不如去赌场来以小博大。赚了算自己的,赔了就当没捡过这钱。你兴冲冲的跑去了赌场去玩老虎机,然而到了赌场却傻了眼,竟然有200台老虎机!随便选一个老虎机可不行,因为你听人说过有的老虎机赢率比较高,有的比较低。那么问题来了,给定这1000块钱,假定玩一次老虎机要支付1块钱,那么应该玩哪些老虎机、以怎样的顺序去玩才能使得自己的累积收益最大?在 上篇深度增强学习系列文章, 我们讲到了Alpha Go中的两个关键技术:深度学习和增强学习。 本文将首先介绍 多臂赌博机问题Multi-armed Bandit Problem),然后基于此,介绍Alpha Go的另一项核心技术,即 蒙特卡洛树搜索Monte Carlo Tree Search),最后会简要介绍我的研究方向 仿真优化Simulation Optimization)同这些领域的关系。

进去看看

Dec 18 2016
深度增强学习【1】走向通用人工智能之路

深度增强学习【1】走向通用人工智能之路

现在但凡写人工智能的文章,必提Alpha Go。也正是因为Alpha Go在围棋人机大战中里程碑式的胜利,人工智能迎来了新的春天。 本文也不免俗套,从Alpha Go说起,但希望能指明一些被忽视的但对Alpha Go棋力有深远影响的技术。 围棋人工智能大致可以分为三个阶段1 :第一阶段以启发式算法为主,水平低于业余初段,代表软件即以静态势力函数为强项的手谈; 第二阶段以蒙特卡洛树搜索算法 为代表,水平最高达到业余5段,比如说 ZenCrazy Stone ;第三阶段以 深度学习Deep Learning)以及 增强学习Reinforcement Learning,也称强化学习)算法为突破,并战胜了人类职业九段棋手李世乭,这也就是Alpha Go的故事了。每每提到Alpha Go卓越的能力,往往归咎于深度学习的强大,但实际上增强学习算法也功不可没。这二者的结合被称之为 深度增强学习Deep Reinforcement Learning,DRL),最初见于DeepMind在Nature上发表的Human-level control through deep reinforcement learning本文试图从深度增强学习的角度来探讨通用人工智能的实现,并简要介绍了深度增强学习的基础知识、常见算法以及相关应用。

进去看看

Dec 4 2016
工欲善其事,必先利其器

工欲善其事,必先利其器

本文参与了「利器社群计划」,发现更多创造者和他们的工具:http://liqi.io/community/ ,着重推荐了本人重度使用的工具库以及多年来总结出的工作流。除此之外,也探讨了我的职业生涯转折点、最理想的工作环境以及平时获得工作灵感的一些方式。

进去看看

Mar 12 2016
Codeforces - 598D Igor In the Museum

Codeforces - 598D Igor In the Museum

前文曾提到过解决一个算法问题,大概可以划分为三个阶段。第一阶段是算法设计,即人脑准确无误理解算法问题,并设计算法,这一阶段属于模型在思维上的构建。第二阶段是算法实施,即程序员用自己钟爱的语言对思维上的模型进行现实化,依靠计算机来获得结果,这一阶段属于模型在代码上的构建。最后一阶段,即计算机执行程序员给定的命令,并返回其所希望的结果,这一阶段属于模型在计算机硬件上的构建。为了保证最终输出的正确性,这三个阶段不能发生任何可预见或者意想不到的错误。算法运行中的精度问题在前文中已有所描述,这一次我们来谈谈算法实施阶段,并以Codeforces 598D来说明如何写更精简的代码。

进去看看

Feb 15 2016
Codeforces - 598C Nearest vectors

Codeforces - 598C Nearest vectors

从系统的角度来看,给定一个算法问题和输入,要使得计算机输出正确的结果,那么必须保证至少下面三个环节是正确无误的。

  • 算法设计 (思维上的构建)
  • 算法实施 (代码上的构建)
  • 算法运行 (计算机硬件上的构建)

这其中的任一环节出现了错误,都无法保证最终的正确结果。前两个环节主要取决于人的能力(理解问题,解决问题)与细心程度,而最后一个环节重点在于人对计算机的底层理解。换句话说,即使问题在我们的脑海中已被完美解决,但在算法运行时,计算机对该问题的重新表达可能会出现偏差。最常见的偏差就是计算机精度问题,毕竟是以离散来逼近连续,出现『精确的错误』是在所难免的。但当正确性和高精度只能二选一时,显然没有人会因为高精度而追求精确的错误。这篇文章就以Codeforces 598C这道题来探讨第三个环节算法运行中的精度问题。这道题目本身并不难,但在正式比赛中只有57个人AC,仅低于F题。说其不难,是因为算法设计以及算法实施环节太显而易见了,但这么低的AC率就是因为大多数人在这道题精度上出了问题。

进去看看