정렬된 다공간 균형 권익 전략 실현

저자:선함, 2019-08-24 10:05:53, 업데이트: 2023-10-19 21:06:54

img

지난 기사에서https://www.fmz.com/digest-topic/4187이 글에서는 트레이딩 전략을 소개하고 데이터와 수학 분석을 활용하여 트레이딩 전략을 만들고 자동화하는 방법을 보여줍니다.

다공평 균형권익 전략은 한 통 거래 지표에 적용되는 짝짓기 거래 전략의 자연스러운 연장이다. 그것은 특히 디지털 화폐 시장과 상품 선물 시장과 같은 다양하고 상호 연관된 거래 시장에 적용된다.

기본 원칙

다중 평형 이해전략은 동시에 다중과 공백 한 바구니 지표를 거래한다. 쌍거래와 마찬가지로, 어떤 지표가 저렴하고 어떤 지표가 비싸다는 것을 결정한다. 달리, 다중 평형 이해전략은 모든 지표를 선택된 주식 풀에 배치하여 어떤 지표가 상대적으로 저렴하거나 비싸지는지 결정한다. 그리고 그것은 다중 앞의 n 지표의 순위에 따라, 같은 금액으로 공백 하단의 n 지표의 총 (다중 지위의 총값=지표의 총값) 을 결정한다.

우리가 전에 쌍거래가 시장 중립적인 전략이라고 말한 것을 기억하십니까? 다공평 균형권 및 이해관계 전략도 마찬가지입니다. 왜냐하면 다장과 빈장 포지션의 평가는 전략이 시장 중립성을 유지할 것을 보장하기 때문입니다. 이 전략은 또한 통계적으로 견고합니다. 투자 지표에 순위를 매기고 여러 포지션을 보유함으로써, 당신은 당신의 순위 모델에 대해 한 번의 위험 입장을 대신 여러 차례 입장을 할 수 있습니다. 당신은 순전히 당신의 순위 프로그램의 품질에만 베팅합니다.

어떤 것이 순위입니다?

순위 체계는 각 지표에 대한 우선 순위를 부여하는 모델이다. 이러한 요소는 가치 요소, 기술 지표, 가격 모델 또는 위의 모든 요소의 조합이 될 수 있다. 예를 들어, 동력 지표를 사용하여 일련의 트렌드를 추적하는 지표를 순위화할 수 있다. 가장 높은 동력을 가진 지표가 계속 좋은 성적을 거두며 가장 높은 순위를 기록할 것으로 예상되며, 가장 낮은 동력 지표가 최악의 성과와 가장 낮은 수익률을 올릴 수 있다.

이 전략의 성공은 거의 전적으로 사용된 랭킹 방식에 달려 있습니다. 즉, 당신의 랭킹 방식은 고성능 투자 지표와 저성능 투자 지표를 분리하여, 다공개 투자 지표의 전략의 수익을 더 잘 실현할 수 있습니다. 따라서, 랭킹 방식을 만드는 것이 중요합니다.

어떻게 순위를 정할 수 있을까요?

일단 우리가 순위제를 결정하면, 우리는 분명히 그로부터 이익을 얻고 싶어한다. 우리는 같은 양의 자금을 투입하여 상위 순위보다 높은 투자 대상을 더 많이 하고, 하위 순위보다 낮은 투자 대상을 공허하게 하는 것을 한다. 이것은 전략이 순위 품질에 비례하여 돈을 벌 수 있도록 보장하고, "시장 중립"이 될 것을 보장한다.

만약 당신이 모든 지표 m를 순위화하고 있고, $n의 투자가 있고, 총 2p (m>2p) 의 지점을 보유하기를 원한다고 가정한다. 만약 순위 1 지표가 최악의 성과를 기대한다면, 순위 m 지표가 가장 좋은 성과를 기대할 것이다.

  • 1...,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p

  • 만약 당신이 m-p,..., m 같은 위치에 투자 지표를 배치하면

** 참고: ** 가격 점프로 인한 투자 지표의 가격은 항상 n/2p로 균일하게 분포하지 않으며, 어떤 투자 지표를 전체로 구매해야 하기 때문에, 몇 가지 부정확한 알고리즘이 있을 수 있기 때문에, 알고리즘은 이 숫자에 가능한 한 가깝게 접근해야 한다. n = 100000과 p = 500을 실행하는 전략에 대해 우리는 다음과 같이 볼 수 있다.

n/2p = 100000/1000 = 100

