forked from cdfpaz/genotick
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexampleConfigFile.txt
152 lines (120 loc) · 8.38 KB
/
exampleConfigFile.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
########################################################################################
######################## Example config file ######################################
####################### Lines starting at # are ignored ################################
########################################################################################
# This is a directory where data files are stored. It is relative to the user's working directory.
dataDirectory data
# Time at which Genotick should start its simulation / training.
# Leave commented out to start the simulation at the first available time point.
startTimePoint 20000101
# Time at which the simulation / training ends.
# Leave commented out to end the simulation at the last available time point.
endTimePoint 20150101
# If true, Genotick will perform a full training.
# If false, then only a prediction is given. The population and robot weights are neither trained nor updated.
performTraining true
# Path to a directory of existing robot files. If specified it must be a valid and readable directory.
# # If performTraining is true, the following settings apply:
# 1. [populationDAO] -> Robots are spawned and trained from scratch in RAM (faster).
# Upon simulation end, the population is stored in a
# generated folder within the user's working directory
# 2. [populationDAO ram:user/path/] -> Existing robots are loaded and trained in RAM (faster).
# Upon simulation end, the new robot files are saved in the given folder.
# 3. [populationDAO disk:user/path/] -> Existing robots are loaded and trained on the hard drive (slower).
# or [populationDAO user/path/] Added robots are immediately saved and removed robots are removed in the given folder.
# This is the preferred method for live trading.
# # If performTraining is false, the following settings apply:
# 1. [populationDAO] -> Nothing happens. There is no population to make predictions with.
# 2. [populationDAO ram:user/path/] -> Existing robots are loaded and tested in RAM (faster).
# The population in the given folder remains unchanged.
# 3. [populationDAO disk:user/path/] -> Existing robots are loaded and tested on the hard drive (slower).
# or [populationDAO user/path/] The population in the given folder remains unchanged.
populationDAO
# Desired size for the population. Should be at least in the thousands to get satisfactory results.
# The more the merrier.
populationDesiredSize 1000
# The minumum amount of instructions that are generated for each robot.
minimumRobotInstructions 16
# The maximum amount of instructions that are generated for each robot.
maximumRobotInstructions 1024
# The maximum amount of instructions that can be executed on each timepoint for each robot for each data file.
# Jumps can cause long loops, or even infinite loops. The final limit is: maximumProcessorInstructionFactor * robotInstructionCount
maximumProcessorInstructionFactor 256
# This setting is used to calculate how many robots are considered to be removed based on their age.
maximumDeathByAge 0.01
# This setting is used to calculate how many robots are considered to be removed based on their weight.
maximumDeathByWeight 0.01
# The probability of removing a robot because it is too old.
probabilityOfDeathByAge 0.5
# The probability of removing a robot because its weight is too close to 0.
# Currently, removal by weight happens only if there is no more space to breed in the population.
probabilityOfDeathByWeight 0.5
# The weight mode determines how a robot's performance is measured and weighted.
# All modes account for inverted results, where a bad performance flips the prediction.
# [weightMode WIN_COUNT] Robot performance is measured by its win count (wins minus losses)
# [weightMode WIN_RATE] Robot performance is measured by its win rate (wins devided by losses)
# [weightMode PROFIT_COUNT] Robot performance is measured by its profit (profits minus losses)
# [weightMode PROFIT_FACTOR] Robot performance is measured by its profit factor (profits devided by losses)
weightMode WIN_COUNT
# The weight can be scaled by exponentiation.
# The greater the exponent, the more will well performing robots outweigh poorly performing robots.
weightExponent 2.0
# When a child robot is born its weight is zero because it has no predictions yet.
# This setting enables the child robot to inherit a percentage (in range 0..1) of its parents' average weight.
# This is done to protect new robots from getting removed when they had a few predictions only.
inheritedChildWeight 0
# [inheritedChildWeightMode PARENTS] inherits the average weight from 2 parents to the child
# [inheritedChildWeightMode ANCESTORS] inherits the average weight from 2 parents and their ancestors to the child
# [inheritedChildWeightMode ANCESTORS_LOG] inherits the logarithmic average weight from 2 parents and their ancestors to the child
# Weight inheritance is scaled by [inheritedChildWeight]
inheritedChildWeightMode ANCESTORS_LOG
# Value of how far a robot can read data into the past. Set it to something reasonable, depending on your time frame.
maximumDataOffset 256
# Value for how long a new robot is protected and cannot be removed.
# This setting has no effect if it violates 'killNonPredictingRobots' and 'requireSymmetricalRobots'.
# Number of outcomes increments by one for every data on every time point.
protectRobotsUntilOutcomes 100
# The probability of spawning new instructions when making a child.
newInstructionProbability 0.01
# The probability of mutating existing instructions when making a child.
instructionMutationProbability 0.01
# The probability of skipping an instruction when making a child. Preferably set very close to newInstructionProbability,
# otherwise robots will either shrink and potentially become useless or grow uncontrollably and potentially execute for a long time.
skipInstructionProbability 0.01
# The number of outcomes required for a robot to breed its first child robot.
minimumOutcomesToAllowBreeding 50
# The number of outcomes required for a parent robot to breed another child.
minimumOutcomesBetweenBreeding 50
# If true, then robots that make no prediction will be removed immediately,
# regardless of the protection implied by 'protectUntilOutcomes'
killNonPredictingRobots true
# The number of totally new and random robots to be added at each time point (as a fraction of PopulationDesiredSize).
# Robots are added even if the population is full.
randomRobotsAtEachUpdate 0.02
# The number of the best robots to protect (as a fraction of PopulationDesiredSize).
protectBestRobots 0.02
# If true, robots are removed as soon as their predictions (UP, DOWN) on regular data sets
# do not match reversed predictions on reversed data sets.
# This setting should be used only if every data file has its reversed equivalent.
# This setting ignores 'protectUntilOutcomes'.
requireSymmetricalRobots true
# This prevents Genotick from trading if Long (UP) votes are too close to Short (DOWN) votes.
# The majority weight is divided by this number and still has to be larger than the minority weight.
# By default this is set to 1, so even small differences can tilt the direction.
# For example setting this number to 2 means that the majority weight has to be at least 2 times larger
# than the minority weight. Numbers below 1 make no sense.
resultThreshold 1
# This tells Genotick to ignore the first N columns for learning.
# The 'open' column will be used for trading regardless.
# Example column count (date, open, high, low, close, volume):
# 20160222, 100, 101, 99, 103, 42
# 0 1 2 3 4 5
# If 'ignoreColumns' is 3 then only the 4th and 5th columns (close and volume) will be used for learning.
ignoreColumns 0
# Random seed for developers. Useful for testing code changes. Zero for using default 'random' seed.
randomSeed 0
# [chartMode NONE] Do not draw any charts.
# [chartMode JFREECHART_DRAW] Draw genotick charts on screen with JFreeChart.
# [chartMode JFREECHART_SAVE] Save genotick charts in the user's working directory with JFreeChart.
# [chartMode JFREECHART_DRAW_SAVE] Draw and save genotick charts with JFreeChart.
chartMode NONE