Python 编程分析 BOX 定投策略之优劣

论坛 期权论坛 期权     
云轩雅集   2019-7-14 05:27   3408   0

Python 编程分析 BOX 定投策略之优劣
自从七三韭菜节笑来老师推出区块链 ETF 基金 BOX 之后,引起了很多关注,我也不例外,并且在前几天已经定投了第一期的 400 元人民币。
不过在这几天仔细阅读 BOX 的说明之后,我产生了一些疑惑。
通常定投指的是间隔一定时间投入固定资金买入资产标的,长期来讲可能会错过最低点,但也能避开最高点,相当于是买到标的的长期平均价格,只要标的的整体趋势是不断上涨,就可以稳定获利。
定投的关键在于固定金额,这样一来在价格高的时候买到的份数相对较少,而价格低时买到的份数相对较多,从而能熨平风险。
但是看到 BOX的设计之后,我发现一个问题,就是每份 BOX 中包含的 BTC、EOS 和 XIN 这三种成分币的数量都是固定的。
这样一来,如果用固定金额定投 BOX,就不能实现“在价格高的时候买到的份数相对较少,而价格低时买到的份数相对较多”这一定投的基本理念了。
因为三种币的相对价格肯定会发生变化,由于三种成分币的数量固定,如果其中某种币相对其他两种价格上涨,那就会挤占其他币的资金;同样的,如果某种币相对其他两种价格下跌,那买入这种币的资金就会减少。这岂不是成了韭菜的标准操作“追涨杀跌”吗?完全和定投的原则背道而驰了。
按照我的理解,应该是将三种币按照法币价值固定一个比例(比如老师说的最初为 5:4:1)才对。
我今天下午在 Mixin 群里提出这个问题,很高兴笑来老师亲自回复了我,他说:”如果锚定发币价格的比例,才会出现你说的那种追涨杀跌。成分不变才是正确策略。“
虽然老师这么说了,但我觉得还是有必要再深入思考一下,因此在Excel 表格上列了一下,不过还是不能确定。
后来忽然想到可以用 Think Python 中提到的随机数方式来进行编程模拟。
我的思路是这样的:
用随机数模拟三种成分币的价格走势,然后对比“定投BOX“和”固定金额比例定投三种成分币“这两种方式的投资收益,为了叙述的简便,下文就用”我的方法“来指代上述第二种方法。
虽然说用随机数模拟价格走势并不能代表未来真实的市场行情,但如果模拟的次数足够多的话,还是能体现出其中的概率差异的。
说干就干。在写代码时,先确定了两种方法的收益计算过程,这一步没什么难的。但接下来要模拟价格走势的时候就遇到了问题。
我确定的定投频率是每周一次,持续七年,总计 364 次。一开始我设定每周价格随机波动幅度在正负 50% 之间,区块链资产波动幅度大,一周涨跌 50% 之内都是很正常的现象。
可是写好函数之后,测试了几次结果都是比特币价格归零!这让我很郁闷,虽说比特币未来并非没有归零的可能性,但每次结果都是这样肯定还是有问题。经过思考找到问题原因,由于基数不一样,如果涨跌出的概率相等,而且幅度也相等的情况下,上涨的数量肯定会小于下跌的数量。
举个例子:假设本金是 100 元,无论是先涨 10% 后跌10%,或者是先跌 10% 后涨 10%,结果都是小于 100 的,大家可以自行计算。
为了弥补这个差距,同时也体现区块链产业未来不断上升的趋势,我想到的改进方法是缩小下跌范围,经过调试,我发现-48% 至 +50% 的幅度是比较合适的。用这个参数模拟了几个 1 万次,BTC 在七年后的平均价格处于 20 万至 40 万人民币之间,我认为比较合理。
接下来就是模拟两种投资策略的收益。在代码完成之后,我模拟了几回 10 万次,结果都是两种方案胜出次数大约为 2:1.,我的方案更优,这一结果也印证了我之前的判断。
复盘我编的这段程序,对两种方案的计算过程没有问题,但最关键的地方在于对行情的模拟,目前模拟出的走势是纯随机,并不能体现区块链资产行情的一些基本特征,我个人不是很满意。
我理想中模拟出来的行情应该具有以下特征:
  • 两至三年一个周期,体现牛熊转换;
  • 每个牛市的高点应该达到前期高点的 4 倍左右;
  • 每个熊市的谷底应该跌至前期高点的 15%。
这些特征都是之前几年 BTC 的行情特征,不过目前我只是个编程小白,三个月前才通过编程自学营开始学习 Python,尚不能够模拟出理想的行情趋势。
我知道自己刚刚开始学编程,14 天自学营之后只读过一本 Think Python,写出来的代码在高手眼里肯定不值一提的,不过还是想借这个机会跟大家交流一下,希望大家能就以下方面给出建议:
  • 看我的思路是不是还有严重的缺陷;
  • 看我的代码是否存在错误;
  • 看我的代码有哪些部分可以优化,提升效率;
  • 最后也是最重要的一点,如何能模拟出我需要的市场行情。
另外也欢迎大家就上述两种定投策略的优劣提出看法,并且支出我思考过程和结果的不足之处。
万分感谢!
程序代码地址:https://github.com/Ceasar1978/Programing-exercise/blob/master/BOX-test.py
点击“阅读原文”也可以看到我的代码。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP