Skip to content

Model KnightSatchellTran1995MLEDemo

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

KnightSatchellTran1995MLEDemo — quantitative model reference

Wiki home · Quantitative model references · Execution records

This quantitative model reference is provided for study, further research and application within the AlgoQuant framework. Read the research idea and implementation choices separately from the execution record.

Tutorials and quantitative model references · 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 11:43 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

Charts from this run

Analytical trading-rule quantities

Printed analytical quantities at the reported parameter estimates; not historical account returns.

Derived from stdout.log using the precision available in that file. Download plotted data. Undefined or malformed cells are omitted, never replaced by zero.

Chart 1

Fitted distribution parameters — part 1

Parameter axes are separate. Record order is preserved; estimated parameters are not investment performance.

Derived from stdout.log using the precision available in that file. Download plotted data. Undefined or malformed cells are omitted, never replaced by zero.

Chart 2

Fitted distribution parameters — part 2

Parameter axes are separate. Record order is preserved; estimated parameters are not investment performance.

Derived from stdout.log using the precision available in that file. Download plotted data. Undefined or malformed cells are omitted, never replaced by zero.

Chart 3

Downloadable evidence

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

Export Bytes
files/derived-charts/charts.json 1540
files/derived-charts/derived-01.csv 244
files/derived-charts/derived-01.png 59541
files/derived-charts/derived-02.csv 151
files/derived-charts/derived-02.png 94856
files/derived-charts/derived-03.csv 45
files/derived-charts/derived-03.png 46979

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