[JAVA] Jetons un coup d'œil à l'écran de Quant Analyzer!

Cela semble pratique, mais je ne le comprends pas très bien. Étudiez en écrivant pour le maîtriser. Toujours en train d'écrire.

L'écran réel Quant Analyzer Analyze - Vue d'ensemble et

C:\QuantAnalyzer4\extend\Snippets\com\strategyquant\extend\OverviewTab\SQDefault.java Je devinerai en comparant le contenu avec VS Code.

Une estimation rapide des fonctions et variables propriétaires de Java

d2WithPlType(stats.getXXXXX(XXXXX), combination.getPLType()) Il semble correspondre au format d'affichage (montant, pips,%) d2WithPlType(stats.getXXXXX(XXXXX), SQConst.PL_IN_PCT) Il semble que le format d'affichage soit fixé à% d2(stats.getXXXXX(XXXXXXXXXX) Il semble que vous cherchiez la deuxième place après la virgule décimale. statsConst.XXXXX Je souhaite que je pourrais voir le contenu de ceci. Si vous savez comment est la valeur calculée, il semble que vous puissiez la combiner de différentes manières.

Affichage supérieur gauche

image.png

BÉNÉFICE TOTAL (PROFIT EN ARGENT): Bénéfice / perte total (montant)
BÉNÉFICE TOTAL (PROFIT EN PIPS): Bénéfice / perte total (pips)
BÉNÉFICE ANNUEL MOYEN: Bénéfice / perte annuel moyen (montant)
RENDEMENT ANNUEL MOYEN EN%: Bénéfice / perte annuel moyen (%)
CAGR (Compound Avarage Growth Rate): taux de croissance annuel moyen

En haut à droite

image.png

1ère rangée

NOMBRE DE MÉTIERS: Nombre de transactions

Dans SQDefault.java, stats.getInt (StatsConst.NUMBER_OF_TRADES)

DRAWDOWN: Montant maximum du tirage

Dans SQDefault.java, d2WithPlType (stats.getDouble (dd_key), combination.getPLType ()) ANNUAL % / MAX DD %: Dans SQDefault.java, d2 (stats.getDouble (StatsConst.AAR_DD_RATIO))

Deuxième rang

RATIO SHARPE: Rapport net

Dans SQDefault.java, d2 (stats.getDouble (StatsConst.SHARPE_RATIO)) Le risque (écart type) mesure le rendement excédentaire par unité (profit excédentaire qui dépasse le rendement pouvant être obtenu même avec un risque nul), et plus cette valeur est élevée, plus le rendement excédentaire obtenu en prenant le risque est élevé ( Bénéfices efficacement gagnés). Ceci est utile pour comparer différents objectifs de placement et déterminer quel rendement est le plus élevé pour le même risque. Ce ratio élevé est également utilisé pour évaluer le rendement de la gestion des fiducies de placement en tant que mesure des rendements ajustés au risque.

% DRAWDOWN: montant maximum du tirage (%)

Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.PCT_DRAWDOWN), SQConst.PL_IN_PCT) R EXPECTANCY: Dans 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. Il semble que vous puissiez bénéficier du risque en moyenne. En quoi est-ce différent du ratio net?

3e rangée

FACTEUR DE PROFIT: Facteur de profit

Dans SQDefault.java, d2 (stats.getDouble (StatsConst.PROFIT_FACTOR)) Aucune explication nécessaire

PROFIT MOYEN QUOTIDIEN: Bénéfice et perte moyens quotidiens

Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.AVG_PROFIT_BY_DAY), combination.getPLType ()) Aucune explication nécessaire R EXPECTANCY SCORE: Dans 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

4e rangée

RETURN / DD RATIO Dans SQDefault.java, d2 (stats.getDouble (StatsConst.RETURN_DD_RATIO))

PROFIT MOYEN MENSUEL: Bénéfice et perte mensuels

Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.AVG_PROFIT_BY_MONTH), combination.getPLType ()) STR QUALITY NUMBER: Dans SQDefault.java, d2 (stats.getDouble (StatsConst.SQN))

5e rangée

POURCENTAGE DE GAGNANTS: Taux de victoire

Dans SQDefault.java, d2 (stats.getDouble (StatsConst.WINNING_PCT)) Aucune explication nécessaire AVERAGE TRADE: Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.AVG_TRADE), combinaison.getPLType ()) SQN SCORE: Dans SQDefault.java, d2 (stats.getDouble (StatsConst.SQN_SCORE))

