小市值策略

2022-08-04 08:51:11 字數 3219 閱讀 7684

小市值策略,本質上說就是市值小的**,在將來**的概率越大

據刑不行分享小市值策略提到:乙個過去10年可以翻400倍的選股策略,可以說是非常的誇張的了,也想著一探小市值的風采

在刑不行關於小市值的策略是:在每個月的月底,找出市值最小的10只**,然後全倉等額**,每月如此反覆。

根據聚寬提供的小市值策略,我們將其稍微修改下,每25個交易日調倉頻率,每次找出市值最小的10只**,全倉等額**,策略非常的簡單

**如下:

'''

篩選出市值介於20-30億的**,選取其中市值最小的三隻**,

每天開盤**,持有五個交易日,然後調倉。

'''## 初始化函式,設定要操作的**、基準等等

def initialize(context):

# 設定滬深300作為基準

set_benchmark('000300.xshg')

# true為開啟動態復權模式,使用真實**交易

set_option('use_real_price', true)

# 設定成交量比例

set_option('order_volume_ratio', 1)

# **類交易手續費是:**時佣金萬分之三,賣出時佣金萬分之三加千分之一印花稅, 每筆交易佣金最低扣5塊錢

set_order_cost(ordercost(open_tax=0, close_tax=0.001, \

open_commission=0.0003, close_commission=0.0003,\

close_today_commission=0, min_commission=5), type='stock')

# 持倉數量

g.stocknum = 10

# 交易日計時器

g.days = 0

# 調倉頻率

g.refresh_rate = 25

# 執行函式

run_daily(trade, 'every_bar')

## 選出小市值**

def check_stocks(context):

# 設定查詢條件

q = query(

valuation.code,

valuation.market_cap

).filter(

valuation.market_cap.between(20,30)

).order_by(

valuation.market_cap.asc()

)# 選出低市值的**,構成buylist

df = get_fundamentals(q)

buylist =list(df['code'])

# 過濾停牌**

buylist = filter_paused_stock(buylist)

return buylist[:g.stocknum]

## 交易函式

def trade(context):

if g.days%g.refresh_rate == 0:

## 獲取持倉列表

sell_list = list(context.portfolio.positions.keys())

# 如果有持倉,則賣出

if len(sell_list) > 0 :

for stock in sell_list:

order_target_value(stock, 0)

## 分配資金

if len(context.portfolio.positions) < g.stocknum :

num = g.stocknum - len(context.portfolio.positions)

cash = context.portfolio.cash/num

else:

cash = 0

## 選股

stock_list = check_stocks(context)

## ****

for stock in stock_list:

if len(context.portfolio.positions.keys()) < g.stocknum:

order_value(stock, cash)

# 天計數加一

g.days = 1

else:

g.days += 1

# 過濾停牌**

def filter_paused_stock(stock_list):

current_data = get_current_data()

return [stock for stock in stock_list if not current_data[stock].paused]

最後的回測結果更是恐怖,策略收益高達到856%,完全就是在碾壓作為基準的滬深300指數(回測時間為2018-07-01到2020-07-01,初始資金為10萬元),但就是最大回測有太高

那為何這麼多年了,小市值策略還這麼牛叉呢。(參考:量化獅的知乎回答)

從上面的回測結果也發現,小市值策略絕對是大幅度跑贏指數的,甚至可以說是a**場眾多因子中表現最牛叉的乙個,並且,在國外不同市場都得到了實證,不可能因為ipo放水就失效了

小市值因子有效的內因有很多,其中乙個是小市值企業的成長性,一家30億市值的企業成長為300億的企業,其難度明顯要比300億的企業成長為3000億要小得多。另乙個就是諾貝爾獎得主尤金·瑪法的三因子模型提出的風險溢價因素,也證明了小市值因子的有效性。這兩個內因只是說明了小市值**具備一定溢價和超額收益,真正決定小市值策略超額收益的還是小市值**的高波動性

小市值策略,賺在輪動贏在波動

輪動收益 = 輪動頻率 * 輪動波幅

小市值**的波動性要比市值中性或大市值**大得多,同時,a股小市值**又要比國際市場的波動性更大,所以按照策略進行輪動的交易者可以更頻繁的獲得輪動阿爾法收益

a**場小市值**之所以存在超高的輪動收益,很大程度上是**於市場中大量的非理性**行為,比如借殼、充足、題材概念、還有沒有道理的高配送等等,但隨著市場環境的變化以及監管力度的加強,小市值**短期內暴漲**的現象肯定會逐漸受到遏制,**波動的頻率和波幅會日趨減少,必然會影響小市值策略未來的預期收益率

策略模式小練習

練習 假如有若干個person物件儲存在list物件之中,對它們分別用id,姓名,年齡進行排序 正序 倒序 如果年齡或者姓名重複,則按照id的公升序進行排序。要求使用策略模式進行。person物件 public class person public int getid public void se...

策略模式小練習

練習 假如有若干個person物件儲存在list物件之中,對它們分別用id,姓名,年齡進行排序 正序 倒序 如果年齡或者姓名重複,則按照id的公升序進行排序。要求使用策略模式進行。person物件 public class person public int getid public void se...

策略模式小練筆

package com.company 實現類 趙雲 public class zhaoyun 不知道具體的方法實現,只知道某介面可以實現方法。該方法體現了高內聚低耦合。package com.company 錦囊類 public class context 使用計謀 public void ope...