이것은 100보다 큰 가격 점수에 큰 문제를 야기합니다 (예를 들어, 상품 선물 시장) 왜냐하면 당신은 점수 가격의 지점을 열 수 없기 때문에 (디지털 통화 시장에는 문제가 없습니다). 우리는 점수 가격 거래를 줄이거나 자본을 늘려서 상황을 완화합니다.

이 가설을 예로 들어보죠.

  • 발명가 양적 플랫폼에서 우리의 연구 환경을 구축합니다

우선, 작업이 원활하게 진행되기 위해서는 우리의 연구 환경을 구축해야 합니다.FMZ.COM이 연구 환경의 구축은 주로 이 플랫폼의 편리하고 빠른 API 인터페이스와 포괄적인 도커 시스템을 사용할 수 있도록 하기 위해 이루어졌다.

발명가들의 정량화 플랫폼의 공식 명칭에서, 이 도커 시스템은 호스트 시스템이라고 불린다.

관리자와 로봇을 배치하는 방법에 대해 이전 기사를 참조하십시오.https://www.fmz.com/bbs-topic/4140

클라우드 서버 배포 관리자를 구입하려는 독자들은 이 기사를 참조할 수 있습니다:https://www.fmz.com/bbs-topic/2848

좋은 클라우드 서비스와 관리자 시스템을 성공적으로 배치한 다음, 우리는 현재 가장 큰 파이썬 신비를 설치합니다: 아나콘다

이 문서에서 필요한 모든 관련 프로그램 환경을 구현하기 위해 ( 의존도, 버전 관리 등) 가장 쉬운 방법은 아나콘다 (Anaconda) 이다. 그것은 패키지 된 파이썬 데이터 과학 생태계와 의존도 관리자이다.

아나콘다를 설치하는 방법에 대해 아나콘다 공식 지침서를 참조하십시오:https://www.anaconda.com/distribution/

本文还将用到numpy和pandas这两个目前在Python科学计算方面十分流行且重要的库.

위의 기본 작업은 아나콘다 환경과 두 개의 라이브러리, 즉 피와 판다스를 설정하는 방법에 대한 나의 이전 기사를 참조할 수 있습니다.https://www.fmz.com/digest-topic/4169

우리는 무작위 투자 지표와 무작위 요인을 생성하고, 순위를 매깁니다. 우리의 미래 수익이 실제로 이러한 요인 값에 달려 있다고 가정하자.

import numpy as np
import statsmodels.api as sm
import scipy.stats as stats
import scipy
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
## PROBLEM SETUP ##
# Generate stocks and a random factor value for them
stock_names = ['stock ' + str(x) for x in range(10000)]
current_factor_values = np.random.normal(0, 1, 10000)
# Generate future returns for these are dependent on our factor values
future_returns = current_factor_values + np.random.normal(0, 1, 10000)
# Put both the factor values and returns into one dataframe
data = pd.DataFrame(index = stock_names, columns=['Factor Value','Returns'])
data['Factor Value'] = current_factor_values
data['Returns'] = future_returns
# Take a look
data.head(10)

img

이제 우리는 인수와 수익을 가지고 있고, 우리가 인수 값에 따라 투자 지표를 순위 지정하면, 그리고 다투자 및 빈자리를 열면 무슨 일이 일어나는지 볼 수 있습니다.

# Rank stocks
ranked_data = data.sort_values('Factor Value')
# Compute the returns of each basket with a basket size 500, so total (10000/500) baskets
number_of_baskets = int(10000/500)
basket_returns = np.zeros(number_of_baskets)
for i in range(number_of_baskets):
    start = i * 500
    end = i * 500 + 500 
    basket_returns[i] = ranked_data[start:end]['Returns'].mean()
# Plot the returns of each basket
plt.figure(figsize=(15,7))
plt.bar(range(number_of_baskets), basket_returns)
plt.ylabel('Returns')
plt.xlabel('Basket')
plt.legend(['Returns of Each Basket'])
plt.show()

img

우리의 전략은 투자의 한 배구에서 더 많은 1위를 하는 것이고, 10위를 하지 않는 것입니다. 이 전략의 보상은 다음과 같습니다.

basket_returns[number_of_baskets-1] - basket_returns[0]

이 결과는 4.172입니다.

우리의 순위 모델에 돈을 넣고, 저성능 투자자로부터 높은 성능 투자자를 구별할 수 있도록 합니다.

이 글의 후반에 우리는 순위 전략을 평가하는 방법에 대해 논의할 것입니다. 순위 기반의 배당 수익의 장점은 시장의 혼란에 영향을 받지 않고 그것을 활용할 수 있다는 것입니다.

이 사례를 현실세계에서 살펴보자.

우리는 32개의 스탠다드 500 지표의 다른 업종에 대한 데이터를 업로드하고 순위를 결정하려고 노력했습니다.

from backtester.dataSource.yahoo_data_source import YahooStockDataSource
from datetime import datetime
startDateStr = '2010/01/01'
endDateStr = '2017/12/31'
cachedFolderName = '/Users/chandinijain/Auquan/yahooData/'
dataSetId = 'testLongShortTrading'
instrumentIds = ['ABT','AKS','AMGN','AMD','AXP','BK','BSX',
                'CMCSA','CVS','DIS','EA','EOG','GLW','HAL',
                'HD','LOW','KO','LLY','MCD','MET','NEM',
                'PEP','PG','M','SWN','T','TGT',
                'TWX','TXN','USB','VZ','WFC']
ds = YahooStockDataSource(cachedFolderName=cachedFolderName,
                            dataSetId=dataSetId,
                            instrumentIds=instrumentIds,
                            startDateStr=startDateStr,
                            endDateStr=endDateStr,
                            event='history')
price = 'adjClose'

한 달의 시간 주기 기준으로 표준화 된 동력 지표를 기준으로 순위를 매겨 봅시다.

## Define normalized momentum
def momentum(dataDf, period):
    return dataDf.sub(dataDf.shift(period), fill_value=0) / dataDf.iloc[-1]
## Load relevant prices in a dataframe
data = ds.getBookDataByFeature()[‘Adj Close’]
#Let's load momentum score and returns into separate dataframes
index = data.index
mscores = pd.DataFrame(index=index,columns=assetList)
mscores = momentum(data, 30)
returns = pd.DataFrame(index=index,columns=assetList)
day = 30

이제 우리는 우리의 주식의 행동을 분석하여 우리가 선택한 순위 요인에 따라 시장에서 우리의 주가가 어떻게 작동하는지 살펴볼 것입니다.

데이터 분석

주식 행동

우리는 우리가 선택한 바구니 주식이 우리의 순위 모델에서 어떻게 동작하는지 보겠습니다. 이를 위해 모든 주식의 1주일 장기 수익을 계산해보겠습니다. 그리고 우리는 각 주식의 1주일 전의 수익과 이전 30일 동력의 상관관계를 볼 수 있습니다. 긍정적으로 작용하는 주식은 추세를 따르고, 부정적으로 작용하는 주식은 평균 수익을 나타냅니다.

# Calculate Forward returns
forward_return_day = 5
returns = data.shift(-forward_return_day)/data -1
returns.dropna(inplace = True)
# Calculate correlations between momentum and returns
correlations = pd.DataFrame(index = returns.columns, columns = [‘Scores’, ‘pvalues’])
mscores = mscores[mscores.index.isin(returns.index)]
for i in correlations.index:
    score, pvalue = stats.spearmanr(mscores[i], returns[i])
    correlations[‘pvalues’].loc[i] = pvalue
    correlations[‘Scores’].loc[i] = score
correlations.dropna(inplace = True)
correlations.sort_values(‘Scores’, inplace=True)
l = correlations.index.size
plt.figure(figsize=(15,7))
plt.bar(range(1,1+l),correlations[‘Scores’])
plt.xlabel(‘Stocks’)
plt.xlim((1, l+1))
plt.xticks(range(1,1+l), correlations.index)
plt.legend([‘Correlation over All Data’])
plt.ylabel(‘Correlation between %s day Momentum Scores and %s-day forward returns by Stock’%(day,forward_return_day));
plt.show()

img

우리의 모든 주식은 어느 정도 공평한 회귀를 합니다! (우리 선택된 우주가 분명히 그렇게 작동합니다.) 이것은 우리에게 주식이 동력 분석에서 높은 점수를 받으면 다음 주에 나쁜 결과를 기대해야한다는 것을 알려줍니다.

동력 분석 점수 순서와 수익 사이의 연관성

다음으로, 우리는 우리의 순위 점수와 전체 시장의 전향적 수익 사이의 상관관계를 살펴볼 필요가 있습니다. 즉, 예상 수익률의 예측은 우리의 순위 요인과 관계가 있는지, 높은 관련도 등급이 더 나쁜 상대적 수익을 예측하는지, 아니면 반대로?

이를 위해, 우리는 모든 주식의 30일 동력과 1주일 장기 수익 사이의 일일 연관성을 계산했습니다.

