國外量化平臺-quantopian體驗

https://www.quantopian.com

整體感覺

優點:
1,功能較全,現在還沒有太多感觸。但國內的量化平臺都是仿照國外的,很多東西也是從國外引進來的。
2,分享策略。上面有人分享他的策略,並且免費看源代碼。相比而言,國內的全都要錢,一個還不知道效果怎麼樣的策略,要充會員才能看。不得不說,就開源和分享而言,國外做的好得多,如GitHub。
缺點:
1,全英文。對大部分國人來說,具有語言障礙。
2,不支持A股。不過我現在僅以學習爲主,無所謂了。
3,有時候有些地方太卡了。部分頁面可能需要fq。打開notebook也忒慢了。

下面就要開始我的量化入門了。

開始(Getting Started)

https://www.quantopian.com/tutorials/getting-started

https://www.quantopian.com/research/notebooks上新建一個notebook,並複製下面代碼,運行。
可以得到和文檔一樣的圖片和結果。

from quantopian.pipeline.data.factset import Fundamentals, EquityMetadata

is_share = EquityMetadata.security_type.latest.eq('SHARE')
is_primary = EquityMetadata.is_primary.latest
primary_shares = (is_share & is_primary)
market_cap = Fundamentals.mkt_val.latest

universe = market_cap.top(1000, mask=primary_shares)

from quantopian.pipeline.data import EquityPricing
from quantopian.pipeline.factors import SimpleMovingAverage

# 1-month (21 trading day) moving average factor.  1個月的移動平均因子
fast_ma = SimpleMovingAverage(inputs=[EquityPricing.close], window_length=21)

# 6-month (126 trading day) moving average factor. 6個月的移動平均因子
slow_ma = SimpleMovingAverage(inputs=[EquityPricing.close], window_length=126)

# Divide fast_ma by slow_ma to get momentum factor and z-score.
momentum = fast_ma / slow_ma  # 快的/慢的 = 動量因子
momentum_factor = momentum.zscore()


from quantopian.pipeline import Pipeline
from quantopian.pipeline.domain import US_EQUITIES

# Create a US equities pipeline with our momentum factor, screening down to our universe.
pipe = Pipeline(
    columns={
        'momentum_factor': momentum_factor,
    },
    screen=universe,
    domain=US_EQUITIES,
)

# Run the pipeline from 2016 to 2019 and display the first few rows of output.
from quantopian.research import run_pipeline
factor_data = run_pipeline(pipe, '2016-01-01', '2019-01-01')
print("Result contains {} rows of output.".format(len(factor_data)))
factor_data.head()


from quantopian.pipeline.factors import Returns

# Create and run a Pipeline to get day-over-day returns.
returns_pipe = Pipeline(
    columns={
        '1D': Returns(window_length=2),
    },
    domain=US_EQUITIES,
)
returns_data = run_pipeline(returns_pipe, '2016-01-01', '2019-02-01')

# Import alphalens and pandas.
import alphalens as al
import pandas as pd

# Shift the returns so that we can compare our factor data to forward returns.
shifted_returns = al.utils.backshift_returns_series(returns_data['1D'], 2)

# Merge the factor and returns data.
al_returns = pd.DataFrame(
    data=shifted_returns, 
    index=factor_data.index,
    columns=['1D'],
)
al_returns.index.levels[0].name = "date"
al_returns.index.levels[1].name = "asset"

# Format the factor and returns data so that we can run it through Alphalens.
al_data = al.utils.get_clean_factor(
    factor_data['momentum_factor'],
    al_returns,
    quantiles=5,
    bins=None,
)

from alphalens.tears import create_full_tear_sheet

create_full_tear_sheet(al_data)

在這裏插入圖片描述
代碼跑通了,但內容還不是很懂,後續學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章