mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-09 17:23:53 +01:00
Updated documentation for new Stock Market changes. More rebalancing for recent stock market changes
This commit is contained in:
parent
35f8a5115a
commit
dc5f4e6694
@ -51,31 +51,6 @@ bid price. Note that this is reversed for a short position. Purchasing a stock
|
||||
in the short position will occur at the stock's bid price, and selling a stock
|
||||
in the short position will occur at the stock's ask price.
|
||||
|
||||
.. _gameplay_stock_market_spread_price_movement:
|
||||
|
||||
Transactions Influencing Stock Price
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Buying or selling a large number of shares of a stock will influence that stock's price.
|
||||
|
||||
Buying a stock in the long position will cause that stock's price to
|
||||
increase. Selling a stock in the long position will cause the stock's price to decrease.
|
||||
The reverse occurs for the short position. The effect of this depends on how many shares
|
||||
are being transacted. More shares will have a bigger effect on the stock price. If
|
||||
only a small number of shares are being transacted, the stock price may not be affected.
|
||||
|
||||
Note that this "influencing" of the stock price **can happen in the middle of a transaction**.
|
||||
For example, assume you are selling 1m shares of a stock. That stock's bid price
|
||||
is currently $100. However, selling 100k shares of the stock causes its price to drop
|
||||
by 1%. This means that for your transaction of 1m shares, the first 100k shares will be
|
||||
sold at $100. Then the next 100k shares will be sold at $99. Then the next 100k shares will
|
||||
be sold at $98.01, and so on.
|
||||
|
||||
This is an important concept to keep in mind if you are trying to purchase/sell a
|
||||
large number of shares, as **it can negatively affect your profits**.
|
||||
|
||||
.. note:: On the Stock Market UI, the displayed profit of a position does not take
|
||||
this "influencing" into account.
|
||||
|
||||
Transactions Influencing Stock Forecast
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
In addition to influencing stock price, buying or selling a large number of shares
|
||||
@ -144,6 +119,48 @@ A Stop Order to sell will execute if the stock's price >= order's price.
|
||||
stop executing, and will continue only when the stock's price drops back to
|
||||
$5 or below.
|
||||
|
||||
.. _gameplay_stock_market_player_actions_influencing_stock:
|
||||
|
||||
Player Actions Influencing Stocks
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
It is possible for your actions elsewhere in the game to influence the stock market.
|
||||
|
||||
Hacking
|
||||
If a server has a corresponding stock (e.g. *foodnstuff* server -> FoodNStuff
|
||||
stock), then hacking that server can
|
||||
cause the corresponding stock's forecast to trend downwards in value
|
||||
over time.
|
||||
|
||||
This effect only occurs if you set the *stock* option to
|
||||
true when calling the :js:func:`hack` function. The chance that hacking a
|
||||
server will cause this effect is based on what percentage of the
|
||||
server's total money you steal.
|
||||
|
||||
A single hack will have a minor
|
||||
effect, but continuously hacking a server for lots of money over time
|
||||
will have a noticeable effect in making the stock's forecast trend downwards.
|
||||
|
||||
Growing
|
||||
If a server has a corresponding stock (e.g. *foodnstuff* server -> FoodNStuff
|
||||
stock), then growing that server's money can cause the corresponding stock's
|
||||
forecast to trend upwards in value over time.
|
||||
|
||||
This effect only occurs if you set the *stock* option to true when calling the
|
||||
:js:func:`grow` function. The chance that growing a server will cause this
|
||||
effect is based on what percentage of the server's total money to add to it.
|
||||
|
||||
A single grow operation will have a minor effect, but continuously growing
|
||||
a server for lots of money over time will have a noticeable effect in making
|
||||
the stock's forecast trend upwards.
|
||||
|
||||
Working for a Company
|
||||
If a company has a corresponding stock, then working for that company will
|
||||
cause the corresponding stock's forecast to (slowly) trend upwards in value
|
||||
over time.
|
||||
|
||||
The potency of this effect is based on how "effective" you are when you work
|
||||
(i.e. its based on your stats).
|
||||
|
||||
Automating the Stock Market
|
||||
---------------------------
|
||||
You can write scripts to perform automatic and algorithmic trading on the Stock Market.
|
||||
@ -159,7 +176,8 @@ are hidden, although some of them can be made visible by purchasing the
|
||||
Four Sigma (4S) Market Data upgrade. Some examples of these properties are:
|
||||
|
||||
* Volatility
|
||||
* Likelihood of increasing or decreasing
|
||||
* Likelihood of increasing or decreasing (i.e. the stock's forecast)
|
||||
* Likelihood of forecast increasing or decreasing (i.e. the stock's second-order forecast)
|
||||
* How easily a stock's price/forecast is influenced by transactions
|
||||
* Spread percentage
|
||||
* Maximum price (not a real maximum, more of a "soft cap")
|
||||
|
@ -8,6 +8,8 @@ grow() Netscript Function
|
||||
|
||||
* threads (*number*) - Number of threads to use for this function.
|
||||
Must be less than or equal to the number of threads the script is running with.
|
||||
* stock (*boolean*) - If true, the function can affect the stock market. See
|
||||
:ref:`gameplay_stock_market_player_actions_influencing_stock`
|
||||
|
||||
:returns: The number by which the money on the server was multiplied for the growth
|
||||
:RAM cost: 0.15 GB
|
||||
|
@ -8,6 +8,8 @@ hack() Netscript Function
|
||||
|
||||
* threads (*number*) - Number of threads to use for this function.
|
||||
Must be less than or equal to the number of threads the script is running with.
|
||||
* stock (*boolean*) - If true, the function can affect the stock market. See
|
||||
:ref:`gameplay_stock_market_player_actions_influencing_stock`
|
||||
|
||||
:returns: The amount of money stolen if the hack is successful, and zero otherwise
|
||||
:RAM cost: 0.1 GB
|
||||
|
@ -229,7 +229,7 @@ export let CONSTANTS: IMap<any> = {
|
||||
** Working for a company positively affects the way the corresponding stock's forecast changes
|
||||
|
||||
* Scripts now start/stop instantly
|
||||
* Improved performance when starting up many copies of a new script (by Ornedan)
|
||||
* Improved performance when starting up many copies of a new NetscriptJS script (by Ornedan)
|
||||
* Dialog boxes can now be closed with the ESC key (by jaguilar)
|
||||
* NetscriptJS scripts should now be "re-compiled" if their dependencies change (by jaguilar)
|
||||
* write() function should now properly cause NetscriptJS scripts to "re-compile" (by jaguilar)
|
||||
|
@ -185,10 +185,10 @@ export function stockMarketCycle() {
|
||||
if (!(stock instanceof Stock)) { continue; }
|
||||
|
||||
const roll = Math.random();
|
||||
if (roll < 0.2) {
|
||||
if (roll < 0.1) {
|
||||
stock.flipForecastForecast();
|
||||
StockMarket.ticksUntilCycle = 4 * TicksPerCycle;
|
||||
} else if (roll < 0.65) {
|
||||
} else if (roll < 0.55) {
|
||||
stock.b = !stock.b;
|
||||
stock.flipForecastForecast();
|
||||
StockMarket.ticksUntilCycle = TicksPerCycle;
|
||||
@ -214,6 +214,9 @@ export function processStockPrices(numCycles=1) {
|
||||
StockMarket.storedCycles -= cyclesPerStockUpdate;
|
||||
|
||||
// Cycle
|
||||
if (StockMarket.ticksUntilCycle == null || typeof StockMarket.ticksUntilCycle !== "number") {
|
||||
StockMarket.ticksUntilCycle = TicksPerCycle;
|
||||
}
|
||||
--StockMarket.ticksUntilCycle;
|
||||
if (StockMarket.ticksUntilCycle <= 0) {
|
||||
stockMarketCycle();
|
||||
|
@ -2,4 +2,4 @@
|
||||
* How many stock market 'ticks' before a 'cycle' is triggered.
|
||||
* A 'tick' is whenver stock prices update
|
||||
*/
|
||||
export const TicksPerCycle = 80;
|
||||
export const TicksPerCycle = 70;
|
||||
|
@ -98,7 +98,10 @@ export function processTransactionForecastMovement(stock: Stock, shares: number)
|
||||
|
||||
// Forecast always decreases in magnitude
|
||||
const forecastChange = forecastChangePerPriceMovement * (numIterations - 1);
|
||||
stock.otlkMag = Math.max(6, stock.otlkMag - forecastChange);
|
||||
const changeLimit = 6;
|
||||
if (stock.otlkMag > changeLimit) {
|
||||
stock.otlkMag = Math.max(changeLimit, stock.otlkMag - forecastChange);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -672,8 +672,8 @@ export const InitStockMetadata: IConstructorParams[] = [
|
||||
marketCap: 58e9,
|
||||
mv: {
|
||||
divisor: 100,
|
||||
max: 430,
|
||||
min: 400,
|
||||
max: 400,
|
||||
min: 200,
|
||||
},
|
||||
name: LocationName.AevumNetLinkTechnologies,
|
||||
otlkMag: 1,
|
||||
@ -750,8 +750,8 @@ export const InitStockMetadata: IConstructorParams[] = [
|
||||
marketCap: 30e9,
|
||||
mv: {
|
||||
divisor: 100,
|
||||
max: 300,
|
||||
min: 260,
|
||||
max: 275,
|
||||
min: 100,
|
||||
},
|
||||
name: "Sigma Cosmetics",
|
||||
otlkMag: 0,
|
||||
@ -776,8 +776,8 @@ export const InitStockMetadata: IConstructorParams[] = [
|
||||
marketCap: 42e9,
|
||||
mv: {
|
||||
divisor: 100,
|
||||
max: 400,
|
||||
min: 360,
|
||||
max: 350,
|
||||
min: 200,
|
||||
},
|
||||
name: "Joes Guns",
|
||||
otlkMag: 1,
|
||||
|
Loading…
Reference in New Issue
Block a user