Strategy image.png

1ère rangée

Wins / Losses Ratio: Dans SQDefault.java, d2 (stats.getDouble (StatsConst.WIN_LOSS_RATIO)) Vous venez d'exprimer le taux de gain sous forme de ratio? AHPR: Dans SQDefault.java, d2 (stats.getDouble (StatsConst.AHPR)) Reportez-vous à ce site, peut-être une formule comme profit / perte / période de détention. Expectancy Dans SQDefault.java, d2 (stats.getDouble (StatsConst.EXPECTANCY))

Stagnation en jours: période de prélèvement maximum (jours)

Dans SQDefault.java, "" + stats.getInt (StatsConst.STAGNATION_PERIOD) C'est un mystère pourquoi les chaînes de caractères vides sont ajoutées.

Deuxième rang

Payout Ratio (Avg Win/Loss) Dans SQDefault.java, d2 (stats.getDouble (StatsConst.PAYOUT_RATIO)) Z-Score Dans SQDefault.java, d2 (stats.getDouble (StatsConst.Z_SCORE)) Deviation Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.STANDARD_DEV), combination.getPLType ()) Il existe une description de StatsConst.STANDARD_DEV, est-ce un écart type?

Stagnation en%: Période de tirage maximum (%)

Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.STAGNATION_PERIOD_PCT), SQConst.PL_IN_PCT)

3e rangée

Average # of Bars in Trade Dans SQDefault.java, d2 (stats.getDouble (StatsConst.AVG_BARS_TRADE)) Z-Probability Dans SQDefault.java, d2 (stats.getDouble (StatsConst.Z_PROBABILITY)) + "%" Exposure Dans SQDefault.java, d2 (stats.getDouble (StatsConst.EXPOSURE, 0)) + "%" Le pourcentage des actifs financiers détenus qui sont exposés au risque de fluctuations des prix du marché.

Facteur de corrélation R16: Facteur de corrélation R16

Dans SQDefault.java, d2 (Math.pow (stats.getDouble (StatsConst.STABILITY), 4)) Valeur de mesure personnalisée. Un coefficient de la distance entre la «courbe des profits et pertes» et la «ligne droite reliant la première et la dernière transaction». On peut dire que plus la valeur est proche de 1, plus elle est stable. Normalement, c'est r ^ 2, mais Quant Analyzer semble utiliser r ^ 4, donc la différence est facile à comprendre. Je voulais que ce soit plus facile à comprendre, j'ai donc choisi r ^ 16.

Commerce (je ne fais que le bricoler et changer la mise en page.)

Il semble que l'explication soit agaçante, je vais donc la reporter. image.png

1ère rangée

# de victoires: nombre de victoires

Aucune explication nécessaire Dans SQDefault.java, "" + stats.getInt (StatsConst.NUMBER_OF_PROFITS)

Bénéfice brut: bénéfice total

Aucune explication nécessaire Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.GROSS_PROFIT), combination.getPLType ())

Plus grande victoire: profit maximum

Aucune explication nécessaire Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.MAX_PROFIT), combination.getPLType ())

Avg Consec Wins: séquence de défaites moyenne

Aucune explication nécessaire Dans SQDefault.java, d2 (stats.getDouble (StatsConst.AVG_CONSEC_WIN))

Deuxième rang

# de pertes: nombre de pertes

Aucune explication nécessaire Dans SQDefault.java, "" + stats.getInt (StatsConst.NUMBER_OF_LOSSES)

Perte brute: perte totale

Aucune explication nécessaire Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.GROSS_LOSS), combination.getPLType ())

Plus grande perte: perte maximale

Aucune explication nécessaire Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.MAX_LOSS), combination.getPLType ())

Avg Consec Loss: série de défaites moyenne

Aucune explication nécessaire Dans SQDefault.java, d2 (stats.getDouble (StatsConst.AVG_CONSEC_LOSS))

3e rangée

Dans SQDefault.java, ""

Gain moyen: profit moyen

Aucune explication nécessaire Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.AVG_WIN), combination.getPLType ())

Max Consec Wins: Maximum de victoires consécutives