correl_scores = pd.DataFrame(index = returns.index.intersection(mscores.index), columns = [‘Scores’, ‘pvalues’])
for i in correl_scores.index:
    score, pvalue = stats.spearmanr(mscores.loc[i], returns.loc[i])
    correl_scores[‘pvalues’].loc[i] = pvalue
    correl_scores[‘Scores’].loc[i] = score
correl_scores.dropna(inplace = True)
l = correl_scores.index.size
plt.figure(figsize=(15,7))
plt.bar(range(1,1+l),correl_scores[‘Scores’])
plt.hlines(np.mean(correl_scores[‘Scores’]), 1,l+1, colors=’r’, linestyles=’dashed’)
plt.xlabel(‘Day’)
plt.xlim((1, l+1))
plt.legend([‘Mean Correlation over All Data’, ‘Daily Rank Correlation’])
plt.ylabel(‘Rank correlation between %s day Momentum Scores and %s-day forward returns’%(day,forward_return_day));
plt.show()

img

매일의 상관관계는 매우 거칠지만 매우 가벼운 것으로 나타났습니다. (모든 주식이 동등한 수익을 낼 것이라고 말했기 때문에 예상됩니다.) 우리는 또한 한 달 전의 평균 월간 상관관계에 대해 살펴볼 것입니다.

monthly_mean_correl =correl_scores['Scores'].astype(float).resample('M').mean()
plt.figure(figsize=(15,7))
plt.bar(range(1,len(monthly_mean_correl)+1), monthly_mean_correl)
plt.hlines(np.mean(monthly_mean_correl), 1,len(monthly_mean_correl)+1, colors='r', linestyles='dashed')
plt.xlabel('Month')
plt.xlim((1, len(monthly_mean_correl)+1))
plt.legend(['Mean Correlation over All Data', 'Monthly Rank Correlation'])
plt.ylabel('Rank correlation between %s day Momentum Scores and %s-day forward returns'%(day,forward_return_day));
plt.show()

img

우리는 평균적인 연관성이 다시 약간 부정적이라고 볼 수 있지만 매월에도 크게 변합니다.

평균 주식 수익률

우리는 우리의 순위에서 빼낸 주식 한 대의 수익을 계산했습니다. 만약 우리가 모든 주식을 순위화하고 그것들을 n 그룹으로 나누면, 각 그룹의 평균 수익은 무엇입니까?

첫 번째 단계는 매월 주어진 각 바구니의 평균 수익과 순위 요인을 제공하는 함수를 만드는 것입니다.

def compute_basket_returns(factor, forward_returns, number_of_baskets, index):
data = pd.concat([factor.loc[index],forward_returns.loc[index]], axis=1)
    # Rank the equities on the factor values
    data.columns = ['Factor Value', 'Forward Returns']
    data.sort_values('Factor Value', inplace=True)
    # How many equities per basket
    equities_per_basket = np.floor(len(data.index) / number_of_baskets)
basket_returns = np.zeros(number_of_baskets)
# Compute the returns of each basket
    for i in range(number_of_baskets):
        start = i * equities_per_basket
        if i == number_of_baskets - 1:
            # Handle having a few extra in the last basket when our number of equities doesn't divide well
            end = len(data.index) - 1
        else:
            end = i * equities_per_basket + equities_per_basket
        # Actually compute the mean returns for each basket
        #s = data.index.iloc[start]
        #e = data.index.iloc[end]
        basket_returns[i] = data.iloc[int(start):int(end)]['Forward Returns'].mean()
        
    return basket_returns

우리는 이 점수를 기준으로 주식을 순위화할 때 각 바구니의 평균 수익을 계산한다. 이것은 우리가 장기간에 걸쳐 그들의 관계를 이해할 수 있게 해야 한다.

number_of_baskets = 8
mean_basket_returns = np.zeros(number_of_baskets)
resampled_scores = mscores.astype(float).resample('2D').last()
resampled_prices = data.astype(float).resample('2D').last()
resampled_scores.dropna(inplace=True)
resampled_prices.dropna(inplace=True)
forward_returns = resampled_prices.shift(-1)/resampled_prices -1
forward_returns.dropna(inplace = True)
for m in forward_returns.index.intersection(resampled_scores.index):
    basket_returns = compute_basket_returns(resampled_scores, forward_returns, number_of_baskets, m)
    mean_basket_returns += basket_returns
