前言

2021年转瞬即逝,回顾一下在蚂蚁上定投的基金,在金融危机风雨欲来的2022年,分享一个懒人版的理财策略,愿大家新年里能财源广进,元旦快乐。

基金定投

我的策略非常简单,每月无脑小额定投,等"全民炒股"这种话题上新闻,择时清仓。一般2-3年有一个操作点,每次操作窗口期几个月,错过就从头再来。卖出点不影响买入操作,循环往复。

为什么选择基金

  • 每月一次或几次交易,不影响本职工作,繁复的工作交给机器来做。

  • 基金可以规避单一股票的对应行业或公司的黑天鹅事件。比如乐视的"下周回国",或是“双减"对整个教育行业的冲击。

  • 相对股票来说,基金更“永续”,更少的停牌,ST或是增发干扰。

  • 在瞬息万变的股票市场,政策的影响度,舆情的提取手段尚不成熟,基金对于普通人来说可以大幅度简化投资模型。

为什么选择指数基金

  • 公募基金的基金经理有"业绩原罪",即不惜一切代价追求高利润率,因为这样才能让排名靠前,才能让投资者"看到"。这种激励机制下,交易员更偏向冒险的投资风格,赌赢手续费赚的盆满钵满,赌输不过是换个基金代号从头再来。

  • 基金经理策略会与我们的自主策略混淆,无法归因,无法回测和改进策略,指数基金则减少了“个人”风险的集中度。

为什么选择定投策略

  • 定投不择时,相对模型简化了一个变量。

  • 小额定期交易可以更好的小步试错,累积时序数据。

  • A股的“「熊长牛短」"特征,意味着间隔平均的投资点大概率会落于熊市的低位,降低成本。

关于高频交易

  • 对于普通投资者来说,高频交易策略的手续费偏高,非金融专业的知识储备不足。

  • A股的T+1也相对限制了个股上交易操作(若资金量大可以做T改善这个问题,但也面临资金冲击现象)。

  • 基金作为一揽子股票的ETF,则不太适合频繁交易,有能力的可以选择高增长行业的龙头股来做高频。

弊端

  • 投资周期非常长,一般按年计;

  • 收益率一般(年化8%左右),远比不上专业投资人,更不能和币圈相提并论;

  • 资金流动性不好,长时间的熊市属于常态,卖出的窗口期很短;

  • 投资风格非常保守,更偏向于理财,而非投资。

优点

  • 完全属于被动投资,平时几乎不需要操心;

  • 没有追涨杀跌,没有人性考验,可以天天睡得安稳;

  • 熊市"播种"救企业于危难,牛市"分红"共享盛世繁华,政治正确,妥妥的正能量。

量化交易平台

普通的定投或是简单的智能定投策略,在支付宝上已经能很方便的操作了。作为码农,我们肯定希望更自主可控些,这里有更多的量化交易平台可供选择:

  • 开源 vnpy https://github.com/vnpy/vnpy

  • 聚宽 https://www.joinquant.com/

  • 米筐 https://www.ricequant.com/

  • 优矿 https://uqer.datayes.com/

大多以 Python 为开发语言,对于习惯拿机器学习做数据分析的朋友非常友好,这里以聚宽为例。官网注册个账号,新建 Notebook 就能在线运行了,离线版本需要额外申请免费6个月试用。详细可以参考一下 API 文档。

https://www.joinquant.com/help/api/help#api:API文档

初始化

选择沪深300为基线,每月定投1万元,每次至少定投10个月才赎回,目标收益率为 20%。

# 导入函数库
from jqdata import *# 初始化函数,设定基准等等
def initialize(context):# 设定沪深300作为基准set_benchmark('000300.XSHG')# 开启动态复权模式(真实价格)set_option('use_real_price', True)# 输出内容到日志 log.info()log.info('初始函数开始运行且全局只运行一次')# 过滤掉order系列API产生的比error级别低的log# log.set_level('order', 'error')### 股票相关设定 #### 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')# 要操作的基金:(g.为全局变量)g.security = '510300.XSHG'# 预期目标g.goal = 1.2# 均值窗口期g.during = 500# 定投基本值g.base_order_value = 10000# 卖出锁定周期g.sell_period = 10g.sell_timestamp = context.current_dtrun_monthly(market_open, monthday=1, reference_security='000300.XSHG')

均线策略

在每月无脑定投中,稍微加点策略:

高位少买

# 高位买入
def high_buy(security, base_order_value, cash, ratio):# 默认扣款率pay_ratio = 1if ratio < 0.15:pay_ratio = 0.9elif ratio < 0.50:pay_ratio = 0.8elif ratio < 1:pay_ratio = 0.7else:pay_ratio = 0.6# 需买入的金额order_value_cash = base_order_value*pay_ratiolog.info("%s: %f, cash: %d, ratio: %f"%(security, pay_ratio, cash, ratio))if cash < order_value_cash:log.info("现金 %d 不足, 买入失败 %s: %d " % (cash, security, order_value_cash))return Falselog.info("高位买入 %s: %d" % (security, order_value_cash))order_value(security, order_value_cash)return True

低位多买

# 低位买入
def low_buy(security, base_order_value, cash, ratio):# 默认扣款率pay_ratio = 1# 近10天的最高价和最低价value_range = get_bars(security, count=10, unit='1d', fields=['high','low'])max_value = max(value_range['high'])min_value = min(value_range['low'])if (max_value - min_value)/max_value > 0.05:# 大幅度震荡,持续下跌通道中if ratio < 0.05:pay_ratio = 0.6elif ratio < 0.10:pay_ratio = 0.7elif ratio < 0.20:pay_ratio = 0.8elif ratio < 0.30:pay_ratio = 0.9elif ratio < 0.40:pay_ratio = 1else:pay_ratio = 1.1else:# 小幅度震荡,形成底部加大购买量if ratio < 0.5:pay_ratio = 1.6elif ratio < 0.10:pay_ratio = 1.7elif ratio < 0.20:pay_ratio = 1.8elif ratio < 0.30:pay_ratio = 1.9elif ratio < 0.40:pay_ratio = 2else:pay_ratio = 2.1       # 需买入的金额order_value_cash = base_order_value*pay_ratioif cash < order_value_cash:log.info("现金 %d 不足, 买入失败 %s: %d " % (cash, security, order_value_cash))return Falselog.info("低位买入 %s: %d" % (security, order_value_cash))order_value(security, order_value_cash)return True

预期止盈

这里为了回测方便,没法"听新闻"判断了,先以满足预期目标收益来止盈。

# 卖出
def sell(security, current_price, MA, sell_timestamp):log.info("sell: %f, MA: %f" %(current_price, MA))if current_price/MA < g.goal:return Falseif (sell_timestamp - g.sell_timestamp).days/30 < g.sell_period:return False# 卖出所有股票,使这只股票的最终持有量为0log.info("%s, %s, %d" % (sell_timestamp, g.sell_timestamp, (sell_timestamp - g.sell_timestamp).days))log.info("达到预期目标, 卖出 %s" % (security))order_target(security, 0)# 更新卖出时间戳g.sell_timestamp = sell_timestampreturn True

运行策略

万事俱备,我们将上述函数都组合到一起,跑一下看看效果。

## 开盘时运行函数
def market_open(context):log.info('函数运行时间(market_open):'+str(context.current_dt.time()))security = g.security# 平均值窗口期during = g.during# 获取股票的收盘价close_data = get_bars(security, count=during, unit='1d', fields=['close'])# 取得过去500天的平均价格MA = close_data['close'].mean()# 取得上一时间点价格current_price = close_data['close'][-1]# 取得当前的现金cash = context.portfolio.available_cash# 定投金额base_order_value = g.base_order_valueif (current_price > MA):# 高位卖出sell(security, current_price, MA, context.current_dt)# 高位少买 high_buy(security, base_order_value, cash, (current_price-MA)/MA)else:# 低位多买low_buy(security, base_order_value, cash, (MA-current_price)/MA)#得到本次所有成交记录trades = get_trades()for _trade in trades.values():log.info('成交记录:'+str(_trade))log.info('本轮结束')log.info('##############################################################')

选择2015年到2021年来做回测,貌似看起来还不错,买入点很多,除了零星几次资金量用完,几乎每月都有交易;卖出点才4次,这一方面受限于“卖出锁定周期”,另一方面也体现A股长期熊市的现象。

年化收益 9.85%,这里小额定投的建仓周期比较长,所以相对资金利用率不够高,这里的仓位可以简单理解为最大投资规模。实际操作中,大家可以把固定收入作为资金投入,大额资金可以用作其他投资,扩大收益率。

再多选几个长周期,比如2017年至今,或是2019年至今,比不上牛市收益,但可以逃过股市熔断大跳水,大多时候收益率能保持稳定正值。

持仓分析

实盘交易

  • 直接对接证券机构

  • 模拟交易,手动操作

    模拟交易

由于我们买入卖出操作不多,可以将制定好的策略,用模拟交易的方式将买入卖出信号通过微信消息来发送,再根据实际情况进行基金操作。

# 给微信发送消息(添加模拟交易,并绑定微信生效)
send_message("买入 %s: %d" % (security, order_value_cash))

总结

看到这里,相信搞深度学习的朋友肯定想拿手上一堆时序模型跃跃欲试了。先小泼盆冷水,就自我体验和身边做量化交易朋友的教训来看,单一模型在A股上基本没戏。

原因主要有以下几点:

  • 时序模型基于历史趋势可再现,历史不会简单重复,只会换种形势卷土重来。

  • 众多的量化机构让原有的“低风险策略点”稍纵即逝,寄生策略泛滥。

  • A股是强政策市,金融因素占比偏小。

  • 散户比例很高,市场情绪化影响偏大。

另外,以上这些仅作为技术分享和个人经验之谈,不作为投资建议。更多的交易策略,等金融专业人士乱入指点。还有NLP舆情分析关键字拉涨停的更多骚操作,评论区打开脑洞吧。

论一个韭菜的自我修养,侠之大者,为国接盘。

