Quant Analyzer 화면 봐!

편해 보이지만 잘 모르는 것도 있어요.
익숙하게 사용하기 위해 쓰면서 공부하다.
아직 다 못 썼어요.
실제 Quant Analyzer의 Analyze-Overview 화면
C:\QuantAnalyzer4\extend\Snippets\com\strategyquant\extend\OverviewTab\SQDefault.java
의 내용은 VScode 로 추정됩니다.

자바의 독자적인 정의 함수와 변수 등 추측


d2WithPlType(stats.getXXXXX(XXXXX), combination.getPLType())
디스플레이 형식을 맞추기 위해서인 것 같습니다. (금액,pips,%)
d2WithPlType(stats.getXXXXX(XXXXX), SQConst.PL_IN_PCT)
표시 형식이% 에 고정된 것 같습니다.
d2(stats.getXXXXX(XXXXXXXXXX)
소수점 이하 두 번째가 될 것 같습니다.
statsConst.XXXXX
이 내용을 볼 수 있었으면 좋겠어요.어떻게 계산된 값인지 알면 여러 가지 값으로 조합할 수 있다.

왼쪽 상단의 표시



TOTAL PROFIT(PROFIT IN MONEY): 총 손익(금액)
TOTAL PROFIT(PROFIT IN PIPS): 총 이익
YEARLY AVG PROFIT: 연평균 손익(금액)
YEARLY AVG%RETURN: 연평균 손익(%)
CAGR(Compound Avarage Growth Rate): 연평균 성장률

오른쪽 상단



제1열


#OF 거래: 거래 횟수
SQDefault.자바에서stats입니다.getInt(StatsConst.NUMBER_OF_TRADES)
DRAWDOWN: 최대 드롭다운 금액
SQDefault.java의 d2WithPlType(stats.getDouble(dd_key),combination.getPLType())
ANNUAL %/MAX DD %:
SQDefault.java에서 d2(Stats.getDouble(StatsConst.AAR_DD_RATIO))

제2소대


SHAREPE RATIO: 샤프 레시오
SQDefault.java에서 d2(Stats.getDouble(StatsConst.SHARPE_RATIO)
리스크(표준 편차)는 각 단위의 초과 수익(제로 리스크라도 수익을 초과하는 초과 수익)을 측정하는데 이것은 이 수치가 높을수록 리스크로 인해 얻는 초과 수익(효율이 높다는 것을 의미한다.서로 다른 투자 대상을 비교할 때 같은 위험이라면 어떤 수익이 더 높은지 고려할 때 유용하다. 이 샤프는 리스크 조정 후의 수익을 평가할 수도 있고 투자신탁의 운용 실적을 평가할 수도 있다.
%DRAWDOWN: 최대 드롭다운 금액(%)
SQDefault.d2WithPlType(Stats.getDouble(StatsConst.PCT_DRAWDOWN), SQConst.PL_IN_PCT)
R EXPECTANCY:
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.R_EXPECTANCY), "R")
performance metrics developed by Van Tharp, it gives you the average profit value related to average risk (R) that you can expect from a system over many trades.
위험에 대해 평균 얼마의 이익을 얻을 수 있다고 한다.샤프레시오랑 뭐가 달라요?

제3소대


PROFIT FACTOR: 전문 적합도
SQDefault.java에서 d2(Stats.getDouble(StatsConst.PROFIT_FACTOR)
설명 필요 없어요?
일일 AVG PROFIT: 일평균 이익
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.AVG_PROFIT_BY_DAY),combination.getPLType())
설명 필요 없어요?
R EXPECTANCY SCORE:
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.R_EXPECTANCY_SCORE), "R")
standard R-Expectancy doesn’t consider the length of testing period and number of trades produced. There is a difference when you make for example $2000 per year by making 10 trades, or by making 100 trades. R-Expectancy Score adds a score for trades frequency. It is computed as: R-Expectancy * averageTradesPerYear

넷째 줄


RETURN/DD RATIO
SQDefault.java에서 d2(Stats.getDouble(StatsConst.RETURN_DD_RATIO)
월간 AVG PROFIT: 월평균 손익
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.AVG_PROFIT_BY_MONTH),combination.getPLType())
STR QUALITY NUMBER:
SQDefault.java에서 d2(Stats.getDouble(StatsConst.SQN)

다섯째 줄


WINNING PERCENTAGE: 승률
SQDefault.java에서 d2(Stats.getDouble(StatsConst.WINNING_PCT))
설명 필요 없어요?
AVERAGE TRADE:
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.AVG_TRADE),combination.getPLType())
SQN SCORE:
SQDefault.java에서 d2(Stats.getDouble(StatsConst.SQN_SCORE)

Strategy



제1열


Wins/Losses Ratio:
SQDefault.java에서 d2(Stats.getDouble(StatsConst.WIN_LOSS_RATIO))
그냥 비율로 승률을 표시하는 거예요?
AHPR:
SQDefault.java에서 d2(Stats.getDouble(StatsConst.AHPR)
이 사이트를 참고하면... 손익/보유기간 같은 계산 공식일 수 있습니다.
Expectancy
SQDefault.java에서 d2(Stats.getDouble(StatsConst.EXPECTANCY))
시작 날짜 - 최대 드롭다운 기간 (일)
SQDefault.자바에서 ""+stats입니다.getInt(StatsConst.STAGNATION_PERIOD)
왜 상공 문자열을 붙여야 하는지 수수께끼다.

제2소대


Payout Ratio (Avg Win/Loss)
SQDefault.java에서 d2(Stats.getDouble(StatsConst.PAYOUT_RATIO))
Z-Score
SQDefault.java에서 d2(Stats.getDouble(StatsConst.Z_SCORE)
Deviation
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.STANDARD_DEV),combination.getPLType())
StatsConst.STANDARD_DEV에 대한 설명이 있습니다. 표준 편차입니까?
시작 백분율: 최대 드롭다운 주기 (%)
SQDefault.d2WithPlType(Stats.getDouble(StatsConst.STAGNATION_PERIOD_PCT), SQConst.PL_IN_PCT)

제3소대


Average # of Bars in Trade
SQDefault.java에서 d2(Stats.getDouble(StatsConst.AVG_BARS_TRADE)
Z-Probability
SQDefault.java에서 d2(Stats.getDouble(StatsConst.Z_PROBABILITY) + "%"
Exposure
SQDefault.java에서 d2(Stats.getDouble(StatsConst.EXPOSURE, 0) + "%"
보유한 금융 자산 중 시장 가격 변동 리스크에 노출된 자산의 비율.
Correlation Factor R16: 상관수 R16
SQDefault.java의 d2(Math.pow(stats.getDouble(StatsConst.STABILITY), 4)
자체 측정 값.손익 곡선과 첫 번째와 마지막 거래의 직선은 얼마나 먼 계수인지.수치가 1에 가까울수록 안정적이라고 할 수 있다.
보통 r^2이지만 Quant Analyzer는 r^4를 사용하는 것 같아서 차이는 이해하기 쉽다.
더 쉽게 이해하고 싶어서 r^16을 선택했습니다.

Trades(조금만 하고 레이아웃만 바꿨어요.)


설명이 필요 없을 것 같으니 뒤로 미뤄라.

제1열


# of Wins: 승수
설명 필요 없어요?
SQDefault.자바에서 ""+stats입니다.getInt(StatsConst.NUMBER_OF_PROFITS)
Gross Profit: 총 이익
설명 필요 없어요?
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.GROSS_PROFIT),combination.getPLType())
Largest Win: 최대 이익
설명 필요 없어요?
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.MAX_PROFIT),combination.getPLType())
Avg Consec Wins: 평균 연패
설명 필요 없어요?
SQDefault.java에서 d2(Stats.getDouble(StatsConst.AVG_CONSEC_WIN)

제2소대


#of Losses: 실패 횟수
설명 필요 없어요?
SQDefault.자바에서 ""+stats입니다.getInt(StatsConst.NUMBER_OF_LOSSES)
Gross Loss: 총 손실
설명 필요 없어요?
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.GROSS_LOSS),combination.getPLType())
Largest Loss: 최대 손실
설명 필요 없어요?
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.MAX_LOSS),combination.getPLType())
Avg Consec Loss: 평균 연패
설명 필요 없어요?
SQDefault.java에서 d2(Stats.getDouble(StatsConst.AVG_CONSEC_LOSS)

제3소대


SQDefault.자바에서 ""
평균 이윤: 평균 이윤
설명 필요 없어요?
SQDefault.java의 d2WithPlType(stats.getDouble(StatsConst.AVG_WIN),combination.getPLType())
최대 연패: 최대 연승
설명 필요 없어요?
SQDefault.자바에서 ""+stats입니다.getInt(StatsConst.MAX_CONSEC_WINS)
Avg # of Bars in Wins
거래부터 결제까지 몇 개의 술집을 뛰어넘은 것 같은데...(솔직히 잘 모르겠어요)
SQDefault.java에서 d2(Stats.getDouble(StatsConst.AVG_BARS_WIN)

넷째 줄


#of Cancelled/Expired: 만료 취소
설명 필요 없어요?
SQDefault.자바에서 ""+stats입니다.getInt(StatsConst.NUMBER_OF_CANCELED)
평균 손실: 평균 손실
설명 필요 없어요?
SQDefault.java의 d2WithPlType(Stats.getDouble(StatsConst.AVG_LOSS),combination.getPLType())
최대 Consec Losses: 최대 연패
설명 필요 없어요?
SQDefault.자바에서 ""+stats입니다.getInt(StatsConst.MAX_CONSEC_LOSS)
Avg Bars in Losses
거래부터 결제까지 몇 개의 술집을 뛰어넘은 것 같은데...(솔직히 잘 모르겠어요)
SQDefault.java에서 d2(Stats.getDouble(StatsConst.AVG_BARS_LOSS)

여긴 없지만 Equity Control 라벨에 신경 쓰이는 녀석


같은 폴더에 있는 파일의 "GetValue"내의 "return stats.getDouble(StatsConst.STABILITY, 0)"을 참고하면 많은 것을 알 수 있습니다.
QuantAnalyzer4\extend\Snippets\com\strategyquant\extend\DatabankColumns\Stability.java
@Override
public Object getValue(SQResultsGroup strategyResults, String dataType, String direction, String sampleType, String plType) throws Exception {
    SQResult result = strategyResults.getResult(SQConst.SYMBOL_PORTFOLIO);

    SQStats stats = result.getStats(direction, getGlobalPlType(plType), sampleType);
    if(stats==null) throw new StatsMissingException();

    return stats.getDouble(StatsConst.STABILITY, 0);
}

이런 코드로 받을 수 있어요.


Stability
stats.getDouble(StatsConst.STABILITY, 0)
위에서 말한 바와 같이'손익곡선'과'최초와 마지막 거래 사이의 연결 직선'의 상관수(r^4)이다.
Symmetry
stats.getDouble(StatsConst.SYMMETRY)
잘 모르겠어!
Fittness
strategyResults.getResult(SQConst.SYMBOL_PORTFOLIO)
.getStats(SQConst.DIRECTION_ALL, SQConst.PL_IN_MONEY, SQConst.KEY_SAMPLE_ALL)
.getDouble(StatsConst.FITNESS, 0)
잘 모르겠어!
CalmarRatio
stats.getDouble("CalmarRatio", 12)
The Calmar ratio is a comparison of the average annual compounded rate of return and the maximum drawdown risk of commodity trading advisors and hedge funds. The lower the Calmar ratio, the worse the investment performed on a risk-adjusted basis over the specified time period; the higher the Calmar ratio, the better it performed. Generally speaking, the time period used is three years, but this can be higher or lower based on the investment in question.
위험보상비 같은 게 적혀 있어요.샤프레시오랑 뭐가 달라요?비싸면 비쌀수록 좋은 거 알아요.기본적으로 3년을 바탕으로 보지만 짧든 길든 상관없다.
많은 것 같은데 봐도 재미있어요.

좋은 웹페이지 즐겨찾기