새로운 Quantiacs 플랫폼을 통해 quants는 재무 데이터를 무료로 다운로드 할 수 있습니다. 시장에 대한 예측은 오프라인으로 수행하거나 Quantiacs 백 테스터를 로컬로 다운로드하거나 클라우드를 무료로 사용하여 온라인으로 수행 할 수 있습니다. 이 기사에서는 Ridge 회귀를 기반으로 한지도 학습 예제를 설명합니다.
Quantiacs를 구축 할 때 우리는 퀀트가 더 많은 기술적 세부 사항을 놓치지 않고 현실적인 거래 시뮬레이션을 수행 할 수있는 플랫폼에 집중했습니다. 우리는 글로벌 금융 시장을위한 고품질 거래 시스템이 퀀트 헤지 펀드 산업에 속하지 않는 재능있는 연구 과학자, 소프트웨어 개발자 및 학생들이 개발할 수 있다고 믿습니다.
현재 시스템에 대한 수수료를 받고있는 최고의 사용자 중에는 실제로 UC Santa Barbara의 물리학 박사 학생 인 Alex와 같은 기술 학부의 학생들이 Quantiacs 콘테스트에서 우승했을 때 1 백만 달러를 할당 받았습니다. 메카트로닉스 엔지니어이자 프로 파이 트레이더로 2 개의 대회에서 우승하면서 2 백만 달러를 할당 받았습니다. 더 많은 자료는 웹 페이지 에서 찾을 수 있습니다 .
당신은 양적 거래에 뛰어 들고 싶은 데이터 과학자입니까, 아니면 어떤 아이디어가 효과가 있는지 테스트하고 싶습니까? 그렇다면 Quantiacs를 사용해보십시오.
Quantiacs에 가입하는 것은 쉽습니다.
Quantiacs 플랫폼의 새 버전을 작성할 때 우리는 기계 학습 방법을 사용하기에 적합한 환경을 제공하는 데 특별한주의를 기울였습니다. 이 기사에서는 비트 코인 선물 계약을 거래하고 Ridge 회귀 (또는 Tikhonov 정규화 의보다 일반적인 개념)를 기반으로하는 시스템의 구현에 대해 설명합니다 .
전체 코드는 매우 간결하며 노트북의 셀에 복사 할 수 있습니다.
import xarray as xr
import numpy as np
import logging
import qnt.data as qndata
import qnt.backtester as qnbt
def load_data(period):
return qndata.cryptofutures.load_data(tail=period)
def predict_weights(market_data):
def get_ml_model():
from sklearn.linear_model import RidgeClassifier
model = RidgeClassifier(random_state=18)
return model
def get_features(data):
def preprocess_data(raw_prices):
log_prices = raw_prices.copy(True)
assets = log_prices.columns
for asset in assets:
log_prices[asset] = np.log(log_prices[asset])
return log_prices
prices = data.sel(field="close").\
ffill("time").bfill("time").fillna(0)
prices_df = prices.to_pandas()
features = preprocess_data(prices_df)
return features
def get_target_classes(data):
price_current = data.sel(field="close").dropna("time")
price_future = price_current.shift(time=-1).dropna("time")
class_positive = 1
class_negative = 0
target_up = xr.where(price_future > price_current,\
class_positive, class_negative)
return target_up.to_pandas()
data = market_data.copy(True)
asset_names = data.coords["asset"].values
features = get_features(data)
target = get_target_classes(data)
prediction_df = data.sel(field="close").isel(time=-1).to_pandas()
for asset_name in asset_names:
target_asset = target[asset_name]
features_asset = features[asset_name][:-1]
target_asset, features_asset = \
target_asset.align(features_asset, axis=0, join="inner")
model = get_ml_model()
try:
model.fit(features_asset.values.reshape(-1, 1), target_asset)
features_asset_predict = features[asset_name][-1:]
prediction_asset = \
model.predict(features_asset_predict.values.reshape(-1, 1))
prediction_df[asset_name] = prediction_asset
except:
logging.exception("model failed")
return xr.zeros_like(data.isel(field=0, time=0))
return prediction_df.to_xarray()
weights = qnbt.backtest(
competition_type = "cryptofutures",
load_data = load_data,
lookback_period = 18,
start_date = "2014-01-01",
strategy = predict_weights,
analyze = True,
build_plots = True
)
블록별로 분석해 보겠습니다. 처음에는 기본적인 범용 라이브러리와 Quantiacs 라이브러리에서 필요한 모듈을 가져옵니다.
import xarray as xr
import numpy as np
import logging
import qnt.data as qndata
import qnt.backtester as qnbt
비트 코인 선물 데이터를로드하는 기능은 다음과 같이 간단하게 정의됩니다.
def load_data(period):
return qndata.cryptofutures.load_data(tail=period)
전략이 정의 된 코드의 핵심은 블록에 포함됩니다.
def predict_weights(market_data):
def get_ml_model():
from sklearn.linear_model import RidgeClassifier
model = RidgeClassifier(random_state=18)
return model
def get_features(data):
def preprocess_data(raw_prices):
log_prices = raw_prices.copy(True)
assets = log_prices.columns
for asset in assets:
log_prices[asset] = np.log(log_prices[asset])
return log_prices
prices = data.sel(field="close").\
ffill("time").bfill("time").fillna(0)
prices_df = prices.to_pandas()
features = preprocess_data(prices_df)
return features
def get_target_classes(data):
price_current = data.sel(field="close").dropna("time")
price_future = price_current.shift(time=-1).dropna("time")
class_positive = 1
class_negative = 0
target_up = xr.where(price_future > price_current,\
class_positive, class_negative)
return target_up.to_pandas()
data = market_data.copy(True)
asset_names = data.coords["asset"].values
features = get_features(data)
target = get_target_classes(data)
prediction_df = data.sel(field="close").isel(time=-1).to_pandas()
for asset_name in asset_names:
target_asset = target[asset_name]
features_asset = features[asset_name][:-1]
target_asset, features_asset = \
target_asset.align(features_asset, axis=0, join="inner")
model = get_ml_model()
try:
model.fit(features_asset.values.reshape(-1, 1), target_asset)
features_asset_predict = features[asset_name][-1:]
prediction_asset = \
model.predict(features_asset_predict.values.reshape(-1, 1))
prediction_df[asset_name] = prediction_asset
except:
logging.exception("model failed")
return xr.zeros_like(data.isel(field=0, time=0))
return prediction_df.to_xarray()
마지막으로 backtester 함수를 호출합니다.
weights = qnbt.backtest(
competition_type = "cryptofutures",
load_data = load_data,
lookback_period = 18,
start_date = "2014-01-01",
strategy = predict_weights,
analyze = True,
build_plots = True
)
손익 및 수중 차트에서 알 수 있듯이 시스템의 성능은 상당히 우수합니다.
시스템은 1보다 큰 샘플 샤프 비율을 가지고 있으며 콘테스트에 제출할 수 있습니다. 계정의 예제 섹션 (Machine Learning-Ridge Classifier)에서 준비된 버전을 제공합니다.
제출 된 시스템에 대해 상관 관계 검사를 수행하고 템플릿 제출을 허용하지 않으므로 예제의 참조는 선택 필터를 통과하지 못합니다. 매개 변수, 기능, 대상 또는 기계 학습 모델 자체를 변경하여 시스템 수정을 시작할 수 있습니다.
GitHub 소스 코드 :https://github.com/quantiacs-io/strategy-cryptofutures-ml-ridge
질문이 있습니까? 커뮤니티 포럼 사용 :https://quantiacs.com/community/
또는 우편으로 문의 : info@quantiacs.com
안녕하세요 여러분,이 기사에서는 Amazon Electronics 제품 리뷰에 대한 감정 분석을 안내합니다. 내용 : 감성 분석은 자연어 처리, 텍스트 분석, 통계를 이용하여 고객 감성을 분석하는 과정입니다.
머신 — 배포, 추적, 수리 및 반복이 블로그 게시물에서는 🔥 Keepsake 🔥에 대해 논의 할 것입니다. Keepsake는 머신 러닝 실험을위한 버전 관리 도구입니다.