投资要义:“股债平衡兼套利,低估分散不深研”

投资创造财富的公式: 本金*长期年化收益率 * 时间。

三个因素: 

其中,本金,时间很好理解,以致于大家都快把它们忘了。——大家只关心收益率(注意这一项可能会为负哦)。

本金越大,时间越长,复利效果越好。

富人创富的逻辑,是本金大,时间长。

本金越大,持有时间就可以越长,所要求的期望收益率,不需要特别高,比如长期年化10%。这样需要承担的风险相对就小。

普通人由于本金小,还需要短期暴富(时间短),这就要求收益率特别高。想想这意味着,伴随的风险也巨大。加之本金小,你只能all in , 重仓一个小概率事件的结果是?

因此,按前几天的分析,我给大家准备几种策略模板:投资要义:“股债平衡兼套利,低估分散不深研”——大类资产配置,轮动,择时,多策略组合。

大类资产配置模板,收益率6-10%,但很稳健。

轮动,主动管理,通过截面比较,相对分散,收益率高,仍比较稳健。轮动分为规则信号,机器合成因子信号等。

择时,就是大家想“赌“一把用的。比如你发现一个”超级好“的机会。

策略组合。把多个策略组合在一起。

所有AI量化投机,不会超出这些模板。

在开始之前,还是需要准备数据:之前我们提供了期货主连合约和国内指数的脚本,今天新增:etf和LOF的日线采集脚本。

图片

import akshare as ak
from datetime import datetime

from config import DATA_DIR

symbol = '513500.SH'
code = symbol[:6]
df = ak.fund_etf_hist_em(symbol=code, period="daily", start_date="20000101", end_date=datetime.now().strftime('%Y%m%d'), adjust="hfq")
cols = {'日期': 'date', '开盘': 'open', '收盘': 'close', '最高': 'high', '最低': 'low', '成交量': 'volume',
            '换手率': 'turn_over', '成交额': 'amount'}
df.rename(columns=cols, inplace=True)
df['date'] = df['date'].apply(lambda x: str(x).replace('-', ''))
df=df[cols.values()]
print(df)

DATA_DIR.joinpath('etfs').mkdir(exist_ok=True)
df.to_csv(DATA_DIR.joinpath('etfs').joinpath(symbol + '.csv'), index=None)
print(df)

数据保存在本地data/efts, data/lofs下。

图片

准备好了数据,就可以开始写策略,从大类资产配置——策略模板开始。

使用脚本,下载四个ETF是我们的交易标的池:医药,消费,国债,城投债。我们做一个股债大类资产配置。

for symbol in ['159929.SZ', #消费
               '512010.SH', # 医药
                '511220.SH', # 城投债
                '511010.SH', # 国债
               ]:
    download_data(symbol)

数据都一并连同代码打包给大家了:

图片

from engine.engine import Engine
from engine.task import TaskAssetsAllocation

task = TaskAssetsAllocation()
task.start_date = '20141216'
task.algo_period = 'RunDays'
task.algo_period_days = 126
task.symbols = ['159929.SZ',  # 消费
                '512010.SH',  # 医药
                '511220.SH',  # 城投债
                '511010.SH',  # 国债
                ]
task.benchmark = '510300.SH'

e = Engine(task=task)
e.run()
e.analysis(console=True)

task进行了一次重构:

图片

图片

投资的世界纷繁复杂,千头万绪。

既然是科研,再乱的情况也得理出个线索。

投资的第一性原理是什么?——价值创造。

资本市场的缘起,本身就是聚焦资金办大事,共担风险。像大航海,发现新大陆这样的风险巨大,高度不确定,当然若是成了,收益也巨大的事情得以办成。

投资市场的繁荣,要求流动性。而流动机带来的投机。

投机的第一性原理是什么?——低买高卖。

不管它背后是啥,只要能交易,只要有波动,就可以投机。

搞清楚定义,从这个角度望过去,“量化投资”应该叫“量化投机”才更准确。

价值投资有一种天然的道德感上的正确。

但实际操作很难。

刘诚在他的《投资要义》里讲的投资体系:“股债平衡兼套利,低估分散不深研”。

他自己是私募公司老板,身家都有股市里。他用自己的案例告诉我们,要搞明白一家公司有多难,而且这是动态变化的,宏观在变,市场在变,连公司创始人自己都搞不明白。

