Repository navigation
Model MRModelRanged2Demo
All model results · Pinned source · Javadoc
Using this example. Builds an AUD/USD and NZD/USD pair basket with coefficient -1.5 and MRModelRanged threshold 0.0025. It uses local GainCapital tick files, a desktop plotter and trade-based measures. The scale and lot inputs are quantities, not percentages of initial capital.
Model and publication. No single original research publication is claimed for this library/example policy.
Implementation in this tutorial. Here the pair coefficient is -1.5 and MRModelRanged receives 0.0025; these values specify a spread and a range, not an allocation percentage. These are library-specific spread/grid trading policies. A basket converts product prices into a spread; the configured mean-reversion model maps its level or deviation into a desired state, and MeanReversionStrategy translates that state into product orders. Grid distance, periodic/ranged update behavior and scale are distinct controls. The folder name does not mean that option implied volatility is being traded. Mean reversion is an assumption to check, not a property guaranteed by this policy.
| Item | Value |
|---|---|
| Status | failed |
| Run | 39114006111 |
| UTC publication | 2026-10-18 09:11 UTC |
| Source commit | 0097e73c040bdaaddac570e2fe694d9836b676ee |
| Data mode | original main defaults |
| Exit code | 1 |
| Elapsed seconds | 1.07 |
| Time limit seconds | 180 |
| Maximum Java heap | 1200m |
The demo raised an exception or did not return normally. This is not a verified numerical result.
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.volarb.MRModelRanged2DemoThe 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.
This is an incomplete or blocked run. Output below is diagnostic or partial, not a verified strategy result.
09:09:54,874 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
09:09:54,874 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
09:09:54,880 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/home/runner/work/algoquant-examples/algoquant-examples/target/lib/algoquant-dist-3.3.0-SNAPSHOT.jar!/logback.xml]
09:09:54,922 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@34340fab - URL [jar:file:/home/runner/work/algoquant-examples/algoquant-examples/target/lib/algoquant-dist-3.3.0-SNAPSHOT.jar!/logback.xml] is not of type file
09:09:54,970 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
09:09:54,970 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
09:09:54,977 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
09:09:54,986 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
09:09:55,065 |-INFO in ch.qos.logback.core.joran.action.TimestampAction - Using current interpretation time, i.e. now, as time reference.
09:09:55,068 |-INFO in ch.qos.logback.core.joran.action.TimestampAction - Adding property to the context with key="bySecond" and value="2026.10.18,09.09.55" to the LOCAL scope
09:09:55,069 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
09:09:55,072 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE1]
09:09:55,079 |-INFO in ch.qos.logback.core.rolling.FixedWindowRollingPolicy@2aafb23c - Will use zip compression
09:09:55,079 |-WARN in ch.qos.logback.core.rolling.FixedWindowRollingPolicy@2aafb23c - Large window sizes are not allowed.
09:09:55,079 |-WARN in ch.qos.logback.core.rolling.FixedWindowRollingPolicy@2aafb23c - MaxIndex reduced to 21
09:09:55,085 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
09:09:55,086 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE1] - Active log file name: log/algoquant.2026.10.18,09.09.55.log
09:09:55,086 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE1] - File property is set to [log/algoquant.2026.10.18,09.09.55.log]
09:09:55,087 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
09:09:55,087 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
09:09:55,087 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE1] to Logger[ROOT]
09:09:55,087 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
09:09:55,088 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@2b80d80f - Registering current configuration as safe fallback point
java.time.format.DateTimeParseException: Text '2011-03-04 00:00:14:001' could not be parsed, unparsed text found at index 22
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXFileUtils.parseDateTime(sjb:186)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXFileUtils.toData(sjb:232)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXCacheFactory.loadFromFile(meb:199)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXCacheFactory$2$1.s(meb:56)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXCacheFactory$2$1.p(meb:81)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXCacheFactory$2$1.s(meb:21)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXCacheFactory$2$1.<init>(meb:30)
at tech.nmfin.algoquant.data.historicaldata.gaincapital.GainCapitalFXCacheFactory$2.iterator(meb:88)
at tech.nmfin.algoquant.execution.component.simulator.DynamicEventQueue.enqueueEventIterable(ehb:82)
at tech.nmfin.algoquant.execution.component.simulator.SimpleSimulator.s(ujb:252)
at java.util.LinkedHashMap$LinkedValues.forEach(LinkedHashMap.java:608)
at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1082)
at tech.nmfin.algoquant.execution.component.simulator.SimpleSimulator.s(ujb:396)
at tech.nmfin.algoquant.execution.component.simulator.SimpleSimulator.run(ujb:97)
at tech.nmfin.algoquant.demo.model.volarb.MRModelRanged2Demo.main(MRModelRanged2Demo.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at ModelDemoRunner.main(ModelDemoRunner.java:35)
Download MRModelRanged2Demo.zip contains stdout, stderr, the execution record, checksums and any exported CSV/chart files.
Use the first relevant exception and the source configuration to resolve the prerequisite or code issue, then rerun. A missing dataset requires the correct original schema and period; substituting synthetic values would be a different experiment. A timeout establishes only that this bounded attempt did not finish.
For model assumptions, original publications and adaptation limits, use the literature guide.