mean_basket_returns /= l    
print(mean_basket_returns)
# Plot the returns of each basket
plt.figure(figsize=(15,7))
plt.bar(range(number_of_baskets), mean_basket_returns)
plt.ylabel('Returns')
plt.xlabel('Basket')
plt.legend(['Returns of Each Basket'])
plt.show()

img

우리는 높은 성과와 낮은 성과를 구분할 수 있는 것 같습니다.

이윤 격차 (基差) 일치

물론, 이것들은 단지 평균적인 관계입니다. 이 관계가 얼마나 일치하는지, 그리고 우리가 거래를 할 준비가 되는지 이해하기 위해, 우리는 시간이 지남에 따라 그것을 보는 방법과 태도를 바꾸어야합니다. 다음으로 우리는 그 첫 2 년 동안의 월간 기하급수 (基准) 를 살펴볼 것입니다. 우리는 더 많은 변화를 볼 수 있으며, 이 동력분자가 거래 될 수 있는지 여부를 결정하기 위해 추가 분석을 할 수 있습니다.

total_months = mscores.resample('M').last().index
months_to_plot = 24
monthly_index = total_months[:months_to_plot+1]
mean_basket_returns = np.zeros(number_of_baskets)
strategy_returns = pd.Series(index = monthly_index)
f, axarr = plt.subplots(1+int(monthly_index.size/6), 6,figsize=(18, 15))
for month in range(1, monthly_index.size):
    temp_returns = forward_returns.loc[monthly_index[month-1]:monthly_index[month]]
    temp_scores = resampled_scores.loc[monthly_index[month-1]:monthly_index[month]]
    for m in temp_returns.index.intersection(temp_scores.index):
        basket_returns = compute_basket_returns(temp_scores, temp_returns, number_of_baskets, m)
        mean_basket_returns += basket_returns
    
    strategy_returns[monthly_index[month-1]] = mean_basket_returns[ number_of_baskets-1] - mean_basket_returns[0]
    
    mean_basket_returns /= temp_returns.index.intersection(temp_scores.index).size
    
    r = int(np.floor((month-1) / 6))
    c = (month-1) % 6
    axarr[r, c].bar(range(number_of_baskets), mean_basket_returns)
    axarr[r, c].xaxis.set_visible(False)
    axarr[r, c].set_title('Month ' + str(month))
plt.show()

img

plt.figure(figsize=(15,7))
plt.plot(strategy_returns)
plt.ylabel(‘Returns’)
plt.xlabel(‘Month’)
plt.plot(strategy_returns.cumsum())
plt.legend([‘Monthly Strategy Returns’,’Cumulative Strategy Returns’])
plt.show()

img

마지막으로, 마지막 바구니를 더하고 매월 첫 번째 바구니를 비어 놓으면 수익을 볼 수 있습니다.

total_return = strategy_returns.sum()
ann_return = 100*((1 + total_return)**(12.0 /float(strategy_returns.index.size))-1)
print('Annual Returns: %.2f%%'%ann_return)

연간 수익률: 5.03%

우리는 매우 약한 순위 체계가 있고, 고성능 주식과 저성능 주식을 약간만 구분할 수 있다는 것을 알 수 있습니다. 또한, 순위 체계는 일관성이 없으며, 매달 크게 변합니다.

올바른 순위를 찾습니다.

다공간 균형 이익 전략을 구현하기 위해, 당신은 실제로 순위 방안을 결정해야 합니다. 그 다음 모든 것이 기계적입니다. 일단 당신이 다공간 균형 이익 전략을 가지고 있다면, 당신은 다른 순위 요인을 교환할 수 있습니다. 다른 모든 것은 큰 변화를 필요로하지 않습니다. 이것은 모든 코드를 조정하는 것에 대해 걱정하지 않고 당신의 아이디어를 빠르게 재구성 할 수있는 매우 편리한 방법입니다.

순위 계획은 또한 거의 모든 모델에서 나올 수 있다. 그것은 반드시 가치에 기반한 요인 모델이 될 필요는 없다. 그것은 기계 학습 기술일 수 있다. 이는 한 달 전에 수익을 예측하고 그 순위에 따라 순위를 정할 수 있다.

순위 선택과 평가

랭킹 방식은 다공식 균형권익 전략의 장점이며 가장 중요한 구성 요소이다. 좋은 랭킹 방식을 선택하는 것은 체계적인 작업이며 간단한 답은 없다.