Aucune explication nécessaire Dans SQDefault.java, "" + stats.getInt (StatsConst.MAX_CONSEC_WINS) Avg # of Bars in Wins Je pense que c'est le nombre de barres que vous chevauchez entre le début de la négociation et le règlement ... (Honnêtement je ne sais pas) Dans SQDefault.java, d2 (stats.getDouble (StatsConst.AVG_BARS_WIN))

4e rangée

# d'annulé / expiré: nombre d'annulé / expiré

Aucune explication nécessaire Dans SQDefault.java, "" + stats.getInt (StatsConst.NUMBER_OF_CANCELED)

Perte moyenne: Perte moyenne

Aucune explication nécessaire Dans SQDefault.java, d2WithPlType (stats.getDouble (StatsConst.AVG_LOSS), combination.getPLType ())

Max Consec Losses: Pertes consécutives maximales

Aucune explication nécessaire Dans SQDefault.java, "" + stats.getInt (StatsConst.MAX_CONSEC_LOSS) Avg Bars in Losses Je pense que c'est le nombre de barres que vous chevauchez entre le début de la négociation et le règlement ... (Honnêtement je ne sais pas) Dans SQDefault.java, d2 (stats.getDouble (StatsConst.AVG_BARS_LOSS))

Pas ici, mais celui qui vous tient à cœur dans l'onglet Contrôle de l'équité

Vous pouvez en savoir beaucoup en vous référant à "return stats.getDouble (StatsConst.STABILITY, 0" dans "GetValue" du fichier dans le même dossier.

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);
}

Je pense que je peux l'obtenir avec ce code

Stability


stats.getDouble(StatsConst.STABILITY, 0)

Comme mentionné précédemment, il s'agit du coefficient de corrélation (r ^ 4) entre la "courbe de profits et pertes" et la "ligne droite reliant la première et la dernière transaction".

Symmetry


stats.getDouble(StatsConst.SYMMETRY)

Eh bien, je ne sais pas!

Fittness


strategyResults.getResult(SQConst.SYMBOL_PORTFOLIO)
.getStats(SQConst.DIRECTION_ALL, SQConst.PL_IN_MONEY, SQConst.KEY_SAMPLE_ALL)
.getDouble(StatsConst.FITNESS, 0)

Eh bien, je ne sais pas!

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. J'écris quelque chose comme un rapport risque-rendement. En quoi est-ce différent du ratio net? Vous pouvez voir que plus il est élevé, mieux c'est. Fondamentalement, je le vois sur une base de 3 ans, mais il semble que cela puisse être court ou long.

Il semble qu'il y ait diverses choses, il peut donc être intéressant de jeter un coup d'œil.

Recommended Posts

Jetons un coup d'œil à l'écran de Quant Analyzer!
Jetons un coup d'œil aux fonctions de la console de gestion Keycloak (édition administrateur)
Jetons un coup d'œil à la procédure de démarrage de la JVM Hotspot
[Java] Jetons un coup d'œil aux expressions de commutation (aperçu) du JDK 13.
Jetons un coup d'œil aux fonctions de la console de gestion de Keycloak (édition utilisateur), service de compte utilisateur
J'ai jeté un coup d'œil aux ressources d'Azure Container Instance
Un rapide coup d'œil sur le problème de Monty Hall
Jetez un coup d'œil à Gradle et lisez le build.gradle généré par Spring Initializr
J'ai jeté un coup d'œil à l'intérieur du Java HashMap
[Android] Quittez l'activité de la source de transition au moment de la transition d'écran
Jetez un œil à Kotlin dans une perspective Java efficace
Pourquoi insérer un saut de ligne à la fin du fichier
Créons une application TODO en Java 5 Changer l'affichage de TODO
Faisons un custom_cop qui souligne le tremblement du nom
Retour rapide sur Java au cours des cinq dernières années
Un mémorandum du problème FizzBuzz
Application Android: expliquons le mécanisme de transition d'écran avec un code simple
Exprimons le résultat de l'analyse du code d'octet Java dans un diagramme de classes
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Un regard sur Jenkins, OpenJDK 8 et Java 11
Jetez un œil au fonctionnement de Processing 3
Correction de l'écran de visualisation de la page de publication
Trouvez la différence à partir d'un multiple de 10
[Swift, un incontournable pour les débutants! ] Comprenons la mise en œuvre du traitement des communications de l'API Web