Stock Market Simulator main e8c3612
A game that provides a realistic stock buying experience with unpredictable trends to test investment strategies.
Loading...
Searching...
No Matches
events.h File Reference

Implements event-related data structures and (declarations of) such functions. More...

#include <istream>
#include <map>
#include <sstream>
#include <string>
#include <vector>
Include dependency graph for events.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Stock_event
 The data structure of an event that will be applied to the stocks. More...
 

Typedefs

typedef std::map< decltype(Stock_event::event_id), std::vector< decltype(Stock_event::event_id)> > mutuallyExclusiveMap
 

Enumerations

enum  event_type { all_stocks , category , pick_random_stock }
 The type of event that will be applied to the stocks. More...
 
enum  stock_modifiers { standard_deviation , mean , lower_limit , upper_limit }
 The attributes of a stock that Events will modify are hardcoded here. More...
 

Functions

bool assertion_check_mutual_exclusivity (void)
 Check if there are mutual exclusivity violations in all_stock_events.
 
void assertion_check_uniq_events (void)
 
mutuallyExclusiveMap build_mutual_exclusivity_map (const std::vector< Stock_event > &all_events)
 
mutuallyExclusiveMap check_mutual_exclusivity (const std::vector< Stock_event > &all_events)
 If A is mutually exclusive with B, then B is mutually exclusive with A.
 
Stock_event getStockSplitEvent (void)
 
std::vector< Stock_eventpick_events (const std::vector< Stock_event > &all_events, unsigned int num_events)
 Pick a random event from the list of events.
 
void print_map (const std::map< unsigned int, std::vector< unsigned int > > &map)
 Print a map to std::cout.
 
std::vector< Stock_eventuniq_events (std::vector< Stock_event > picked_events, const std::vector< Stock_event > &all_events)
 Filter out the events that are mutually exclusive with each other, or events that are identical (except for event_type::pick_random_stock).
 

Variables

const std::vector< Stock_eventall_stock_events
 The list of all events that will be applied to the stocks.
 
const float defaultLowerLimit = -5
 Default lower limit.
 
constexpr float defaultMean = 0.5f / meanMultiplier
 Default mean.
 
const float defaultUpperLimit = 5
 Default upper limit.
 
const unsigned int durationDecreaseMultiplier = 2
 Rate of decrease of duration.
 
const float lowerLimitMultiplier = 0.2
 Lower limit multiplier.
 
constexpr float meanMultiplier = 0.6f
 Multiplier for mean.
 
const float sdMultiplier = 7.5f
 Multiplier for standard deviation.
 
const float upperLimitMultiplier = 0.2
 Upper limit multiplier.
 

Detailed Description

Implements event-related data structures and (declarations of) such functions.

Definition in file events.h.

Typedef Documentation

◆ mutuallyExclusiveMap

typedef std::map<decltype(Stock_event::event_id), std::vector<decltype(Stock_event::event_id)> > mutuallyExclusiveMap

Definition at line 204 of file events.h.

Enumeration Type Documentation

◆ event_type

enum event_type

The type of event that will be applied to the stocks.

Note
These objects does not have any values, they are used to specify the type of event.
if (event.type_of_event == all_stocks) {
// Apply the event to all stocks
for (auto &stock : stocks) {
stock.add_event(event);
}
} else if (event.type_of_event == category) { ...
@ category
This event will apply to stocks within the specified category.
Definition events.h:92
@ all_stocks
This event will apply to all stocks.
Definition events.h:90
Enumerator
all_stocks 

This event will apply to all stocks.

category 

This event will apply to stocks within the specified category.

pick_random_stock 

This event will apply to a randomly selected stock from all of the stocks available currently.

Definition at line 88 of file events.h.

88 {
89 /** This event will apply to all stocks. */
91 /** This event will apply to stocks within the specified category. */
93 /** This event will apply to a randomly selected stock from all of the stocks
94 available currently. */
96};
@ pick_random_stock
This event will apply to a randomly selected stock from all of the stocks available currently.
Definition events.h:95

◆ stock_modifiers

The attributes of a stock that Events will modify are hardcoded here.

Note
Please store them as std::map<stock_modifiers, float>.
Enumerator
standard_deviation 

Amount of variation of the stock price percentage change.

mean 

The expectation of the stock price percentage change.

For a normal distribution, this is the mean, median and mode.

lower_limit 

The lower limit of the stock price percentage change.

For example, if lower_limit is -10, then the percentage change will not go below -10%. Note that stock initially has a lower limit of -40%. This value adds to that. The value should be [-100, 0].

upper_limit 

The upper limit of the stock price percentage change.

For example, if upper_limit is 10, then the percentage change will not go over +10%. Note that stock initially has a upper limit of +40%. This value adds to that. The value should be [0, 100].

Definition at line 30 of file events.h.

30 {
31 /** Amount of variation of the stock price percentage change. */
33 /** The expectation of the stock price percentage change.
34 * For a normal distribution, this is the mean, median and mode.
35 */
36 mean,
37 /** The lower limit of the stock price percentage change.
38 * For example, if lower_limit is -10, then the percentage change will not go below
39 * -10%. Note that stock initially has a lower limit of -40%. This value adds to
40 * that. The value should be `[-100, 0]`.
41 */
43 /** The upper limit of the stock price percentage change.
44 * For example, if upper_limit is 10, then the percentage change will not go over
45 * +10%. Note that stock initially has a upper limit of +40%. This value adds to
46 * that. The value should be `[0, 100]`.
47 */
49};
@ upper_limit
The upper limit of the stock price percentage change.
Definition events.h:48
@ standard_deviation
Amount of variation of the stock price percentage change.
Definition events.h:32
@ mean
The expectation of the stock price percentage change.
Definition events.h:36
@ lower_limit
The lower limit of the stock price percentage change.
Definition events.h:42

Function Documentation

◆ assertion_check_mutual_exclusivity()

bool assertion_check_mutual_exclusivity ( void )

Check if there are mutual exclusivity violations in all_stock_events.

Returns
True if the events are mutually exclusive with each other.
Todo
: put assertion_check_uniq_events into a separate file, e.g. tests.cpp

Definition at line 1331 of file events.cpp.

1331 {
1332 /// @todo: put assertion_check_uniq_events into a separate file, e.g. tests.cpp
1333 // Assert that the every key has no value.
1334 auto checkEventResult = check_mutual_exclusivity(all_stock_events);
1335 for (const auto & [key, value] : checkEventResult) {
1336 // If the assertion is raised, print the checkEventResult and exit the
1337 // program.
1338 if (!value.empty()) {
1339 std::cout << "Error: detected mutual exclusivity violation! Details:"
1340 << std::endl;
1341 print_map(checkEventResult);
1342 return true;
1343 }
1344 }
1345 return false;
1346}
void print_map(const std::map< unsigned int, std::vector< unsigned int > > &map)
Print a map to std::cout.
Definition events.cpp:1269
const std::vector< Stock_event > all_stock_events
The list of all events that can be applied to the stocks.
Definition events.cpp:49
mutuallyExclusiveMap check_mutual_exclusivity(const std::vector< Stock_event > &all_events)
If A is mutually exclusive with B, then B is mutually exclusive with A.
Definition events.cpp:1307

References all_stock_events, check_mutual_exclusivity(), and print_map().

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ assertion_check_uniq_events()

void assertion_check_uniq_events ( void )
Todo
: put assertion_check_uniq_events into a separate file, e.g. tests.cpp

Definition at line 1416 of file events.cpp.

1416 {
1417 /// @todo: put assertion_check_uniq_events into a separate file, e.g. tests.cpp
1418 Stock_event craftedEvent = Stock_event{
1419 /* event_id */ 0,
1420 /* mutually_exclusive_events */ {1},
1421 /* text */ "Crafted Event",
1422 /* duration */ 1,
1423 /* percentage_permille */ 0,
1424 /* type_of_event */ pick_random_stock,
1425 /* category. Assign this to zero first. */ 0,
1426 /* modifiers */
1427 {{standard_deviation, 0}, {mean, 0}, {lower_limit, 0}, {upper_limit, 0}},
1428 };
1429 Stock_event craftedEvent_2 = craftedEvent;
1430 Stock_event craftedEvent_3 = Stock_event{
1431 /* event_id */ 1,
1432 /* mutually_exclusive_events */ {0},
1433 /* text */ "Crafted Event",
1434 /* duration */ 1,
1435 /* percentage_permille */ 0,
1436 /* type_of_event */ all_stocks,
1437 /* category. Assign this to zero first. */ 0,
1438 /* modifiers */
1439 {{standard_deviation, 0}, {mean, 0}, {lower_limit, 0}, {upper_limit, 0}},
1440 };
1441 std::vector<Stock_event> picked_events = {
1442 craftedEvent, craftedEvent_2, craftedEvent_3};
1443 std::vector<Stock_event> uniqEvents = uniq_events(picked_events, picked_events);
1444
1445 std::cout << uniqEvents.size() << std::endl;
1446 if (!(uniqEvents.size() == 2)) {
1447 std::cout << uniqEvents.size() << std::endl;
1448 assert(false &&
1449 "Detected duplicate/mutually-exclusive events after uniq_events()");
1450 }
1451}
std::vector< Stock_event > uniq_events(std::vector< Stock_event > picked_events, const std::vector< Stock_event > &all_events)
Filter out the events that are mutually exclusive with each other, or events that are identical (exce...
Definition events.cpp:1380
The data structure of an event that will be applied to the stocks.
Definition events.h:104

References all_stocks, lower_limit, mean, pick_random_stock, standard_deviation, uniq_events(), and upper_limit.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_mutual_exclusivity_map()

mutuallyExclusiveMap build_mutual_exclusivity_map ( const std::vector< Stock_event > & all_events)

Definition at line 1293 of file events.cpp.

1294 {
1295 mutuallyExclusiveMap mut_excl_map;
1296 // Build the map
1297 for (unsigned int i = 0; i < all_events.size(); i++) {
1298 for (unsigned int j = 0; j < all_events[i].mutually_exclusive_events.size();
1299 j++) {
1300 mut_excl_map[all_events[i].event_id].emplace_back(
1301 all_events[i].mutually_exclusive_events[j]);
1302 }
1303 }
1304 return mut_excl_map;
1305}
std::map< decltype(Stock_event::event_id), std::vector< decltype(Stock_event::event_id)> > mutuallyExclusiveMap
Definition events.h:204

Referenced by check_mutual_exclusivity(), and uniq_events().

Here is the caller graph for this function:

◆ check_mutual_exclusivity()

mutuallyExclusiveMap check_mutual_exclusivity ( const std::vector< Stock_event > & all_events)

If A is mutually exclusive with B, then B is mutually exclusive with A.

Check if these two events specifies each other as mutually exclusive in mutually_exclusive_events.

Parameters
all_eventsThe list of all events
Returns
A map of event_id to a vector of mutually exclusive event_ids that does not exist but should.

Definition at line 1307 of file events.cpp.

1308 {
1309 mutuallyExclusiveMap mut_excl_map = build_mutual_exclusivity_map(all_events);
1310
1311 // If two events are mutually exclusive, they should be in each other's list.
1312 // Remove such two events from the map.
1313 // E.g. {0: [1,2], 1: [0], 2:[]} -> {0: [2]}
1314 // In this case, 2 does not state that it is mutually exclusive with 0.
1315 for (const auto & i : mut_excl_map) {
1316 for (unsigned int j : i.second) {
1317 if (std::find(mut_excl_map[j].begin(), mut_excl_map[j].end(), i.first) !=
1318 mut_excl_map[j].end()) {
1319 mut_excl_map[i.first].erase(std::remove(mut_excl_map[i.first].begin(),
1320 mut_excl_map[i.first].end(), j),
1321 mut_excl_map[i.first].end());
1322 mut_excl_map[j].erase(std::remove(mut_excl_map[j].begin(),
1323 mut_excl_map[j].end(), i.first),
1324 mut_excl_map[j].end());
1325 }
1326 }
1327 }
1328 return mut_excl_map;
1329}
mutuallyExclusiveMap build_mutual_exclusivity_map(const std::vector< Stock_event > &all_events)
Definition events.cpp:1293

References build_mutual_exclusivity_map().

Referenced by assertion_check_mutual_exclusivity().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getStockSplitEvent()

Stock_event getStockSplitEvent ( void )

Definition at line 1453 of file events.cpp.

1453 {
1454 return Stock_event{
1455 /* event_id */ 65535,
1456 /* mutually_exclusive_events */ {},
1457 /* text */
1458 " has rised too high and the company has decide a stock split on it.",
1459 /* duration */ 1,
1460 /* percentage_permille */ 0,
1461 /* type_of_event */ pick_random_stock,
1462 /* category. Assign this to zero first. */ 0,
1463 /* modifiers*/
1464 {{standard_deviation, 0}, {mean, 0}, {lower_limit, 0}, {upper_limit, 0}},
1465 };
1466}

References lower_limit, mean, pick_random_stock, standard_deviation, and upper_limit.

Referenced by Stock::setup_STOCK_SPLIT_EVENT().

Here is the caller graph for this function:

◆ pick_events()

std::vector< Stock_event > pick_events ( const std::vector< Stock_event > & all_events,
unsigned int num_events )

Pick a random event from the list of events.

Parameters
all_eventsThe list of all events
num_eventsThe number of events to pick
Returns
A vector of Stock_event
Todo
Optimize this loop so that we don't have to calculate the total_permille every time we pick an event.

When picking the event, consider event.probability_permille. E.g. if there are 3 events with probability_permille 10, 20, 30. total_permille = 60; random_permille = 0 to 59; If random_permille is 0 to 9, pick the first event; If random_permille is 10 to 29, pick the second event; If random_permille is 30 to 59, pick the third event.

Definition at line 1348 of file events.cpp.

1349 {
1350 std::vector<Stock_event> picked_events;
1351 unsigned int total_permille = 0;
1352 /// @todo Optimize this loop so that we don't have to calculate the total_permille
1353 /// every time we pick an event.
1354 for (const Stock_event & event : all_events) {
1355 total_permille += event.probability_permille;
1356 }
1357 // Pick num_events random events
1358 for (unsigned int i = 0; i < num_events; i++) {
1359 unsigned int _total_permille = total_permille;
1360 /** When picking the event, consider event.probability_permille.
1361 * E.g. if there are 3 events with probability_permille 10, 20, 30.
1362 * total_permille = 60;
1363 * random_permille = 0 to 59;
1364 * If random_permille is 0 to 9, pick the first event;
1365 * If random_permille is 10 to 29, pick the second event;
1366 * If random_permille is 30 to 59, pick the third event.
1367 */
1368 unsigned int random_permille = random_integer(_total_permille);
1369 for (const Stock_event & event : all_events) {
1370 _total_permille -= event.probability_permille;
1371 if (_total_permille <= random_permille) {
1372 picked_events.emplace_back(event);
1373 break;
1374 }
1375 }
1376 }
1377 return uniq_events(picked_events, all_stock_events);
1378}
unsigned int random_integer(unsigned int max_integer)
python randint like function

References all_stock_events, random_integer(), and uniq_events().

Referenced by new_events_next_round().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_map()

void print_map ( const std::map< unsigned int, std::vector< unsigned int > > & map)

Print a map to std::cout.

Parameters
mapThe std::map object you want to print.

Definition at line 1269 of file events.cpp.

1269 {
1270 for (const auto & i : map) {
1271 std::cout << i.first << ": ";
1272 for (unsigned int j : i.second) {
1273 std::cout << j << " ";
1274 }
1275 std::cout << std::endl;
1276 }
1277}

Referenced by assertion_check_mutual_exclusivity().

Here is the caller graph for this function:

◆ uniq_events()

std::vector< Stock_event > uniq_events ( std::vector< Stock_event > picked_events,
const std::vector< Stock_event > & all_events )

Filter out the events that are mutually exclusive with each other, or events that are identical (except for event_type::pick_random_stock).

Parameters
picked_eventsThe list of events to filter.
all_eventsThe list of all events to consider.
Returns
A list of events that are mutually exclusive with each other.

Definition at line 1380 of file events.cpp.

1381 {
1382 mutuallyExclusiveMap mut_excl_map = build_mutual_exclusivity_map(all_events);
1383
1384 unsigned int first = 0;
1385 while (first < picked_events.size()) {
1386 unsigned int second = first + 1;
1387 while (second < picked_events.size()) {
1388 const bool isRandomStockEvents =
1389 picked_events[first].type_of_event == pick_random_stock;
1390 const bool isIdenticalEvents =
1391 picked_events[first] == picked_events[second];
1392
1393 if (!isRandomStockEvents && isIdenticalEvents) {
1394 picked_events.erase(picked_events.begin() + second);
1395 continue;
1396 }
1397
1398 const bool areMutuallyExclusiveEvents =
1399 std::find(mut_excl_map[picked_events[first].event_id].begin(),
1400 mut_excl_map[picked_events[first].event_id].end(),
1401 picked_events[second].event_id) !=
1402 mut_excl_map[picked_events[first].event_id].end();
1403
1404 if (areMutuallyExclusiveEvents) {
1405 picked_events.erase(picked_events.begin() + second);
1406 continue;
1407 }
1408
1409 second++;
1410 }
1411 first++;
1412 }
1413 return picked_events;
1414}

References build_mutual_exclusivity_map(), and pick_random_stock.

Referenced by assertion_check_uniq_events(), and pick_events().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ all_stock_events

const std::vector<Stock_event> all_stock_events
extern

The list of all events that will be applied to the stocks.

The list of all events that will be applied to the stocks.

category_list

Event ID Range Affected Category
0 to 7 All Stocks
8 to 11 Adv&Market
12 to 16 Aero&Def
17 to 22 Airlines
23 to 27 RenewEnergy
28 to 31 Auto
32 to 34 Banks
35 to 37 Biotech
38 to 40 Broadcast
41 to 46 Casinos&Gaming
47 to 51 E-Commerce
52 to 55 FinServices
56 to 61 Food&Beverage
62 to 66 Healthcare
67 to 74 Tech
75 to 79 RealEstate
80 to 85 Retail
86 to 91 Telecom
92 to 98 pick_random_stock

Definition at line 49 of file events.cpp.

49 {
50 // event_id 0 to 7 affect all stocks
51 {
52 /** event_id */ 0,
53 /** mutually_exclusive_events */ {1},
54 /** text */ "The FED has decreased the interest rate!",
55 /** duration */ 5,
56 /** percentage_permille */ 4,
57 /** type_of_event */ all_stocks,
58 /** category */ 0,
59 /** modifiers*/
60 {{standard_deviation, 0.1}, {mean, 20}, {lower_limit, 0}, {upper_limit, 20}},
61 },
62 {
63 /** event_id */ 1,
64 /** mutually_exclusive_events */ {0, 3},
65 /** text */ "The FED has increased the interest rate!",
66 /** duration */ 5,
67 /** percentage_permille */ 4,
68 /** type_of_event */ all_stocks,
69 /** category */ 0,
70 /** modifiers*/
71 {{standard_deviation, 0.1}, {mean, -20}, {lower_limit, -20}, {upper_limit, 0}},
72 },
73 {
74 /** event_id */ 2,
75 /** mutually_exclusive_events */ {},
76 /** text */ "Economic Recession: Market Downturn Signals Investor Concerns",
77 /** duration */ 7,
78 /** percentage_permille */ 2,
79 /** type_of_event */ all_stocks,
80 /** category */ 0,
81 /** modifiers*/
82 {{standard_deviation, 0.2}, {mean, -30}, {lower_limit, -30}, {upper_limit, 0}},
83 },
84 {
85 /** event_id */ 3,
86 /** mutually_exclusive_events */ {1},
87 /** text */
88 "Central Bank Cuts Interest Rates: Market Stimulus Boosts Investor Sentiment",
89 /** duration */ 3,
90 /** percentage_permille */ 4,
91 /** type_of_event */ all_stocks,
92 /** category */ 0,
93 /** modifiers*/
94 {{standard_deviation, 0.05}, {mean, 10}, {lower_limit, 0}, {upper_limit, 10}},
95 },
96 {
97 /** event_id */ 4,
98 /** mutually_exclusive_events */ {},
99 /** text */
100 "Trade War Escalates: Global Market Volatility Amidst Rising Tensions",
101 /** duration */ 5,
102 /** percentage_permille */ 4,
103 /** type_of_event */ all_stocks,
104 /** category */ 0,
105 /** modifiers*/
106 {{standard_deviation, 0.15}, {mean, -30}, {lower_limit, -30}, {upper_limit, 0}},
107 },
108 {
109 /** event_id */ 5,
110 /** mutually_exclusive_events */ {},
111 /** text */
112 "Natural Disaster Strikes: Stock Market Reacts to Catastrophic Event",
113 /** duration */ 7,
114 /** percentage_permille */ 4,
115 /** type_of_event */ all_stocks,
116 /** category */ 0,
117 /** modifiers*/
118 {{standard_deviation, 0.1}, {mean, -20}, {lower_limit, -20}, {upper_limit, 0}},
119 },
120 {
121 /** event_id */ 6,
122 /** mutually_exclusive_events */ {},
123 /** text */ "Government Policy Change: Market Impacted by New Regulations",
124 /** duration */ 4,
125 /** percentage_permille */ 4,
126 /** type_of_event */ all_stocks,
127 /** category */ 0,
128 /** modifiers*/
129 {{standard_deviation, 0.08}, {mean, -10}, {lower_limit, -15}, {upper_limit, 5}},
130 },
131 {
132 /** event_id */ 7,
133 /** mutually_exclusive_events */ {},
134 /** text */ "Inflation Surges: Market Concerns Rise as Prices Soar",
135 /** duration */ 6,
136 /** percentage_permille */ 12,
137 /** type_of_event */ all_stocks,
138 /** category */ 0,
139 /** modifiers*/
140 {{standard_deviation, 0.12}, {mean, 0}, {lower_limit, -25}, {upper_limit, 0}},
141 },
142 // event_id 8 to 11 affect category "Adv&Market"
143 {
144 /** event_id */ 8,
145 /** mutually_exclusive_events */ {},
146 /** text */ "New Social Media Platform Disrupts Advertising Landscape",
147 /** duration */ 4,
148 /** percentage_permille */ 8,
149 /** type_of_event */ category,
150 /** category */ 0,
151 /** modifiers */
152 {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -10}, {upper_limit, 0}},
153 },
154 {
155 /** event_id */ 9,
156 /** mutually_exclusive_events */ {},
157 /** text */ "Digital Advertising Spend Reaches All-Time High",
158 /** duration */ 6,
159 /** percentage_permille */ 15,
160 /** type_of_event */ category,
161 /** category */ 0,
162 /** modifiers */
163 {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
164 },
165 {
166 /** event_id */ 10,
167 /** mutually_exclusive_events */ {},
168 /** text */ "Marketing Automation Tools Gain Popularity Among Businesses",
169 /** duration */ 5,
170 /** percentage_permille */ 10,
171 /** type_of_event */ category,
172 /** category */ 0,
173 /** modifiers */
174 {{standard_deviation, 0.12}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
175 },
176 {
177 /** event_id */ 11,
178 /** mutually_exclusive_events */ {},
179 /** text */ "Artificial Intelligence Revolutionizes Targeted Advertising",
180 /** duration */ 5,
181 /** percentage_permille */ 12,
182 /** type_of_event */ category,
183 /** category */ 0,
184 /** modifiers */
185 {{standard_deviation, 0.10}, {mean, 4}, {lower_limit, 0}, {upper_limit, 25}},
186 },
187 // event_id 12 to 16 affect category "Aero&Def"
188 {
189 /** event_id */ 12,
190 /** mutually_exclusive_events */ {16},
191 /** text */
192 "Government Increases Defense Spending Amid Rising Geopolitical Tensions",
193 /** duration */ 4,
194 /** percentage_permille */ 5,
195 /** type_of_event */ category,
196 /** category */ 1,
197 /** modifiers */
198 {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
199 },
200 {
201 /** event_id */ 13,
202 /** mutually_exclusive_events */ {15},
203 /** text */ "Emerging Technologies Transform Aerospace Industry",
204 /** duration */ 5,
205 /** percentage_permille */ 10,
206 /** type_of_event */ category,
207 /** category */ 1,
208 /** modifiers */
209 {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
210 },
211 {
212 /** event_id */ 14,
213 /** mutually_exclusive_events */ {},
214 /** text */ "Space Exploration Companies Achieve Major Milestones",
215 /** duration */ 5,
216 /** percentage_permille */ 12,
217 /** type_of_event */ category,
218 /** category */ 1,
219 /** modifiers */
220 {{standard_deviation, 0.12}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
221 },
222 {
223 /** event_id */ 15,
224 /** mutually_exclusive_events */ {13},
225 /** text */ "Supply Chain Disruptions Hinder Aerospace Manufacturing",
226 /** duration */ 6,
227 /** percentage_permille */ 12,
228 /** type_of_event */ category,
229 /** category */ 1,
230 /** modifiers */
231 {{standard_deviation, 0.10}, {mean, -3}, {lower_limit, -10}, {upper_limit, 0}},
232 },
233 {
234 /** event_id */ 16,
235 /** mutually_exclusive_events */ {12},
236 /** text */ "Budget Cuts Lead to Decreased Defense Contracts",
237 /** duration */ 5,
238 /** percentage_permille */ 10,
239 /** type_of_event */ category,
240 /** category */ 1,
241 /** modifiers */
242 {{standard_deviation, 0.12}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
243 },
244 // event_id 17 to 22 affect category "Airlines"
245 {
246 /** event_id */ 17,
247 /** mutually_exclusive_events */ {},
248 /** text */ "Airline Industry Experiences Surge in Travel Demand",
249 /** duration */ 7,
250 /** percentage_permille */ 15,
251 /** type_of_event */ category,
252 /** category */ 2,
253 /** modifiers */
254 {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
255 },
256 {
257 /** event_id */ 18,
258 /** mutually_exclusive_events */ {},
259 /** text */
260 "Fuel Prices Skyrocket, Putting Pressure on Airlines' Profit Margins",
261 /** duration */ 6,
262 /** percentage_permille */ 10,
263 /** type_of_event */ category,
264 /** category */ 2,
265 /** modifiers */
266 {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -20}, {upper_limit, 0}},
267 },
268 {
269 /** event_id */ 19,
270 /** mutually_exclusive_events */ {},
271 /** text */ "Airline Strikes Disrupt Travel Plans for Thousands of Passengers",
272 /** duration */ 5,
273 /** percentage_permille */ 12,
274 /** type_of_event */ category,
275 /** category */ 2,
276 /** modifiers */
277 {{standard_deviation, 0.12}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
278 },
279 {
280 /** event_id */ 20,
281 /** mutually_exclusive_events */ {},
282 /** text */ "New Low-Cost Airline Enters the Market, Intensifying Competition",
283 /** duration */ 6,
284 /** percentage_permille */ 12,
285 /** type_of_event */ category,
286 /** category */ 2,
287 /** modifiers */
288 {{standard_deviation, 0.10}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
289 },
290 {
291 /** event_id */ 21,
292 /** mutually_exclusive_events */ {},
293 /** text */
294 "Natural Disasters Disrupt Airline Operations and Cause Flight Cancellations",
295 /** duration */ 3,
296 /** percentage_permille */ 10,
297 /** type_of_event */ category,
298 /** category */ 2,
299 /** modifiers */
300 {{standard_deviation, 0.12}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
301 },
302 {
303 /** event_id */ 22,
304 /** mutually_exclusive_events */ {},
305 /** text */ "New Security Regulations Increase Operational Costs for Airlines",
306 /** duration */ 6,
307 /** percentage_permille */ 10,
308 /** type_of_event */ category,
309 /** category */ 2,
310 /** modifiers */
311 {{standard_deviation, 0.08}, {mean, -1}, {lower_limit, -10}, {upper_limit, 0}},
312 },
313 // event_id 23 to 27 affect category "RenewEnergy"
314 {
315 /** event_id */ 23,
316 /** mutually_exclusive_events */ {26},
317 /** text */
318 "Government Implements New Incentives to Promote Renewable Energy Adoption",
319 /** duration */ 6,
320 /** percentage_permille */ 12,
321 /** type_of_event */ category,
322 /** category */ 3,
323 /** modifiers */
324 {{standard_deviation, 0.10}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
325 },
326 {
327 /** event_id */ 24,
328 /** mutually_exclusive_events */ {},
329 /** text */
330 "Breakthrough in Solar Panel Technology Increases Efficiency by 20%",
331 /** duration */ 5,
332 /** percentage_permille */ 10,
333 /** type_of_event */ category,
334 /** category */ 3,
335 /** modifiers */
336 {{standard_deviation, 0.12}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
337 },
338 {
339 /** event_id */ 25,
340 /** mutually_exclusive_events */ {},
341 /** text */ "Investment in Wind Farms Surges as Costs of Wind Energy Decrease",
342 /** duration */ 7,
343 /** percentage_permille */ 16,
344 /** type_of_event */ category,
345 /** category */ 3,
346 /** modifiers */
347 {{standard_deviation, 0.10}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
348 },
349 {
350 /** event_id */ 26,
351 /** mutually_exclusive_events */ {23},
352 /** text */
353 "Government Cuts Subsidies for Renewable Energy Projects, Slowing Down "
354 "Progress",
355 /** duration */ 6,
356 /** percentage_permille */ 10,
357 /** type_of_event */ category,
358 /** category */ 3,
359 /** modifiers */
360 {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -20}, {upper_limit, 0}},
361 },
362 {
363 /** event_id */ 27,
364 /** mutually_exclusive_events */ {},
365 /** text */ "Persistent Cloud Cover Reduces Solar Power Generation",
366 /** duration */ 5,
367 /** percentage_permille */ 8,
368 /** type_of_event */ category,
369 /** category */ 3,
370 /** modifiers */
371 {{standard_deviation, 0.10}, {mean, -2}, {lower_limit, -15}, {upper_limit, 0}},
372 },
373 // event_id 28 to 31 affect category "Auto"
374 {
375 /** event_id */ 28,
376 /** mutually_exclusive_events */ {},
377 /** text */
378 "Breakthrough in Electric Vehicle Battery Technology Extends Range and Reduces "
379 "Charging Time",
380 /** duration */ 6,
381 /** percentage_permille */ 12,
382 /** type_of_event */ category,
383 /** category */ 4,
384 /** modifiers */
385 {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
386 },
387 {
388 /** event_id */ 29,
389 /** mutually_exclusive_events */ {},
390 /** text */
391 "Sudden Increase in Oil Prices Impacts Affordability and Demand for "
392 "Conventional Vehicles",
393 /** duration */ 5,
394 /** percentage_permille */ 12,
395 /** type_of_event */ category,
396 /** category */ 4,
397 /** modifiers */
398 {{standard_deviation, 0.08}, {mean, -5}, {lower_limit, -20}, {upper_limit, 0}},
399 },
400 {
401 /** event_id */ 30,
402 /** mutually_exclusive_events */ {31},
403 /** text */
404 "Introduction of Advanced Driver Assistance Systems Enhances Vehicle Safety",
405 /** duration */ 5,
406 /** percentage_permille */ 8,
407 /** type_of_event */ category,
408 /** category */ 4,
409 /** modifiers */
410 {{standard_deviation, 0.06}, {mean, 5}, {lower_limit, 0}, {upper_limit, 15}},
411 },
412 {
413 /** event_id */ 31,
414 /** mutually_exclusive_events */ {30},
415 /** text */ "Frequent Accidents raise safety Concerns",
416 /** duration */ 6,
417 /** percentage_permille */ 10,
418 /** type_of_event */ category,
419 /** category */ 4,
420 /** modifiers */
421 {{standard_deviation, 0.10}, {mean, -5}, {lower_limit, -30}, {upper_limit, 0}},
422 },
423 // event_id 32 to 34 affect category "Banks"
424 {
425 /** event_id */ 32,
426 /** mutually_exclusive_events */ {},
427 /** text */
428 "Economic Recession Triggers Increase in Non-Performing Loans, Putting Banks "
429 "at Risk",
430 /** duration */ 7,
431 /** percentage_permille */ 10,
432 /** type_of_event */ category,
433 /** category */ 5,
434 /** modifiers */
435 {{standard_deviation, 0.10}, {mean, -4}, {lower_limit, -25}, {upper_limit, 0}},
436 },
437 {
438 /** event_id */ 33,
439 /** mutually_exclusive_events */ {},
440 /** text */
441 "Government Introduces Stimulus Package to Boost Lending and Economic Growth",
442 /** duration */ 6,
443 /** percentage_permille */ 15,
444 /** type_of_event */ category,
445 /** category */ 5,
446 /** modifiers */
447 {{standard_deviation, 0.08}, {mean, 5}, {lower_limit, 0}, {upper_limit, 25}},
448 },
449 {
450 /** event_id */ 34,
451 /** mutually_exclusive_events */ {},
452 /** text */
453 "Government Implements Excessive Money Printing, Leading to Inflation and "
454 "Currency Devaluation",
455 /** duration */ 8,
456 /** percentage_permille */ 16,
457 /** type_of_event */ category,
458 /** category */ 5,
459 /** modifiers */
460 {{standard_deviation, 0.12}, {mean, 0}, {lower_limit, -40}, {upper_limit, 0}},
461 },
462 // event_id 35 to 37 affect category "Biotech"
463 {
464 /** event_id */ 35,
465 /** mutually_exclusive_events */ {},
466 /** text */
467 "Breakthrough in Gene Therapy Offers Potential Cure for Genetic Diseases",
468 /** duration */ 7,
469 /** percentage_permille */ 14,
470 /** type_of_event */ category,
471 /** category */ 6,
472 /** modifiers */
473 {{standard_deviation, 0.10}, {mean, 4}, {lower_limit, 0}, {upper_limit, 25}},
474 },
475 {
476 /** event_id */ 36,
477 /** mutually_exclusive_events */ {},
478 /** text */
479 "Clinical Trial Failure Delays Development of Promising Drug Candidate",
480 /** duration */ 5,
481 /** percentage_permille */ 10,
482 /** type_of_event */ category,
483 /** category */ 6,
484 /** modifiers */
485 {{standard_deviation, 0.08}, {mean, -3}, {lower_limit, -20}, {upper_limit, 0}},
486 },
487 {
488 /** event_id */ 37,
489 /** mutually_exclusive_events */ {},
490 /** text */
491 "Successful FDA Approval Expedites Commercialization of Innovative Biotech "
492 "Products",
493 /** duration */ 6,
494 /** percentage_permille */ 12,
495 /** type_of_event */ category,
496 /** category */ 6,
497 /** modifiers */
498 {{standard_deviation, 0.09}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
499 },
500 // event_id 38 to 40 affect category "Broadcast"
501 {
502 /** event_id */ 38,
503 /** mutually_exclusive_events */ {},
504 /** text */
505 "New Streaming Service Launches with Extensive Content Library and Innovative "
506 "Features",
507 /** duration */ 6,
508 /** percentage_permille */ 10,
509 /** type_of_event */ category,
510 /** category */ 7,
511 /** modifiers */
512 {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
513 },
514 {
515 /** event_id */ 39,
516 /** mutually_exclusive_events */ {},
517 /** text */
518 "Broadcast Network Faces Significant Revenue Losses Due to Declining "
519 "Viewership",
520 /** duration */ 7,
521 /** percentage_permille */ 12,
522 /** type_of_event */ category,
523 /** category */ 7,
524 /** modifiers */
525 {{standard_deviation, 0.10}, {mean, -4}, {lower_limit, -25}, {upper_limit, 0}},
526 },
527 {
528 /** event_id */ 40,
529 /** mutually_exclusive_events */ {},
530 /** text */
531 "Broadcast Network Strikes Exclusive Deal for Live Coverage of Major Sporting "
532 "Event",
533 /** duration */ 5,
534 /** percentage_permille */ 8,
535 /** type_of_event */ category,
536 /** category */ 7,
537 /** modifiers */
538 {{standard_deviation, 0.07}, {mean, 2}, {lower_limit, 0}, {upper_limit, 15}},
539 },
540 // event_id 41 to 46 affect category "Casinos&Gaming"
541 {
542 /** event_id */ 41,
543 /** mutually_exclusive_events */ {},
544 /** text */ "Stringent Gambling Regulations Restrict Casino Operations",
545 /** duration */ 6,
546 /** percentage_permille */ 12,
547 /** type_of_event */ category,
548 /** category */ 8,
549 /** modifiers */
550 {{standard_deviation, 0.10}, {mean, -4}, {lower_limit, -25}, {upper_limit, 0}},
551 },
552 {
553 /** event_id */ 42,
554 /** mutually_exclusive_events */ {},
555 /** text */
556 "Innovative Strategies Help Casinos Navigate Stringent Regulations and "
557 "Minimize Revenue Losses",
558 /** duration */ 7,
559 /** percentage_permille */ 10,
560 /** type_of_event */ category,
561 /** category */ 8,
562 /** modifiers */
563 {{standard_deviation, 0.08}, {mean, 3}, {lower_limit, 0}, {upper_limit, 20}},
564 },
565 {
566 /** event_id */ 43,
567 /** mutually_exclusive_events */ {45},
568 /** text */
569 "Online Gaming Goes Viral, Attracting Millions of Players Worldwide",
570 /** duration */ 5,
571 /** percentage_permille */ 20,
572 /** type_of_event */ category,
573 /** category */ 8,
574 /** modifiers */
575 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 30}},
576 },
577 {
578 /** event_id */ 44,
579 /** mutually_exclusive_events */ {},
580 /** text */ "New Esports Tournament Breaks Viewership Records",
581 /** duration */ 4,
582 /** percentage_permille */ 15,
583 /** type_of_event */ category,
584 /** category */ 8,
585 /** modifiers */
586 {{standard_deviation, 0.1}, {mean, 7}, {lower_limit, 0}, {upper_limit, 25}},
587 },
588 {
589 /** event_id */ 45,
590 /** mutually_exclusive_events */ {43},
591 /** text */
592 "Major Data Breach Affects Gaming Platforms, Raising Concerns About Player "
593 "Privacy",
594 /** duration */ 6,
595 /** percentage_permille */ 10,
596 /** type_of_event */ category,
597 /** category */ 8,
598 /** modifiers */
599 {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
600 },
601 {
602 /** event_id */ 46,
603 /** mutually_exclusive_events */ {},
604 /** text */
605 "Introduction of Virtual Reality Gaming Enhances Player Immersion and "
606 "Experience",
607 /** duration */ 5,
608 /** percentage_permille */ 12,
609 /** type_of_event */ category,
610 /** category */ 8,
611 /** modifiers */
612 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
613 },
614 // event_id 47 to 51 affect category "E-Commerce"
615 {
616 /** event_id */ 47,
617 /** mutually_exclusive_events */ {},
618 /** text */
619 "E-commerce Sales Reach All-Time High, Exceeding Market Expectations",
620 /** duration */ 6,
621 /** percentage_permille */ 12,
622 /** type_of_event */ category,
623 /** category */ 9,
624 /** modifiers */
625 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
626 },
627 {
628 /** event_id */ 48,
629 /** mutually_exclusive_events */ {},
630 /** text */
631 "Supply Chain Disruptions Cause Delivery Delays and Inventory Shortages in "
632 "E-commerce",
633 /** duration */ 7,
634 /** percentage_permille */ 10,
635 /** type_of_event */ category,
636 /** category */ 9,
637 /** modifiers */
638 {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
639 },
640 {
641 /** event_id */ 49,
642 /** mutually_exclusive_events */ {},
643 /** text */
644 "Introduction of Innovative Payment Solutions Boosts E-commerce Conversion "
645 "Rates",
646 /** duration */ 5,
647 /** percentage_permille */ 8,
648 /** type_of_event */ category,
649 /** category */ 9,
650 /** modifiers */
651 {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
652 },
653 {
654 /** event_id */ 50,
655 /** mutually_exclusive_events */ {},
656 /** text */
657 "Cybersecurity Breach Raises Concerns About Online Shopping Privacy and Data "
658 "Protection",
659 /** duration */ 6,
660 /** percentage_permille */ 15,
661 /** type_of_event */ category,
662 /** category */ 9,
663 /** modifiers */
664 {{standard_deviation, 0.1}, {mean, -7}, {lower_limit, -25}, {upper_limit, 0}},
665 },
666 {
667 /** event_id */ 51,
668 /** mutually_exclusive_events */ {},
669 /** text */
670 "Advancements in Artificial Intelligence Revolutionize Personalized Shopping "
671 "Experiences",
672 /** duration */ 5,
673 /** percentage_permille */ 10,
674 /** type_of_event */ category,
675 /** category */ 9,
676 /** modifiers */
677 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
678 },
679 // event_id 52 to 55 affect category "FinServices"
680 {
681 /** event_id */ 52,
682 /** mutually_exclusive_events */ {53},
683 /** text */
684 "Fintech Startups Disrupt Traditional Banking, Providing Innovative Financial "
685 "Services",
686 /** duration */ 6,
687 /** percentage_permille */ 15,
688 /** type_of_event */ category,
689 /** category */ 10,
690 /** modifiers */
691 {{standard_deviation, 0.1}, {mean, 7}, {lower_limit, 0}, {upper_limit, 25}},
692 },
693 {
694 /** event_id */ 53,
695 /** mutually_exclusive_events */ {52, 54, 55},
696 /** text */ "Stock Market Crash Leads to Financial Turmoil and Investor Losses",
697 /** duration */ 7,
698 /** percentage_permille */ 12,
699 /** type_of_event */ category,
700 /** category */ 10,
701 /** modifiers */
702 {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
703 },
704 {
705 /** event_id */ 54,
706 /** mutually_exclusive_events */ {53},
707 /** text */
708 "Introduction of Blockchain Technology Enhances Security and Efficiency in "
709 "Financial Transactions",
710 /** duration */ 5,
711 /** percentage_permille */ 10,
712 /** type_of_event */ category,
713 /** category */ 10,
714 /** modifiers */
715 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
716 },
717 {
718 /** event_id */ 55,
719 /** mutually_exclusive_events */ {53},
720 /** text */
721 "Digital Wallets Gain Popularity, Simplifying Payment Processes and Increasing "
722 "Financial Inclusion",
723 /** duration */ 5,
724 /** percentage_permille */ 8,
725 /** type_of_event */ category,
726 /** category */ 10,
727 /** modifiers */
728 {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
729 },
730 // event_id 56 to 61 affect category "Food&Beverage"
731 {
732 /** event_id */ 56,
733 /** mutually_exclusive_events */ {},
734 /** text */
735 "Plant-Based Food Trend Continues to Grow, Offering Healthier and Sustainable "
736 "Options",
737 /** duration */ 6,
738 /** percentage_permille */ 10,
739 /** type_of_event */ category,
740 /** category */ 11,
741 /** modifiers */
742 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
743 },
744 {
745 /** event_id */ 57,
746 /** mutually_exclusive_events */ {},
747 /** text */
748 "Food Safety Scandal Raises Concerns About Contaminated Products and Consumer "
749 "Health",
750 /** duration */ 7,
751 /** percentage_permille */ 12,
752 /** type_of_event */ category,
753 /** category */ 11,
754 /** modifiers */
755 {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
756 },
757 {
758 /** event_id */ 58,
759 /** mutually_exclusive_events */ {},
760 /** text */
761 "Introduction of Innovative Cooking Techniques Enhances Culinary Experiences",
762 /** duration */ 5,
763 /** percentage_permille */ 8,
764 /** type_of_event */ category,
765 /** category */ 11,
766 /** modifiers */
767 {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
768 },
769 {
770 /** event_id */ 59,
771 /** mutually_exclusive_events */ {},
772 /** text */
773 "Global Food Shortage Crisis Impacts Prices and Availability of Essential "
774 "Commodities",
775 /** duration */ 6,
776 /** percentage_permille */ 15,
777 /** type_of_event */ category,
778 /** category */ 11,
779 /** modifiers */
780 {{standard_deviation, 0.1}, {mean, -7}, {lower_limit, -25}, {upper_limit, 0}},
781 },
782 {
783 /** event_id */ 60,
784 /** mutually_exclusive_events */ {},
785 /** text */
786 "Rise of Food Delivery Services Provides Convenient and Wide-ranging Dining "
787 "Options",
788 /** duration */ 5,
789 /** percentage_permille */ 8,
790 /** type_of_event */ category,
791 /** category */ 11,
792 /** modifiers */
793 {{standard_deviation, 0.1}, {mean, 4}, {lower_limit, 0}, {upper_limit, 15}},
794 },
795 {
796 /** event_id */ 61,
797 /** mutually_exclusive_events */ {},
798 /** text */
799 "Growing Demand for Organic and Locally Sourced Food Drives Sustainable "
800 "Farming Practices",
801 /** duration */ 6,
802 /** percentage_permille */ 10,
803 /** type_of_event */ category,
804 /** category */ 11,
805 /** modifiers */
806 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
807 },
808 // event_id 62 to 66 affect category "Healthcare"
809 {
810 /** event_id */ 62,
811 /** mutually_exclusive_events */ {},
812 /** text */
813 "Advancements in Telemedicine Improve Access to Medical Care for Remote Areas",
814 /** duration */ 6,
815 /** percentage_permille */ 12,
816 /** type_of_event */ category,
817 /** category */ 12,
818 /** modifiers */
819 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
820 },
821 {
822 /** event_id */ 63,
823 /** mutually_exclusive_events */ {},
824 /** text */
825 "Outbreak of Global Pandemic Leads to Overwhelmed Healthcare Systems and High "
826 "Mortality Rates",
827 /** duration */ 8,
828 /** percentage_permille */ 15,
829 /** type_of_event */ category,
830 /** category */ 12,
831 /** modifiers */
832 {{standard_deviation, 0.12}, {mean, 7}, {lower_limit, 0}, {upper_limit, 25}},
833 },
834 {
835 /** event_id */ 64,
836 /** mutually_exclusive_events */ {},
837 /** text */
838 "Development of Personalized Medicine Leads to More Effective Treatment and "
839 "Prevention Strategies",
840 /** duration */ 7,
841 /** percentage_permille */ 10,
842 /** type_of_event */ category,
843 /** category */ 12,
844 /** modifiers */
845 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
846 },
847 {
848 /** event_id */ 65,
849 /** mutually_exclusive_events */ {},
850 /** text */
851 "Shortage of Healthcare Professionals Causes Strain on Medical Services and "
852 "Longer Wait Times",
853 /** duration */ 6,
854 /** percentage_permille */ 12,
855 /** type_of_event */ category,
856 /** category */ 12,
857 /** modifiers */
858 {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
859 },
860 {
861 /** event_id */ 66,
862 /** mutually_exclusive_events */ {},
863 /** text */
864 "Advancements in Gene Editing Technology Open New Avenues for Precision "
865 "Medicine",
866 /** duration */ 7,
867 /** percentage_permille */ 12,
868 /** type_of_event */ category,
869 /** category */ 12,
870 /** modifiers */
871 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
872 },
873 // event_id 67 to 74 affect category "Tech"
874 {
875 /** event_id */ 67,
876 /** mutually_exclusive_events */ {},
877 /** text */
878 "Breakthrough in Artificial Intelligence Leads to Significant Advancements in "
879 "Automation and Machine Learning",
880 /** duration */ 6,
881 /** percentage_permille */ 12,
882 /** type_of_event */ category,
883 /** category */ 13,
884 /** modifiers */
885 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
886 },
887 {
888 /** event_id */ 68,
889 /** mutually_exclusive_events */ {},
890 /** text */
891 "Cybersecurity Breach Exposes Sensitive Data and Raises Concerns Over Digital "
892 "Privacy",
893 /** duration */ 7,
894 /** percentage_permille */ 10,
895 /** type_of_event */ category,
896 /** category */ 13,
897 /** modifiers */
898 {{standard_deviation, 0.3}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
899 },
900 {
901 /** event_id */ 69,
902 /** mutually_exclusive_events */ {},
903 /** text */
904 "Emergence of 5G Technology Revolutionizes Connectivity and Enables Faster "
905 "Data Transfer",
906 /** duration */ 5,
907 /** percentage_permille */ 10,
908 /** type_of_event */ category,
909 /** category */ 13,
910 /** modifiers */
911 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 15}},
912 },
913 {
914 /** event_id */ 70,
915 /** mutually_exclusive_events */ {},
916 /** text */
917 "Failure of Major Tech Infrastructure Disrupts Services and Causes Widespread "
918 "Outages",
919 /** duration */ 6,
920 /** percentage_permille */ 12,
921 /** type_of_event */ category,
922 /** category */ 13,
923 /** modifiers */
924 {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
925 },
926 {
927 /** event_id */ 71,
928 /** mutually_exclusive_events */ {},
929 /** text */
930 "Advancements in Quantum Computing Unlock New Possibilities for Solving "
931 "Complex Problems",
932 /** duration */ 7,
933 /** percentage_permille */ 12,
934 /** type_of_event */ category,
935 /** category */ 13,
936 /** modifiers */
937 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
938 },
939 {
940 /** event_id */ 72,
941 /** mutually_exclusive_events */ {},
942 /** text */
943 "Rapid Advancements in Augmented Reality (AR) and Virtual Reality (VR) Enhance "
944 "User Experiences",
945 /** duration */ 6,
946 /** percentage_permille */ 10,
947 /** type_of_event */ category,
948 /** category */ 13,
949 /** modifiers */
950 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
951 },
952 {
953 /** event_id */ 73,
954 /** mutually_exclusive_events */ {},
955 /** text */
956 "Advancements in Robotics and Automation Transform Manufacturing and Increase "
957 "Efficiency",
958 /** duration */ 6,
959 /** percentage_permille */ 12,
960 /** type_of_event */ category,
961 /** category */ 13,
962 /** modifiers */
963 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
964 },
965 {
966 /** event_id */ 74,
967 /** mutually_exclusive_events */ {},
968 /** text */
969 "Emergence of Artificial General Intelligence (AGI) Raises Ethical and "
970 "Societal Concerns",
971 /** duration */ 7,
972 /** percentage_permille */ 10,
973 /** type_of_event */ category,
974 /** category */ 13,
975 /** modifiers */
976 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
977 },
978 // event_id 75 to 79 affect category "RealEstate"
979 {
980 /** event_id */ 75,
981 /** mutually_exclusive_events */ {76},
982 /** text */
983 "Strong Demand and Low Mortgage Rates Drive Real Estate Market Growth",
984 /** duration */ 6,
985 /** percentage_permille */ 10,
986 /** type_of_event */ category,
987 /** category */ 14,
988 /** modifiers */
989 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
990 },
991 {
992 /** event_id */ 76,
993 /** mutually_exclusive_events */ {75},
994 /** text */
995 "Economic Downturn Leads to Decline in Real Estate Prices and Sales",
996 /** duration */ 7,
997 /** percentage_permille */ 10,
998 /** type_of_event */ category,
999 /** category */ 14,
1000 /** modifiers */
1001 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1002 },
1003 {
1004 /** event_id */ 77,
1005 /** mutually_exclusive_events */ {},
1006 /** text */
1007 "Rapid Urbanization and Infrastructure Development Boost Real Estate "
1008 "Investments",
1009 /** duration */ 6,
1010 /** percentage_permille */ 12,
1011 /** type_of_event */ category,
1012 /** category */ 14,
1013 /** modifiers */
1014 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1015 },
1016 {
1017 /** event_id */ 78,
1018 /** mutually_exclusive_events */ {},
1019 /** text */
1020 "Natural Disasters Cause Property Damage and Impact Real Estate Market",
1021 /** duration */ 7,
1022 /** percentage_permille */ 10,
1023 /** type_of_event */ category,
1024 /** category */ 14,
1025 /** modifiers */
1026 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1027 },
1028 {
1029 /** event_id */ 79,
1030 /** mutually_exclusive_events */ {},
1031 /** text */
1032 "Investigation Reveals Widespread Cases of Substandard Construction Projects",
1033 /** duration */ 5,
1034 /** percentage_permille */ 10,
1035 /** type_of_event */ category,
1036 /** category */ 14,
1037 /** modifiers */
1038 {{standard_deviation, 0.12}, {mean, -4}, {lower_limit, -20}, {upper_limit, 0}},
1039 },
1040 // event_id 80 to 85 affect category "RealEstate"
1041 {
1042 /** event_id */ 80,
1043 /** mutually_exclusive_events */ {},
1044 /** text */
1045 "Shift in Consumer Behavior Leads to Decline in Brick-and-Mortar Retail Stores",
1046 /** duration */ 7,
1047 /** percentage_permille */ 10,
1048 /** type_of_event */ category,
1049 /** category */ 15,
1050 /** modifiers */
1051 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1052 },
1053 {
1054 /** event_id */ 81,
1055 /** mutually_exclusive_events */ {},
1056 /** text */
1057 "Adoption of Technology Enhances Customer Experience in Physical Retail Stores",
1058 /** duration */ 6,
1059 /** percentage_permille */ 12,
1060 /** type_of_event */ category,
1061 /** category */ 15,
1062 /** modifiers */
1063 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1064 },
1065 {
1066 /** event_id */ 82,
1067 /** mutually_exclusive_events */ {},
1068 /** text */
1069 "Integration of Augmented Reality Enhances In-Store Shopping Experience",
1070 /** duration */ 6,
1071 /** percentage_permille */ 10,
1072 /** type_of_event */ category,
1073 /** category */ 15,
1074 /** modifiers */
1075 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
1076 },
1077 {
1078 /** event_id */ 83,
1079 /** mutually_exclusive_events */ {},
1080 /** text */
1081 "Increase in Online Counterfeit Products Impacts Consumer Trust in E-commerce",
1082 /** duration */ 7,
1083 /** percentage_permille */ 10,
1084 /** type_of_event */ category,
1085 /** category */ 15,
1086 /** modifiers */
1087 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1088 },
1089 {
1090 /** event_id */ 84,
1091 /** mutually_exclusive_events */ {},
1092 /** text */
1093 "Retailers Embrace Sustainable Practices, Driving Eco-friendly Consumer "
1094 "Choices",
1095 /** duration */ 6,
1096 /** percentage_permille */ 12,
1097 /** type_of_event */ category,
1098 /** category */ 15,
1099 /** modifiers */
1100 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1101 },
1102 {
1103 /** event_id */ 85,
1104 /** mutually_exclusive_events */ {},
1105 /** text */ "Supply Chain Disruptions Impact Retail Inventory and Availability",
1106 /** duration */ 7,
1107 /** percentage_permille */ 10,
1108 /** type_of_event */ category,
1109 /** category */ 15,
1110 /** modifiers */
1111 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1112 },
1113 // event_id 86 to __ affect category "Telecom"
1114 {
1115 /** event_id */ 86,
1116 /** mutually_exclusive_events */ {},
1117 /** text */
1118 "Deployment of 5G Networks Enables Faster and More Reliable Connectivity",
1119 /** duration */ 6,
1120 /** percentage_permille */ 10,
1121 /** type_of_event */ category,
1122 /** category */ 16,
1123 /** modifiers */
1124 {{standard_deviation, 0.1}, {mean, 5}, {lower_limit, 0}, {upper_limit, 20}},
1125 },
1126 {
1127 /** event_id */ 87,
1128 /** mutually_exclusive_events */ {},
1129 /** text */
1130 "Cybersecurity Breach in Telecom Networks Raises Concerns over Data Privacy",
1131 /** duration */ 7,
1132 /** percentage_permille */ 10,
1133 /** type_of_event */ category,
1134 /** category */ 16,
1135 /** modifiers */
1136 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1137 },
1138 {
1139 /** event_id */ 88,
1140 /** mutually_exclusive_events */ {},
1141 /** text */
1142 "Advancements in Voice Recognition Technology Enhance Telecommunication "
1143 "Services",
1144 /** duration */ 6,
1145 /** percentage_permille */ 12,
1146 /** type_of_event */ category,
1147 /** category */ 16,
1148 /** modifiers */
1149 {{standard_deviation, 0.1}, {mean, 6}, {lower_limit, 0}, {upper_limit, 20}},
1150 },
1151 {
1152 /** event_id */ 89,
1153 /** mutually_exclusive_events */ {},
1154 /** text */
1155 "Network Outage Disrupts Telecommunication Services in Several Regions",
1156 /** duration */ 7,
1157 /** percentage_permille */ 10,
1158 /** type_of_event */ category,
1159 /** category */ 16,
1160 /** modifiers */
1161 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1162 },
1163 {
1164 /** event_id */ 90,
1165 /** mutually_exclusive_events */ {},
1166 /** text */
1167 "Telecom Service Outage Caused by Natural Disaster Disrupts Communication",
1168 /** duration */ 7,
1169 /** percentage_permille */ 10,
1170 /** type_of_event */ category,
1171 /** category */ 16,
1172 /** modifiers */
1173 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1174 },
1175 {
1176 /** event_id */ 91,
1177 /** mutually_exclusive_events */ {},
1178 /** text */
1179 "Telecom Regulatory Changes Affect Pricing and Service Plans for Consumers",
1180 /** duration */ 7,
1181 /** percentage_permille */ 10,
1182 /** type_of_event */ category,
1183 /** category */ 16,
1184 /** modifiers */
1185 {{standard_deviation, 0.1}, {mean, -5}, {lower_limit, -15}, {upper_limit, 0}},
1186 },
1187 // event_id 92 to 98 affect pick_random_stock
1188 {
1189 /** event_id */ 92,
1190 /** mutually_exclusive_events */ {},
1191 /** text */ "Leadership Change: CEO Resigns, New CEO Appointed",
1192 /** duration */ 3,
1193 /** percentage_permille */ 10,
1194 /** type_of_event */ pick_random_stock,
1195 /** category */ 0,
1196 /** modifiers */
1197 {{standard_deviation, 0.2}, {mean, 0}, {lower_limit, -15}, {upper_limit, 15}},
1198 },
1199 {
1200 /** event_id */ 93,
1201 /** mutually_exclusive_events */ {},
1202 /** text */
1203 "Labor Strike: Employees Go on Strike Demanding Better Working Conditions",
1204 /** duration */ 3,
1205 /** percentage_permille */ 12,
1206 /** type_of_event */ pick_random_stock,
1207 /** category */ 0,
1208 /** modifiers */
1209 {{standard_deviation, 0.1}, {mean, -6}, {lower_limit, -20}, {upper_limit, 0}},
1210 },
1211 {
1212 /** event_id */ 94,
1213 /** mutually_exclusive_events */ {97},
1214 /** text */ "Acquires a Competitor, Expands Market Presence",
1215 /** duration */ 4,
1216 /** percentage_permille */ 10,
1217 /** type_of_event */ pick_random_stock,
1218 /** category */ 0,
1219 /** modifiers */
1220 {{standard_deviation, 0.2}, {mean, 5}, {lower_limit, 0}, {upper_limit, 15}},
1221 },
1222 {
1223 /** event_id */ 95,
1224 /** mutually_exclusive_events */ {98},
1225 /** text */ "Market Slump Leads to Business Contraction",
1226 /** duration */ 4,
1227 /** percentage_permille */ 10,
1228 /** type_of_event */ pick_random_stock,
1229 /** category */ 0,
1230 /** modifiers */
1231 {{standard_deviation, 0.3}, {mean, -7}, {lower_limit, -20}, {upper_limit, 0}},
1232 },
1233 {
1234 /** event_id */ 96,
1235 /** mutually_exclusive_events */ {},
1236 /** text */ "Regulatory Non-Compliance: Fails to Meet Environmental Standards",
1237 /** duration */ 5,
1238 /** percentage_permille */ 10,
1239 /** type_of_event */ pick_random_stock,
1240 /** category */ 0,
1241 /** modifiers */
1242 {{standard_deviation, 0.1}, {mean, -2}, {lower_limit, -10}, {upper_limit, 0}},
1243 },
1244 {
1245 /** event_id */ 97,
1246 /** mutually_exclusive_events */ {94, 98},
1247 /** text */ "Faces Bankruptcy, Forced to Cease Operations",
1248 /** duration */ 6,
1249 /** percentage_permille */ 10,
1250 /** type_of_event */ pick_random_stock,
1251 /** category */ 0,
1252 /** modifiers */
1253 {{standard_deviation, 0.5}, {mean, -9}, {lower_limit, -30}, {upper_limit, 0}},
1254 },
1255 {
1256 /** event_id */ 98,
1257 /** mutually_exclusive_events */ {95, 97},
1258 /** text */ "Opens New Branches in Multiple Locations",
1259 /** duration */ 6,
1260 /** percentage_permille */ 10,
1261 /** type_of_event */ pick_random_stock,
1262 /** category */ 0,
1263 /** modifiers */
1264 {{standard_deviation, 0.5}, {mean, 7}, {lower_limit, 0}, {upper_limit, 20}},
1265 },
1266};

Referenced by assertion_check_mutual_exclusivity(), new_events_next_round(), and pick_events().

◆ defaultLowerLimit

const float defaultLowerLimit = -5

Default lower limit.

Definition at line 64 of file events.h.

Referenced by Stock::Stock(), and getProcessedModifiers().

◆ defaultMean

float defaultMean = 0.5f / meanMultiplier
constexpr

Default mean.

Definition at line 70 of file events.h.

Referenced by Stock::Stock().

◆ defaultUpperLimit

const float defaultUpperLimit = 5

Default upper limit.

Definition at line 67 of file events.h.

Referenced by Stock::Stock(), and getProcessedModifiers().

◆ durationDecreaseMultiplier

const unsigned int durationDecreaseMultiplier = 2

Rate of decrease of duration.

Definition at line 73 of file events.h.

Referenced by Stock::next_round().

◆ lowerLimitMultiplier

const float lowerLimitMultiplier = 0.2

Lower limit multiplier.

Definition at line 58 of file events.h.

Referenced by getProcessedModifiers().

◆ meanMultiplier

float meanMultiplier = 0.6f
constexpr

Multiplier for mean.

Definition at line 52 of file events.h.

Referenced by getProcessedModifiers().

◆ sdMultiplier

const float sdMultiplier = 7.5f

Multiplier for standard deviation.

Definition at line 55 of file events.h.

Referenced by getProcessedModifiers().

◆ upperLimitMultiplier

const float upperLimitMultiplier = 0.2

Upper limit multiplier.

Definition at line 61 of file events.h.

Referenced by getProcessedModifiers().