Python 股票金融数据量化分析实战
本项目针对股票的金融数据量化分析,更契合金融领域的称呼是股票量化交易。
把名称拆分开来理解,分别是'数据'、'分析'和'交易','数据'指的是所要分析的股票数据,'分析'指的是从'数据'中挖掘出能够获利的策略,'交易'是指将策略转换为具体的买卖操作。
如果学习了 Python,同时对数据分析或金融量化交易感兴趣,或是计划开发属于自己的量化交易系统,或是准备从事金融数据分析领域,可以将量化交易作为 Python 实战项目来练手。
一方面可以提高 Python 实战能力,因为这个项目是一个多技术综合的项目,包括爬虫、数据分析、可视化、WEB 开发、统计概率知识、人工智能算法等等。 另一方面可以充实金融量化交易的思维和方法。不可否认当今社会投资理财已经变得越来越普及和重要了。 其实,量化交易本身是可以应用在很多投资理财领域的,确切的说只要涉及到时间序列的价格变动,就可以应用量化交易去分析,像银行理财产品的选择、房地产走势的分析、贵金属的价格趋势等等,股票投资只是其中的一部分。
从程序员视角理解量化交易
量化交易属于人工智能的一个应用分支,它利用计算机强大运算能力,用数学模型来模仿人的思维作出决策,通过数据建模、统计学分析、程序设计等工具从股票、债券、期货的历史数据分析中得到大概率下获利的交易策略。
这么说有些官方,听起来有些绕口,其实往简单地说就是如何管理输赢的概率,如何帮助我们做出准确的决策,比如像玩德州扑克牌那样,当你持有的牌可以掌握胜算时便跟进,否则便盖牌,没赢钱的胜算咱们选择不玩。
玩牌时胜算的概率在我们的大脑中时刻不停地计算着,而在量化交易中利用的是计算机、数学建模、程序设计这些更高级的手段,目的是为了高效快速地获得胜算的概率,并依据概率去做出决策。
接下来我们用一个简单的市场模型来介绍下量化交易的本质,这个模型是用 Python 实现的。win_rate 为胜率、play_cnt 为参与局数、stock_num 为股票数量、commission 为手续费。

假设我们投资的市场是一个具备短线交易特征的市场,可以不分昼夜的不停交易,而且还不需要交手续费。那么我们的初始资金是 1000 元,每次随机的买 9 个股票,如果有一半以上的股票涨了的话,我们暂定赚 1 元,否则一半以上的股票跌了,我们就亏一元。由于我们是随机买的,那么赢钱的概率为 50%。
我们邀请 50 个人参与 1000 局看下效果:

结果还不错,亏钱的人和赚钱的人基本一半一半,符合零和游戏的特征。不过市场要经营是需要有收入的,那么就需要对交易收取手续费,为了更直观的比较出手续费对交易的影响,我们假定每次交易的手续费为 0.1 元。
我们邀请 50 个人参与 1000 局看下效果:

很不幸的是零和游戏变成了负和游戏,没有一个人是赚钱的,大家都亏钱了,当局数再增大以后的结局一定是血本无归。市场是一定会有手续费的,那我们就这么心甘情愿的当韭菜吗?
如果我们想盈利的话就只能期待每局上涨的概率大于 50% 时才参与,否则不参与就不会亏钱了,并且每局赢的钱要比亏的钱多。其实这些需求映射到量化交易之中就是策略回测、仓位管理、止盈止损这些功能。那么我们改变概率这个因子,将它放大到 55%,我们邀请 50 个人参与 1000 局看下效果:












