markovneat library

markov chains in java

License

License

Categories

Categories

Net
GroupId

GroupId

net.andreinc
ArtifactId

ArtifactId

markovneat
Last Version

Last Version

1.8
Release Date

Release Date

Type

Type

jar
Description

Description

markovneat library
markov chains in java
Project URL

Project URL

https://github.com/nomemory/markovneat
Source Code Management

Source Code Management

https://github.com/nomemory/markovneat

Download markovneat

How to add to project

<!-- https://jarcasting.com/artifacts/net.andreinc/markovneat/ -->
<dependency>
    <groupId>net.andreinc</groupId>
    <artifactId>markovneat</artifactId>
    <version>1.8</version>
</dependency>
// https://jarcasting.com/artifacts/net.andreinc/markovneat/
implementation 'net.andreinc:markovneat:1.8'
// https://jarcasting.com/artifacts/net.andreinc/markovneat/
implementation ("net.andreinc:markovneat:1.8")
'net.andreinc:markovneat:jar:1.8'
<dependency org="net.andreinc" name="markovneat" rev="1.8">
  <artifact name="markovneat" type="jar" />
</dependency>
@Grapes(
@Grab(group='net.andreinc', module='markovneat', version='1.8')
)
libraryDependencies += "net.andreinc" % "markovneat" % "1.8"
[net.andreinc/markovneat "1.8"]

Dependencies

test (1)

Group / Artifact Type Version
junit : junit jar 4.13.1

Project Modules

There are no modules declared in this project.

Markov chains in Java.

Installing

Maven:

<dependency>
  <groupId>net.andreinc</groupId>
  <artifactId>markovneat</artifactId>
  <version>1.8</version>
</dependency>

Gradle:

implementation 'net.andreinc:markovneat:1.8'

You can also create a "fat" jar using the shadowJar gradle tasks:

gradle shadowJar

The jar will be generated in /build/libs/markovneat*.jar.

Example 1 - Modelling a simple discrete-time markov chain

A directed graph is used bellow to picture the state transitions for a Markov Chain.

The states represent whether a hypothetical stock market is exhibiting a bull market, bear market, or stagnant market trend during a given week.

(See Market trends).

alt text

With the markovneat library this can be modelled using the following code:

 MChain<String> marketMChain = new MChain<>();

// Transitioning from "BULL" to "BULL" has a 90% chance
marketMChain.add(new MState<>("BULL"), "BULL", 0.9);
// Transitioning from "BULL" to "BEAR" has a 7,5% chance
marketMChain.add(new MState<>("BULL"), "BEAR", 0.075);
// Transitioning from "BULL" to "STAGNANT" has a 2,5% chance
marketMChain.add(new MState<>("BULL"), "STAGNANT", 0.025);

marketMChain.add(new MState<>("BEAR"), "BEAR", 0.8);
marketMChain.add(new MState<>("BEAR"), "BULL", 0.15);
marketMChain.add(new MState<>("BEAR"), "STAGNANT", 0.05);

marketMChain.add(new MState<>("STAGNANT"), "STAGNANT", 0.5);
marketMChain.add(new MState<>("STAGNANT"), "BULL", 0.25);
marketMChain.add(new MState<>("STAGNANT"), "BEAR", 0.25);

marketMChain.generate(10000).forEach(System.out::println);

Output:

STAGNANT
BULL
BULL
BULL
BULL
... and so on

Versions

Version
1.8