今天这篇介绍小市值选股策略。

小市值选股策略是指以市值为标准,选取市场中市值较小的股票进行投资的策略。该策略基于小市值股票具有以下优势:

  • 估值相对较低:小市值股票往往被市场低估,具有较大的超额收益潜力。
  • 成长潜力高:小市值公司通常处于发展初期,具有较高的成长空间。
  • 流动性溢价低:小市值股票的流动性溢价较低,投资者可以以更接近真实价值的价格买入。

小市值选股策略的具体实施方法如下:

  1. 确定市值范围:根据市场情况,确定小市值的具体范围。例如,可以将市值在100亿元以下的股票定义为小市值股票。
  2. 筛选股票池:根据选定的市值范围,筛选出符合条件的股票池。
  3. 选股指标:根据投资目标和风险偏好,选取合适的选股指标。常见的选股指标包括市盈率、市净率、股息率、营业收入增长率、净利润增长率等。
  4. 构建投资组合:根据选股指标,选取符合条件的股票,构建投资组合。
阅读全文 »

上一篇文章跟着一篇研报过了一遍安装流程,以及一些数据获取相关的命令。今天在跑研报提供的例子的时候发现有些代码已经跑不通了,估计是qlib有些api已经改了,在qlib源码中的examples找到了官方的入门例子。

图片

workflow_by_code.ipynb 与 workflow_by_code.py 是用qlib跑回测的完整流程代码。在 tutorial 目录中的 detailed_workflow.ipynb 是详细工作流程的代码。

接下来照着 workflow_by_code.ipynb 把整个流程跑一遍。

导入 qlib 库:

阅读全文 »

今天试用了一下Qlib,一款微软开源的人工智能量化框架。它用起来没有backtrader那样简单易懂,网上相关的教程很少,我找到了一篇介绍Qlib的研报,大家想看这篇研报可以私信我。本文记录一下Qlib的安装及使用方法。

Qlib 是一个面向人工智能的量化投资平台,旨在利用人工智能技术从探索想法到实施生产,实现潜力,赋能研究,创造价值。Qlib 支持多种机器学习建模范式,包括监督学习、市场动态建模和强化学习。

Qlib支持Windows和Linux。推荐在Linux下使用Qlib。支持Python3,不过不支持最新的python,最高支持到python3.8。

在 Windows 上使用的话还得安装好 Microsoft C++生成工具,下载地址:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/

我用 anaconda 创建了一个新的python3.8的环境来安装qlib,安装命令如下:

阅读全文 »

回测时,佣金的设置有时会被忽略,然而在频繁交易时过高的佣金会极大地影响收益,只有正确设置佣金才能让我们的回测更贴合实际。

交易佣金的收取规则

首先来看一下交易佣金的收取规则(参考东方财富的帮助文档):

税费合计为个股交易费用和股息红利税费之和,其中不同证券品种的交易费用构成如下:

1、沪深A股

阅读全文 »

今天这篇是backtrader文档的学习笔记。主要介绍了怎么规范化(声明式)及不规范化(命令式)创建自定义指标的方法,通过声明式创建指标可以少写很多代码。

官方文档链接:https://www.backtrader.com/blog/2019-07-08-canonical-or-not/canonical-or-not/

规范 vs 非规范指标 (Canonical vs Non-Canonical Indicators)

这个问题经常以各种形式出现,例如:“如何使用 backtrader 最佳/规范地实现这个或那个指标?”

backtrader 的目标之一是尽可能灵活地支持各种情况和用例,因此答案很简单:“有多种方式”。对于指标(这是最常出现问题的对象),有以下三种实现方式:

阅读全文 »

买入并持有,是一个最简单的策略,一般来说这个策略是用来衡量其他策略好坏的基础。也就是如果一个策略的收益最后还跑不赢买入并持有的策略的话说明这个策略是无效策略,白折腾一场。

在backtrader官网上有相关介绍:https://www.backtrader.com/blog/2019-06-13-buy-and-hold/buy-and-hold/

这里我只介绍最简单的买入并持有的策略代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class BuyAndHold_1(bt.Strategy):
def start(self):
# 获取策略开始时的现金
self.val_start = self.broker.get_cash()

def nextstart(self):
# 把所有现金都用来购买股票
size = self.broker.getvalue() / self.data.close[0] // 100 * 100
self.buy(size=size)

def stop(self):
# 策略结束后计算投资回报率
self.roi = (self.broker.get_value() / self.val_start) - 1.0
print('ROI: {:.2f}%'.format(100.0 * self.roi))

在策略开始时调用start函数,获取当前的现金。随后调用nextstart函数把所有现金都用来购买股票,nextstart函数在第一个next函数调用开始前触发,nextstart函数只触发一次。最后在回测时间结束后调用stop函数,计算投资回报率。

阅读全文 »
0%