在《Python实战-构建基于股票的量化交易系统》小册子中,咱们以股票为交易标的讲解量化交易的学习,主要缘由是股票的风险和收益介于期货和基金之间。期货一方面加了杠杆,另外一方面走势变化很是迅速,稍有不慎有可能血本无归,这不太适合大众参与。基金由专业团队打理,虽然收益最小,但风险也是最小的,求稳的话买基金也是个不错的选择。python
提及股票,A股市场自设立至今经历了屡次牛熊转换,笔者身边也有不少朋友在牛市赚了不少钱,但最终“退潮”的时候仍是亏回去了。以前看到一则新闻上说中国的股民有1.2亿多,统计股民的行为发现他们天天平均看盘2小时,整年平均买19只股,平均2天一次交易,能够看出大多数股民交易频繁,对买卖点思考并不严谨。微信
本专栏将量化交易技术应用股票交易中,并非传授打败市场、一晚上暴富的本领,而是想让同窗们经过量化交易管理亏盈的几率,可以更理性的将股票投资做为理财的一个手段,而不是以赌博的心态参与其中。那么本小节,笔者结合一个简单的市场模型来介绍下为何在没有几率优点的前提下参与交易会亏钱。dom
假设咱们投资的市场是一个具有短线交易特征的市场,能够不分昼夜的不停交易,并且还不须要交手续费。那么咱们的初始资金是1000元,每次随机的买9个股票,若是有一半以上的股票涨了的话,咱们暂定赚1元,不然一半以上的股票跌了,咱们就亏一元。因为咱们是随机买的,那么赢钱的几率为50%。咱们邀请50我的参与1000局看下效果:
代码以下:
def simpmarket(win_rate, play_cnt=1000, stock_num=9, commission=0.01):
学习
money = np.zeros(play_cnt) money[0] = 1000 binomial = np.random.binomial(stock_num, win_rate, play_cnt) print(binomial) for i in range(1, play_cnt): if binomial[i] > stock_num//2: money[i] = money[i-1] + 1 else: money[i] = money[i-1] - 1 money[i] -= commission if money[i] <= 0: break return money
[plt.plot(np.arange(1000), simpmarket(0.5, play_cnt=1000, stock_num=9, commission = 0))
for _ in np.arange(0, 50)]spa
结果还不错,亏钱的人和赚钱的人基本一半一半,符合零和游戏的特征。不过市场要经营是须要有收入的,那么就须要对交易收取手续费,为了更直观的比较出手续费对交易的影响,咱们假定每次交易的手续费为0.1元。咱们邀请50我的参与1000局看下效果:
和游戏,没有一我的是赚钱的,你们都亏钱了,当局数再增大之后的结局必定是血本无归。市场是必定会有手续费的,那咱们就这么心甘情愿的当韭菜吗?若是咱们想盈利的话就只能期待每局上涨的几率大于50%时才参与,不然不参与就不会亏钱了,而且每局赢的钱要比亏的钱多。其实这些需求映射到量化交易之中就是策略回测、仓位管理、止盈止损这些功能。那么咱们改变几率这个因子,将它放大到55%,咱们邀请50我的参与1000局看下效果:
看来结果还不错,只要增长盈利的几率,就能够在市场中得到收益,这就是量化交易的魅力——管理几率==理性交易。更多的量化交易内容欢迎你们订阅专栏阅读!!code
更多python量化交易内容互动请加微信公众号:PythonQT-YuanXiao
欢迎订阅量化交易课程: 连接描述