Skip to content

Model KnightSatchellTran1995MLEDemo

github-actions[bot] edited this page Oct 18, 2026 · 8 revisions

KnightSatchellTran1995MLEDemo — quantitative model tutorial

All quantitative model results · Pinned source · Javadoc

Paper introduction

J. L. Knight, S. E. Satchell and K. C. Tran, Statistical modelling of asymmetric risk in asset returns (1995) develops a return-distribution model that treats positive and negative moves differently. The publisher abstract describes scaled gamma distributions for conditional upward and downward returns, allowing asymmetry that a single symmetric normal distribution cannot capture.

The learning objective is to distinguish a probability model for returns from a trading rule. Fitting parameters or generating a plausible sample does not by itself produce a funded investment account. A fitted asymmetric distribution also needs validation on observations not used to estimate it.

This summary relies on the original publisher abstract and verified publication metadata; full-text derivations were not available for review. The library's generator, estimator and reported parameters should be checked against their own API contracts before claiming an exact paper replication.

How this demo connects to the idea

Generate N=100 returns from KnightSatchellTran1995, fit them with KnightSatchellTran1995MLE.fitModel and compare generating versus fitted parameters. The parameters supplied to the constructor govern the return generator; GMA12 then computes model- based holding-time and long-return statistics. These are analytical/simulation diagnostics without a funded trading account.

What this example teaches

Compares the fitted model with the real model.

Using this example. Generates observations from a configured Knight-Satchell-Tran model and fits its parameters by maximum likelihood. Compare fitted and generating parameters to understand the estimator; finite samples and random draws affect the result.

Model and publication. The original model concerns asymmetric upward and downward returns. The publication identity was verified, but its full text was unavailable; distributional and estimator details below follow the code/API, not an asserted paper reproduction.

Implementation in this tutorial. Generate N=100 returns from KnightSatchellTran1995, fit them with KnightSatchellTran1995MLE.fitModel and compare generating versus fitted parameters. The parameters supplied to the constructor govern the return generator; GMA12 then computes model- based holding-time and long-return statistics. These are analytical/simulation diagnostics without a funded trading account.

Verified execution record

Item Value
Status completed
Run 39114360151
UTC publication 2026-10-18 09:18 UTC
Source commit 355aa9242fc2a247b256aecc8406cbb409aa5ff3
Data mode original main defaults
Exit code 0
Elapsed seconds 1.23
Time limit seconds 180
Maximum Java heap 1200m

The original main returned successfully. Read the output and model assumptions before interpreting it.

Reproduce the calculation

Follow the repository setup for JDK 8, Maven credentials and an external NM license. From the repository root:

mvn -U -Dmaven.test.skip=true clean package
mvn exec:java -Dexec.mainClass=tech.nmfin.algoquant.demo.model.kst1995.KnightSatchellTran1995MLEDemo

The automated run uses scripts/ModelDemoRunner.java to initialize the external license before the unchanged main, save JFreeChart windows as PNGs, and exit after main returns. It uses an isolated working directory with the repository datasets/configuration linked in. Running directly may leave desktop windows open.

Observed output

state 0: q = 0.605634, alpha0 = 0.903740, rate0 = 0.887672; state 1: p = 0.035714, alpha1 = 1.234315, rate1 = 1.657855; mu: 0.993544
the probability of holding till time = 1: 0.266667
the expected pnl for long position: -0.750000
the probability of holding till time = 1: 0.279896the expected pnl for long position: -0.990526DEMO_RUNNER_MAIN_RETURNED

Downloadable evidence

Download KnightSatchellTran1995MLEDemo.zip contains stdout, stderr, the execution record, checksums and any exported CSV/chart files.

Interpreting the result

Read the reported units: optimizer weights, model-fit coefficients, forecast correlations and simulated P/L are different outputs. Synthetic runs demonstrate the API rather than historical market returns. Inspect undefined values and open positions instead of replacing them with zero. Chart exports visualize exactly this run.

For model assumptions, original publications and adaptation limits, use the literature guide.

Clone this wiki locally