# #Quantopian Research を使って HighLowRatio を描画

## HighLowRatio とは

HighLowRatioの，

• 数値が100％に近ければ、市場がイケイケドンドン＼(^o^)／
• 数値が0％に近ければ、(((( ;ﾟдﾟ))))ｱﾜﾜﾜﾜ

という雰囲気を示します．

`Highの銘柄数 / (Highの銘柄数 + Lowの銘柄数)`

という簡単なモノです．

これだとブレが大きいので１０日移動平均を取ることが多いです．

## Quantopian Research を使う

では，Quantopian Research を使って，計算してみましょう．

```from quantopian.pipeline.experimental import QTradableStocksUS
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.factors import CustomFactor
from quantopian.research import run_pipeline
from quantopian.pipeline import Pipeline

import numpy as np

class isHighToday(CustomFactor):
inputs = [USEquityPricing.high]
window_length = 252
def compute(self, today, asset_ids, out, values):
max_values = np.nanmax(values,axis=0)
high_252 = max_values  == values[-1]
out[:] =  high_252

class isLowToday(CustomFactor):
inputs = [USEquityPricing.low]
window_length = 252
def compute(self, today, asset_ids, out, values):
min_values = np.nanmin(values,axis=0)
low_252 = min_values == values[-1]
out[:] = low_252

def make_pipeline1():
base_universe = QTradableStocksUS()
pipe = Pipeline()
pipe.add(isHighToday(), "isHighToday")
pipe.add(isLowToday(), "isLowToday")
pipe.set_screen(base_universe)
return pipe

start_date = '2017-01-01'
end_date = '2017-12-22'
results = run_pipeline(make_pipeline1(),
start_date=start_date,
end_date = end_date )

# highlows = results.reset_index().groupby(by = "level_0")[["isHighToday", "isLowToday"]].sum()
highlows = results.groupby(level=0)[["isHighToday", "isLowToday"]].sum()

highlows["high_low_ratio"] = highlows["isHighToday"] / ( highlows["isHighToday"] +  highlows["isLowToday"])
highlows["high_low_ratio_ma10"] = highlows["high_low_ratio"].rolling(10).mean()

spy = get_pricing("SPY", start_date=start_date,end_date= end_date, fields='price')
highlows["spy"] = spy
highlows[["high_low_ratio_ma10", "spy"]].plot(secondary_y = "spy")

```

## 解説

• 銘柄の選定は `base_universe = QTradableStocksUS()` で行っています．これは Quantopian が用意している，トレーダブルな銘柄集です．詳しくはQTradableStocksUS()をご参照下さい．
• 9月頃にHighLowRatioが大きく落ちていますが，これは８月１７日のトランプ氏、２助言組織を解散　企業首脳が相次ぎ辞任を受けてマーケットが過剰反応し，SPが1.5％以上落ちた影響を受けています．
• multiindex を reset_index せずに groupby する方法がわからず，reset しています．どなたかご存知でしたらご教授下さいm(__)m コメントで @driller さんに教えて頂きました！ありがとうございます！

• 次回イベントでは，やはりリサーチの勉強した方が良いかもしれないな．．．

## 今後の Tokyo Quantopian User Group

メリークリスマス！

Sign up for free and join this conversation.
If you already have a Qiita account log in.