좋은 출발점은 기존의 알려진 기술을 선택하고 더 높은 수익을 얻기 위해 약간 수정할 수 있는지 보는 것입니다.

  • 클론 및 조정: 자주 논의되는 것을 선택하고, 이점을 얻기 위해 약간 수정 할 수 있는지 확인하십시오. 일반적으로 공개된 인자는 완전히 시장에서 활용되었기 때문에 거래 신호가 더 이상 없을 것입니다. 그러나 때로는 올바른 방향으로 나아갈 수 있습니다.

  • 가격 모델: 미래의 수익을 예측하는 모든 모델은 요인이 될 수 있고, 당신의 한 바구니 거래 지표에 대한 순위를 위해 잠재적으로 사용될 수 있습니다. 당신은 복잡한 가격 모델을 가지고 순위 계획으로 변환할 수 있습니다.

  • 가격 기반 요인 (기술 지표): 가격 기반 요인, 오늘 논의한 것처럼, 각 권익에 대한 역사적 가격에 대한 정보를 얻고 그것을 사용하여 요인 값을 생성합니다. 예를 들어 이동 평균 지표, 동력 지표 또는 변동률 지표가 될 수 있습니다.

  • 회귀와 동력: 주목할 점은 어떤 요소들이 가격이 한 방향으로 움직이면 계속 그렇게 할 것이라고 생각한다는 것입니다. 어떤 요소들은 바로 그 반대입니다. 둘 다 다른 시간 범위와 자산에 대한 유효한 모델이며, 기본 행동을 연구하는 것은 동력에 기반하거나 회귀에 기반하는 것이 중요합니다.

  • 기본 요소 (가치 기반): 이것은 PE, 배당 등과 같은 기본 가치의 조합을 사용하는 것이다. 기본 가치는 회사의 실제 세계 사실과 관련된 정보를 포함하고 있으며, 따라서 많은 면에서 가격보다 강해질 수 있다.

결국, 성장 예측 요인은 무기 경쟁이며, 당신은 앞서 나가기 위해 노력하고 있습니다. 요인은 시장에서 유치되고 수명이 있습니다. 따라서 당신은 당신의 요인이 얼마나 침체를 겪었는지, 어떤 새로운 요인이 그들을 대체 할 수 있는지 확인하는 작업을 계속해야합니다.

다른 고려 사항

  • 재균형 주파수

각 순위 시스템은 약간 다른 시간 범위에서 수익을 예측합니다. 가격 기반의 평균 회귀는 며칠 안에 예측될 수 있고, 가치 기반의 요인 모델은 몇 달 안에 예측될 수 있습니다. 모델이 예측해야 할 시간 범위를 결정하는 것이 매우 중요하며, 전략을 실행하기 전에 통계적으로 검증됩니다. 당신은 물론 재균형 주파수를 최적화하려고 시도함으로써 과도하게 적합하지 않으려고하고, 당신은 필연적으로 다른 주파수보다 우수한 무작위를 찾을 것입니다. 순위 프로그램의 예측 시간 범위를 결정 한 후에는, 모델을 최대한 활용하기 위해 대략 그 주파수에서 재균형을 시도하십시오.

  • 자본 능력과 거래 비용

각 전략에는 최소 및 최대 자본 부피가 있으며, 최소 문턱은 일반적으로 거래 비용에 의해 결정됩니다.

너무 많은 주식을 거래하면 높은 거래 비용을 초래합니다. 1000개를 구매하려는 경우, 재균형할 때마다 수천 달러의 비용이 발생합니다. 귀하의 자본 기반은 거래 비용이 전략의 수익의 작은 부분을 차지할 정도로 높아야합니다. 예를 들어, 귀하의 자본이 100,000 달러이고 전략이 매달 1% (약 1,000 달러) 를 벌면 모든 수익이 거래 비용에 의해 차지됩니다. 수백만 달러의 자본으로 1,000개 이상의 전략의 수익을 운영해야합니다.

최저 자산 문턱은 주로 거래되는 주식의 수에 따라 다릅니다. 그러나 최대 용량은 또한 매우 높으며, 빈 공평 이해관계 전략은 수백만의 달러를 거래 할 수 있으며 우위를 잃지 않습니다. 이 전략이 비교적 자주 재균형되지 않기 때문에 사실입니다. 총 자산은 거래되는 주식의 수와 함께 각 주식의 달러 가치가 매우 낮을 것이며, 거래량이 시장에 영향을 미칠 것이라고 걱정할 필요가 없습니다. 1000 개의 주식을 거래한다고 가정하면, 즉 100,000,000 달러입니다.


관련

더 많은