哎,2021年说好的每周一更呢,感觉欠了很多的债。有鸿蒙系列的,树莓派系列的,OCR系列的,知识图谱系列的,手稿太多,没有心境慢慢整理,希望来年能补全。

平民版均线量化交易模型相关推荐

  1. python版期货量化交易(AlgoPlus)案例(多进程处理子任务)

    python版期货量化交易(AlgoPlus)案例(多进程处理子任务) python因为简单.易上手,所以深受大家的喜爱,并且随着人工智能的不断发展与进步,python也一跃成为了最受欢迎的编程语言之 ...

  2. 如何构建一个可以盈利的量化交易模型

    构建一个可盈利的量化交易模型需要以下步骤: 数据收集: 首先需要收集大量的历史金融数据, 包括价格, 成交量, 指标等. 数据预处理: 对收集的数据进行预处理, 清洗, 去重, 格式化等工作, 使其能 ...

  3. R语言神经网络量化交易模型

    上篇是逻辑回归模型,这次我们用神经网络模型.再算一遍,试试看 # 载入示例股票library(quantmod) getSymbols("^DJI", src = "ya ...

  4. 基于tushare量化交易模型基础构建(偿债能力排名)

    今天主要是实现了公司偿债能力指标的量化,构建股票池. 思路: 1. 偿债能力量化指标(短期) 相关指标:     流动比率=流动资产/流动负债     速动比率=(流动资产-存货)/流动负债     ...

  5. SF30 | 双均线交易模型的震荡过滤

    致力于分享量化策略,培训视频,Python,算法研究等相关内容 大家好,我是乌克兰剑圣. 均线指标实际上是移动平均线指标的简称,移动平均线(Moving Average,简称MA)由美国投资专家葛兰威 ...

  6. 转发保留不错一篇 数学模型神经网络在程序化交易模型构建中的运用探讨

    数学模型神经网络在程序化交易模型构建中的运用探讨 作者:唐中 目前,程序化交易已经成为国外投行和金融机构交易的主流手法,因为程序化交易是追求稳定持续的盈利模式,能够实现交易的稳定化,从而杜绝人工交易中 ...

  7. 程序员转行量化交易可行吗?

    程序员转量化交易,其实是一件挺顺理成章的事,有一位网友他想向我佐证一下,职业量化交易这一条路,他可以做下去吗,以及其它一些细枝末节的问题. 他以前是某日系合资企业的程序工程师,程序背景是C++与pyt ...

  8. 零基础量化交易:Python入门

    量化交易是近年来崭新的赚钱方式,它将人工智能与金融市场结合,利用算法进行股票.期货.外汇等交易.Python是一种高效.简单.易于学习的编程语言,非常适合量化交易,自然成为量化交易领域的主流编程语言. ...

  9. 期货从入门到高深之量化交易1

    初识量化交易 在期货市场,有这样的一群神秘人物.他们不太关心交易标的的基本面,也不太关心交易标的的新闻,甚至连研报也很少阅读.他们交易的主要依据是交易标的的价格变动. 他们是资本市场上交易最快的玩家之 ...

  10. 开始正经谈谈数字资产量化交易

    我是一名程序媛(没错,是媛不是猿),从毕业到现在写了4年程序了(你敢信?),做过嵌入式,做过测试,当然为了赚外快,也偷偷搞了些小项目.不过,从接触到比特币,我就深深的被吸引了,而且在炒币的同时,我一直 ...

最新文章

  1. 教你如何在 Linux 上为 SSH 登录设置电子邮件提醒
  2. 经典设计模式——策略模式
  3. php客户端连接远程redis,phpredis客户端连接Redis--华为云DCS for Redis使用经验
  4. Apache Ivy
  5. [JavaWeb-HTTP]request对象和response对象的原理
  6. Android内容提供器——运行权限
  7. 鸿蒙是内核名字,华为徐直军:鸿蒙只是内核的名字,是媒体给误解成操作系统...
  8. Python绘制三次贝塞尔曲线
  9. C#中时间格式的转换
  10. JQuery 插件之Ajax Autocomplete(ajax自动完成)
  11. 如何将Groovy中的文件读入字符串?
  12. php的登陆代码,PHP登陆页面完整代码
  13. ajax 跨域 iis7,IIS中使用URL rewrite配置跨域调用
  14. Word文档图标变成空白如何恢复
  15. 你了解PowerBI中的去年同期吗
  16. Maven 指定 Java 编译版本
  17. cstring转int(long转CString)
  18. proxmox换源_安装proxmox后注意事项
  19. ArcGIS教程:填挖方的工作原理
  20. 构建Oracle高可用环境HA rac:企业级高可用数据库架构、实战与经验总结

热门文章

  1. Python实现简单人脸识别
  2. 如何使用NFC双界面读写器UTrust4701读取电子护照信息
  3. C++代码实现栈基本操作
  4. 数据结构:顺序栈的基本操作及实现
  5. 《银联提交服务单》-业务流程
  6. 51中断实验与流水灯protues仿真
  7. Redis项目应用场景与实例汇总
  8. Panda-DEA,一款新的DEA模型软件
  9. ORACLE_mldn_002
  10. 《深入浅出MFC》下载