价值投资还要“格系”和“芒系”。格是巴菲特的师傅格雷厄姆,芒是巴菲特的合伙人,投资大师芒格。格系更讲当前的静态低估,芒系讲动态估计,也就是更看未来成长性。

刘诚的观点是芒系很难,大海捞针找顶尖的优质公司,而低估值的普通公司,在熊牛周期转换就会出现。

普通人可以再退一步,也别找公司了,使用指数ETF通通搞定。

这两句话我大致认同,但“低估”这两字在操作性上还要探讨。

一般说指数低估,就是PE/PB分位点,或者其他指数。

按这个标准,纳指和标普早就需要空仓,而A股当下遍地低估。这样的持仓体验感是很差的。

现代投资理论,从讲大类资产配置开始的。

“把长期向上的,低相关性的投资标的组合在一起”,获得长期的Beta,天然可以降低波动性。

我自己建议的 “恒定市值平衡的大类资产配置体系”,获取长期年化10%的收益。让账户自动运转:构建一个稳健的长期年化10%(回撤小于6%)的大类资产组合

那你会问,如果我们还想主动有所作为,增厚收益呢?

不考虑深度研究公司(确定太难)的话,那就是“量化投机”。

既然投机,那就偏右侧交易吧,“强者恒强”,而且市场上动量一直有效。

系统源代码发布v2.4供下载,带年化32.1%策略,简化GUI逻辑

咱们的趋势策略,当前的表现,去年指数跌11%的大环境,获得这个收益还是不错的。

图片

http://www.ailabx.com/task/a568a2e8-f145-4229-b20b-9a2435be26ed

(浏览器打开这个链接可以查看策略)

对比二者,你要是问我,更喜欢前面的10%,还是这后面的32%,我如实的告诉你,我自己大部分仓位建在前者。

为什么?前者有坚实的逻辑基础,涨与跌不慌,而且基本不需要太操心,偶尔做一些再平衡即可。

后者表现很好,但策略会不会失效?尤其是经历回撤期是策略失效,还是正常回撤?——投资都难的是什么?信心。

刚刚接触投资的同学,以为投资能一夜暴富。

星球群里的新同学,小心翼翼问,你们是不是都财富自由了。仿佛说,如果答案是否的话,那你们是不是骗子,是不是割韭菜。——管理员给的答案是——“在路上”。

投资之路,最难的是——你不接受慢慢变富。但你有没有想过,如果没有投资,你可能不经意间在慢慢变穷,因为通胀。

本金越大,越不需要折腾。

那你说,就是本金小呀,除了省之外,想把10%,提升到20%-30%+的年化,可以吗?可以,上面不就有一个年化32%的策略了。

主动管理还有一个好处,有些同学希望“以投资为生”,希望在不同的年份里,都有绝对收益。

以500万本金为例,400万配置大类资产,获取10%年化,不操心;100万配置主动管理,博取年化20%+的收益。

另外,保持主动投资,还是有点乐趣的,就像很多人仍喜欢开手动档的车一样,有操控感。

那么问题来了,主动投机的第一性原理是?——预测的胜率,赔率。

此为交易系统。

动量轮动是则于时间序列上,动量有延续性,不同标的之间有低相关性,当动量反转时,与之互补的标的会“自动”顶上来。——骑最快的马。

核心就是如何“找到”——”预测”哪匹是最快的马。

当然很难。你如果可以预测未来,你将富可敌国。

没有人可以,要么神,要么神棍。

那主动管理做什么呢?——概率。

策略类型可以归为: 大类资产配置,轮动,择时,多策略组合。

多标的在一块,可以归结为轮动,topK排序是必要的,当然可以有出入场的信号筛选机制。

机器学习和多因子在这里的作用,就是给出排序信号,或者说基于多因子的排序模型。

择时更为复杂:海龟就是一个典型的择时系统,信号,仓位管理,止损等等,如何构建出一个正概率的系统。

今天新增一个脚本,下载A股指数的:

图片

图片

import akshare as ak

from config import DATA_DIR
DATA_DIR.joinpath('indexes').mkdir(exist_ok=True)

symbol = 'sz399552'
symbol = '000300.SH'
code = symbol[-2:].lower() + symbol[:6]
print(code)

df = ak.stock_zh_index_daily(symbol=code)
df['date'] = df['date'].apply(lambda x: str(x).replace('-', ''))
print(df)

df.to_csv(DATA_DIR.joinpath('indexes').joinpath(symbol + '.csv'), index=None)
print(df)

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103580
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注