初學者的Python金融分析日記 – Quantopian EP2 Getting Started(上)

我們首先先簡單介紹algorithm環境所需要的一些知識,在這邊,algorithm裡面提供的函數可以處理包括訂單調度以及執行等功能,我們在這邊介紹一些核心函數。

initialize(context)

這是一個初始化函數,以context作為一個input,所有參數的初始化與一次性邏輯都寫在這。這裡另一個重點為context為一python 字典,是用儲存整個過程的狀態,所有的變數應該存入context裡面,而非在宣告一個全局變數,存變數的方法(contex.some_attribute)

before_trading_start(context, data)

這個函數會在每天交易開始前被呼叫,使用context(參數)與data(每天資料)作為input。這個函數可作為資料的前處理。

schedule_function(func, day_rule, time_rule)

Quantopian預設在9:30AM-4PM Eastern Time 作交易,schedule_function可以指定時間執行特定的函數。

以上是完整的程式碼:

# Import Algorithm API
import quantopian.algorithm as algo

# Pipeline imports
from quantopian.pipeline import Pipeline
from quantopian.pipeline.data.psychsignal import stocktwits
from quantopian.pipeline.factors import SimpleMovingAverage
from quantopian.pipeline.filters import QTradableStocksUS


def initialize(context):
    #Attach pipeline to algorithm
    algo.attach_pipeline(
        make_pipeline(),
        'data_pipeline'
        )
    algo.schedule_function(
        rebalance,
        date_rule=algo.date_rules.week_start(),
        time_rule=algo.time_rules.market_open()
        )

def before_trading_start(context, data):
    context.pipeline_data = algo.pipeline_output('data_pipeline')

def make_pipeline():
    base_universe = QTradableStocksUS()
    sentiment_score = SimpleMovingAverage(
    inputs=[stocktwits.bull_minus_bear],
    window_length=3
    )
    return Pipeline(
        columns={
        'sentiment_score':sentiment_score,
        },
        screen=(
            base_universe &
            sentiment_score.notnull()
        )
        )

def rebalance(context, data):
    log.info(context.pipeline_data.head(10))
Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *