按不同的思路,构建不同的策略,形成相关度低的策略集。

多因子模型的实战,考虑到可转债数据最容易获得。

咱们从可转债市场开始——其实逻辑都是一样的。

一是从投资理念看,可转债与ETF相似之处在于,可转债也属于“中低”风险投资领域;

二是可转债几百支(A股市场,一共上市954支可转债,除去已经退市的,当前可以交易的转债为567支),数据量相对小,而且可转债的数据里,也需要构建对应的正股数据,也为后续做股票数据打下基础。

可转债背后的正股就是股票,股票的因子都是可以用的。另外可转债有债性,其实就看涨期权,这部分因子也可以用。

策略的基准就是“双低”,这个玩转债的同学都非常熟悉了,长期有效的策略。有点类似股票里的低估值,只要买得便宜,分散,市场都会回来的。

通过这一个多因子“流水线”的搭建,我们把这个体系建立起来。

后续就是补充基础数据,比如股票市场的价量数据、基本面数据,甚至是另类数据。然后积累因子库,因子自动分析、筛选、入库,定期检测。

按不同的思路,构建不同的策略,形成相关度低的策略集。

1、下载可转债数据,我们从tushare上下载,包括计算好的转股溢价率:

图片

2、数据加载,读了所有——包括已经退市的历史数据:

import sys
sys.path.append('../')
from matplotlib import rcParams
rcParams['font.family'] = 'SimHei'

import backtrader as bt
from datafeed.dataloader import CSVDataloader
from backtrader_extends.engine import BacktraderEngine, StFetcher
from datafeed.dataloader import CSVDataloader
from backtrader_extends.strategy import StrategyBase
from backtrader_extends.algos import *
from datetime import datetime
import pandas as pd
from config import DATA_DIR_BASIC
bonds = pd.read_csv(DATA_DIR_BASIC.joinpath('cb_list.csv'))['ts_code']

df = CSVDataloader.get_df(bonds, set_index=True, start_date='20150101',path='bonds')
df = CSVDataloader.calc_expr(df, ['close+cb_over_rate'], ['double_low'])
print(df)

一共50多万行数据——这里我们已经计算好了所有转债的“双低”因子——double,其实就是收盘价+ 100* 转股溢价率。

图片

图片

图片

吾日三省吾身

“做时间的朋友”——把目标变成系统,就是把你的目标,转换成每天都能做,每天做持续做的事情。

然后,就但行好事,莫问前程。

短期内可能看不出明显的变化,但随着时间的推移,你会拿到你想要的结果。

春种秋收,如此而已。

你现在的生活,是五年前的你的行为模式,认知模式所决定的。

你想一朝一夕去改变,不可能。

但你可以让五年后的自己,变成自己更喜欢的样子。

其实不是写鸡汤,而是,成功与成长,本身就是显学。

你看似懂那么多道理,却过不好这一生的原因是,你并没有真懂,或者懂了没有去践行。或者践行了一段时间没有持续下去。——如此罢了。

定下10倍的目标,而后付出10倍的努力。

今天来看一个有意思的策略——10年13倍(年化28.2%,夏普1.2)大类资产趋势轮动。

图片

净值从1开始算,结果是13.79,翻了13倍。

折合到长期年化,按复利算,达到28.2%。

图片

四大底层大类资产的趋势图:

图片

以及相关分析:

图片

除了沪深300与创业板走势比较相关之外,黄金与美股与A股市场的相关性均比较弱。

今天的策略,我使用的底层框架是bt。

图片

大家拿到代码后,建议使用backtrader,咱们封装的框架基础上,重新复现一下。

核心代码:

all = []
for K in [1,]:
    s = bt.Strategy('1012倍的趋势轮动(大类资产)'.format(K), [
                           SelectTopK(signal,K),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
    all.append(s)
stras = [bt.Backtest(s, data) for s in all]

数据都已经后复权好,直接加载使用即可:

from datafeed.dataloader import CSVDataloader
data = CSVDataloader.get(['510300.SH','159915.SZ','513100.SH','518880.SH'])
data.dropna(inplace=True)
(data.pct_change()+1).cumprod().plot()

图片

吾日三省吾身

01

和一些朋友聊起过“一人企业”,“自媒体”的概念。

像长期主义,真诚,坚持更新等等这些词,看起来平常,但真的管用。

收到的反馈是——“得等到退休”再说,或者“有没有短平快的方法,比如AI?”,再或者“这个赛道做的人太多了,没有优势”。。

很多人对现状不满,也想改变,然后一直没有变化,根本原因在哪里?——没有行动。

没有行动的理由,统称为借口。只是让自己舒服一点。——我还在想,只是暂时还没有想清楚,所以先“躺”一会。

没有想明白的时候,路是一步步走出来的。

先起飞,再调整方向。

02

忙的时候想闲,孩子闹的时候想清静。

但真正闲下来,也不知道做什么,然后还是让自己忙起来。

孩子不在身边的时候,又想孩子。

忙里偷闲才是好的状态。

看着孩子睡着了,忍不住抱抱他也是幸福。

其实,人就是这么复杂。

纵情山水,不是所有人都喜欢。

一个人在海边,对着无边的大海发呆,或者躺在海景酒店里听海边呼啸和大雨瓢泼。

旅游只是从一个自己待腻了的地方,换到另一个别人待腻了的地方拍照打呀。

除非通过阅读,赋予它意义——否则行万里路,不过徒劳。

你手里正在做的事情,有意义吗?

人生有意义吗?

从小,我们就知道好好读书,好好工作,好好生活,把身边的人照顾好,然后呢?

年岁成长,很多老一辈的,咱们那个年代一明星,名人开始离我们而去。

一些上了年纪的长辈开始逐渐离开。

爸妈也在变老,在感慨岁月。

孩子在长大,会有自己独立的思想和他们自己要走的路。

终将有一天,我们也会与这个世界告别。

在历史长河中,沧海之一粟,时间长河里,一朵浪花都谈不上。

纠结有何意义呢?

但人还得有点精气神。

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

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

相关推荐

发表回复

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