gamemanual:gm_stocks
Table of Contents
Stocks Game Mechanics
The Game Mechanics section of the manual details the internal formula used in the game's calculations. This section of the manual uses pseudo-code and may not be 100% the same as the code in the game.
The Game Mechanics part of the manual is mainly designed to be a reference for the frequently asked question, “Why do I get this rating when I do X, Y, Z?!” Usually, this answer involves many different variables, which this section of the manual demonstrates.
The game mechanics section of the manual shows how the sausage gets made. So you really may want to avoid this portion of the manual if you enjoy the game.
Variables
Name | Description | Name | Description | |
---|---|---|---|---|
Money | Amount of cash your company has | Total_Debt | Total Debt including all Loans, Bond Par Values, and Line Of Credit | |
Branch_Construction_Costs | Total value of all branch construction | Factory_Construction_Costs | Total value of all completed factory construction | |
Vehicle_Inventory | Vehicle inventory times the average unit costs of the vehicles | Total_Design_Costs | Design costs of all your components and vehicles divided by 10 | |
Share_Holdings | The value of other company shares you own | Global_Stock_Rate | Global Stock Rate as defined by the TurnEvents.xml file | |
Revenues_12_Months | Revenues over the last 12 months | GameStartYear | The year you started the game | |
Evaluation | Price Evaluation defined in the Price Evaluation section | EPS_Growth | Change in EPS rating over the last year | |
Total_Shares | The total number of issued shares | CurrentSharePrice | Share price for the previous month | |
Last_EPS | Last Quarter's EPS | Current_EPS | This Quarter's EPS | |
EPS_Q# | EPS from # quarters ago | Delisted | No longer publically traded | |
LY_YTD_Profits | Last Year Total Profits | CurrentFunds | Current amount of money the company has | |
Turn_Expenses | Last Month's Expenses | Turn_Income | Last Month's Revenues | |
LastYear_Expenses | Last Year's Expenses | LastYear_Income | Last Year's Revenues | |
Current_Construction_Costs | All current expenses from factory construction |
Price Evaluation
Money - Total_Debt + Branch_Construction_Costs + Factory_Construction_Costs + Vehicle_Inventory + Total_Design_Costs + Share_Holdings
IPO Evaluation
PriceEvaluation = PriceEvaluation/2.0 + ((PriceEvaluation/2.0) * Global_Stock_Rate) PriceEvaluation = PriceEvaluation * 1.2 + (Revenues_12_Months * (3 * Global_Stock_Rate)) IPO_Share_Price = 10 Shares_Issued = PriceEvaluation / IPO_Share_Price
Share Price
if(Year > 2000) { if(Year-GameStartYear > 8 ) NewSharePrice = ((Evaluation*0.4) + (Revenues_12_Months*1.0*Global_Stock_Rates) * (0.75 * EPS_Growth)) / (Total_Shares); else { NewSharePrice = ((Evaluation*(0.4+((8-(Year-GameStartYear))*0.1))) + (Revenues_12_Months*1.0*Global_Stock_Rates) * (((Year-GameStartYear)*0.1) * EPS_Growth)) / (Total_Shares); } } else { if(Year-GameStartYear > 8 ) NewSharePrice = ((Evaluation*0.4) + (Revenues_12_Months*(10.0-((Year-1900)/10))* Global_Stock_Rates) *(0.75 * EPS_Growth)) / (Total_Shares); else { NewSharePrice = ((Evaluation*(0.4+((8-(Year-GameStartYear))*0.1))) + (Revenues_12_Months*(10.0-((Year-1900)/10))*Global_Stock_Rates) * (((Year-GameStartYear)*0.1) * EPS_Growth)) / (Total_Shares); } } NewSharePrice = CurrentSharePrice + ( ((NewSharePrice - CurrentSharePrice) / 3.5) + ((((NewSharePrice - CurrentSharePrice) / 3.0)) - (NewSharePrice - CurrentSharePrice) / 6.0) ) if(NewSharePrice < 0) NewSharePrice = 0.01; if(A Quarter Month) { if(Last_EPS > 0) { if(Current_EPS > Last_EPS * 2.0) NewSharePrice = NewSharePrice * 1.15; else if(Current_EPS > Last_EPS * 1.2) NewSharePrice = NewSharePrice * 1.1; else if(Current_EPS > Last_EPS * 1.1) NewSharePrice = NewSharePrice * 1.05; else if(Current_EPS < Last_EPS * 0.9) NewSharePrice = NewSharePrice * 0.95; else if(Current_EPS < Last_EPS * 0.8) NewSharePrice = NewSharePrice * 0.85; else if(Current_EPS < Last_EPS * 0.7) NewSharePrice = NewSharePrice * 0.75; } else if(Last_EPS < 0) { if(Current_EPS > Last_EPS * 0.7) NewSharePrice = NewSharePrice * 1.15; if(Current_EPS > Last_EPS * 0.8) NewSharePrice = NewSharePrice * 1.1; if(Current_EPS > Last_EPS * 0.9) NewSharePrice = NewSharePrice * 1.05; else if(Current_EPS < Last_EPS * 1.1) NewSharePrice = NewSharePrice * 0.95; else if(Current_EPS < Last_EPS * 1.2) NewSharePrice = NewSharePrice * 0.85; else if(Current_EPS < Last_EPS * 1.3) NewSharePrice = NewSharePrice * 0.75; } else if(Last_EPS == 0) { if(Current_EPS > Last_EPS ) NewSharePrice = NewSharePrice * 1.05; else if(Current_EPS < Last_EPS ) NewSharePrice = NewSharePrice * 0.95; else if(Current_EPS == 0 && Last_EPS == 0 && eps3 == 0 && eps4 == 0) { NewSharePrice = NewSharePrice * (Random Number Between (0 AND 0.2) + 0.95); } } } if(NewSharePrice < ((Evaluation * 0.7) / Total_Shares)) { NewSharePrice = ((Evaluation * 0.7) / Total_Shares); } if(CurrentSharePrice != 0) { priceChange = NewSharePrice / CurrentSharePrice; }
Share Splits
Split
if(NewSharePrice>(30+((Year-1899)*2)) OR (((EPS_Q1+EPS_Q2+EPS_Q3+EPS_Q4)>(4+((Year-1899)/3))) AND NewSharePrice > 5) ) { NewSharePrice = NewSharePrice / 2.0; TotalShares = TotalShare * 2; }
Reverse Split
if(NewSharePrice < 1) { if(TotalShares / 2 > 1000) { TotalShares = TotalShares / 2; NewSharePrice = NewSharePrice * 2; } else { Delisted } }
Takeover Price
if(Shares_Needed > 0) { if(EPS_Year < -0.5) { AqusitionCosts = ((((Price_Evaluation*1.1)/(Shares_Needed)/5) + (PricePerShare*1.3)) * Shares_Needed)*DifficultyBonus ; } else { AqusitionCosts = ((((Price_Evaluation*1.2)/(Shares_Needed)/2.5) + (PricePerShare*1.75)) * Shares_Needed) * ((EPS_Year/10.0) + 1)*DifficultyBonus; } PricePerShare = (AqusitionCosts / (Shares_Needed)); } else AqusitionCosts = ((Price_Evaluation/10))*DifficultyBonus;
AI Buy/Sell Shares
Institutional
Buy
if(priceChange > 7%) Buy 10% of the available shares. else if(priceChange > 4%) Buy 7% of the available shares. else if(priceChange > 0% AND Random Number Between (0 AND 4) = 0) Buy 3.5% of the available shares.
Sell
if(priceChange < -10% AND Random Number Between (0 AND 12) = 0) Sell 4% of shares owned. else if(priceChange < 0.95 AND Random Number Between (0 AND 12) = 0) Sell 2.5% of shares owned. else if(Random Number Between (0 AND 12) = 0) Sell 1% of shares owned.
AI Companies
Buy
if(LY_YTD_Profits > 0 && CurrentFunds > (LY_YTD_Profits*2) ) Buy 10% of CurrentFunds worth of stock shares.
Sell
IF (( CurrentFunds < ( (Turn_Expenses-Turn_Income) * 3 ) AND CurrentFunds < (LastYear_Expenses - LastYear_Income) ) OR CurrentFunds < (Turn_Expenses-Current_Construction_Costs-Turn_Income)) { if( Company owns more than 25% of self ) Sell 5% of shares owned of their company. else Sell all shares of random company. }
gamemanual/gm_stocks.txt · Last modified: 2022/06/20 13:57 by admin