globals [ freq_buy ;; number of turtles buying for one round freq_sell ;; number of turtles selling for one round current_price ;; container for dynamic price offer_buy ;; amount of shares offered to buy offer_sell ;; amount of shares offered for sale market ;; aggregate sum of buys and sells for a specific amount of rounds before the price changes percent ;; container for dynamic for percent gain temp ;; list holding four previous price movements direction ;; numeric value for different price movements watch ;; varible for graphing default_percent ;; varibale holding the fair market value of the stock percent_gap ;; the amount the price jumps from the closing price of the previous day future_value ;; results in the bearish/bullish mood of the traders and investors ] breeds [ leader ;; dummy turtle to initialize trading traders ;; investors and traders class ] traders-own [ buy? ;; boolean value for buying and selling threshold ;; point of entry interval ;; amount of variable at point of entry shares ;; amount of shares traded status profit ;; trader variable determining amount of profit realized enter_percent ;; trader variable recording entry percentage clock ;; variable holding amount of rounds passed per turtle ] ;;;;;;;;;;;;;;;;;;;;;; ;; Setup Procedures ;; ;;;;;;;;;;;;;;;;;;;;;; ;; set up global variables to setup-vars set temp [ 1 0 1 0 ] set offer_buy shares_offer set offer_sell shares_offer set watch 0 if ( scenario = 1 ) ;; Scenario where the price of the stock is undervalued [ set default_percent 18 set percent_gap 2 set future_value random 4 + 1 ] if ( scenario = 2 ) ;; Scenario where the price of the stock is overvalued [ set default_percent 1 set percent_gap 18 set future_value random 4 + 1 ] if ( scenario = 3 ) ;; Scenario where the price of the stock is fairly valued [ set default_percent 8 set percent_gap 8 set future_value random 4 + 1 ] if ( scenario = 4 ) ;; Scenario where the price of the stock is slightly undervalued [ set default_percent 8 set percent_gap 4 set future_value random 4 + 1 ] set percent percent_gap set current_price (price * ( (100 + percent_gap )/ 100)) end ;; sets up plots to setup-plots set-current-plot "Price Plot: Stock XYZ" set-plot-y-range ( price - 5 ) ( price + 5 ) set-current-plot "Volatility Measure" set-plot-y-range ( price - 5 ) ( price + 5 ) end ;;updates "Type Histogram" to update-type-histogram set-current-plot "Type" plot-pen-reset set-plot-pen-color red plot count turtles with [color = red] set-plot-pen-color green plot count turtles with [color = green] set-plot-pen-color blue plot count turtles with [color = blue] set-plot-pen-color red end ;;updates graph "Volatility Measure" to update-volatility locals [ uniform_value ] set watch watch + 1 set uniform_value price * ( ((default_percent + future_value + 100) / 100 )) set-current-plot "Volatility Measure" set-current-plot-pen "Uniform" plot-pen-reset plot price * ( ( 100 + percent_gap ) / 100 ) set-plot-pen-interval watch plot uniform_value set-current-plot-pen "Approx Price Line" plot-pen-reset plot (price * ( (100 + percent_gap )/ 100)) set-plot-pen-interval watch plot current_price set-current-plot-pen "Price" plot current_price end ;; initializes traders and investors to setup-turtles set-default-shape traders "person" create-custom-leader 1 [ set color blue ] ;; creates dummy turtle with color blue ;; creates investors and traders create-custom-traders turtle_number [ setxy random screen-size-x random screen-size-y set interval future_value ;; sets variability if the turtle is selling and the price falls below the pivot ;; initializes turtle variables ;; price, but remains within this variable, turtle will still want to sell set clock 0 set enter_percent 0 set status false ifelse random 100 < percent_buy ;; sets whether investor buys or not [ set buy? true set color green ] [ set buy? false set color red ] ifelse random 100 < percent_traders ;; sets whether traders will be a turtle or not [ set profit future_value set buy? true set color green ifelse (random 2 = 1) ;; sets how many shares investors wants to buy or sell [ set shares 1000 ] [ set shares 500 ] ] [ set profit 0 ifelse (random 2 = 1) ;; sets how many shares investors wants to buy or sell [ set shares 2000 ] [ set shares 1000 ] ] ;;sets pivot point of percentage entry if future_value = 4 [ set threshold (default_percent + ( random 3 + 2 ))] if future_value = 3 [ set threshold (default_percent + ( random 2 + 1 ))] if future_value = 2 [ set threshold (default_percent - ( random 2 ))] if future_value = 1 [ set threshold (default_percent - ( random 2 + 1 ))] ] end ;; general setup function to setup ca setup-vars setup-plots setup-turtles end ;; initializes plotting to do-plots set-current-plot "Price Plot: Stock XYZ" set-current-plot-pen "price" plot current_price update-type-histogram ;; update-freq-histogram update-volatility end ;;;;;;;;;;;;;;;;;;;;;;;; ;; Runtime Procedures ;; ;;;;;;;;;;;;;;;;;;;;;;;; ;; begins simulation procedures to trade every speed ;; delays each round [ ask traders with [ color != blue ] ;; limits amount of turtle-ask each round [ if time-to-start? ;; slowing down reporter determined by turtle "who - 1" [ start-trading ;; main trading function do-plots ;; begins plotting ] ] ] end to clear-market ;; clears dynamic market variables ;; sets market variables set offer_buy shares_offer set offer_sell shares_offer set freq_sell 0 set freq_buy 0 end to update-market ;; checks if price is ready for updating if (offer_buy <= 0 ) ;; check if all of the shares at the price level has been bought [ set current_price current_price + 0.2 ;; increments the price set percent ((( current_price / price ) - 1) * 100 ) set market 0 clear-market ;; resets the variables for the next price level set freq_sell 0 set freq_buy 0 ] if (offer_sell <= 0 ) ;; same for selling [ set current_price current_price - 0.2 set percent ((( current_price / price ) - 1) * 100 ) set market 0 clear-market set freq_sell 0 set freq_buy 0 ] end ;; checks the price movement and sets variable direction a value corresponding to that movement from the list ;; uses stop so that a direction lower that satisfies the conditions doesnt get set also to check-ticks if ( (item 0 temp) = 1 and (item 1 temp) = 1 and (item 2 temp) = 1 and ( item 3 temp ) = 1 ) [ set direction 3 stop ] if ( (item 0 temp) = 1 and (item 1 temp) = 1 and (item 2 temp) = 1 ) [ set direction 2 stop ] if ( (item 0 temp = 0) and (item 1 temp) = 0 ) [ set direction 1 stop ] if ( (item 0 temp) = 0 and (item 1 temp) = 0 and (item 2 temp) = 0 and ( item 3 temp ) = 0 ) [ set direction 0 ] end ;; procedure for investors who are buying to buy-investors if ( offer_buy > 0 ) ;; checks to make sure the market can offer the investor desired shares [ if ( threshold + interval > percent or ( direction = 2 and random 100 < 20 ) ) ;; if the price falls within range or the direction is "bullish" 15% of the time [ ;; updates market variables set market market + shares set offer_buy offer_buy - shares set freq_buy freq_buy + 1 update-market set color blue ;; declares investor is finished update-up-tick ;; updates the price movement ] ] end ;; functions for investors to sell to sell-investors if ( offer_sell > 0) [ if ( ( threshold < percent) or ( direction = 1 and random 100 < 20 ) ) [ set market market - shares set offer_sell offer_sell - shares set freq_sell freq_sell + 1 update-market set color blue set status true update-down-tick ] ] end ;; checks first three values in list "temp" and sets the list to the three values indicated ;; used just before adding another value to avoid a long potentially infinite list ;; erase procedure for list wouldnt do the job so manually account for all possiblities to update-tick if ( (item 0 temp) = 1 and ( item 1 temp ) = 1 and ( item 2 temp ) = 1 ) [ set temp [ 1 1 1 ] ] if ( (item 0 temp) = 1 and ( item 1 temp ) = 1 and ( item 2 temp ) = 0 ) [ set temp [ 1 1 0 ] ] if ( (item 0 temp) = 1 and ( item 1 temp ) = 0 and ( item 2 temp ) = 1 ) [ set temp [ 1 0 1 ] ] if ( (item 0 temp) = 1 and ( item 1 temp ) = 0 and ( item 2 temp ) = 0 ) [ set temp [ 1 0 0 ] ] if ( (item 0 temp) = 0 and ( item 1 temp ) = 1 and ( item 2 temp ) = 1 ) [ set temp [ 0 1 1 ] ] if ( (item 0 temp) = 0 and ( item 1 temp ) = 0 and ( item 2 temp ) = 0 ) [ set temp [ 0 0 0 ] ] if ( (item 0 temp) = 0 and ( item 1 temp ) = 0 and ( item 2 temp ) = 1 ) [ set temp [ 0 0 1 ] ] if ( (item 0 temp) = 0 and ( item 1 temp ) = 1 and ( item 2 temp ) = 0 ) [ set temp [ 0 1 0 ] ] end ;; puts the last price movement into the list "temp" to update-up-tick update-tick set temp fput 1 temp end to update-down-tick update-tick set temp fput 0 temp end ;; buy function for traders to buy-traders if ( offer_buy > 0 ) [ ;; buys if it is within the interval or 50% of the time if direction is 3 or 15 % if direction is 2 if (threshold + interval + random 3 > percent or ( direction = 3 and random 100 < 50 ) or ( direction = 2 and random 100 < 15 ) ) [ set market market + shares set offer_buy offer_buy - shares set freq_buy freq_buy + 1 update-market set status true set buy? false set enter_percent percent set clock 0 set color orange update-up-tick ] ] end ;; sell function for traders to sell-traders if ( offer_sell > 0 and enter_percent != 0 ) [ if ( ( ( enter_percent + profit ) < percent) or direction = 0 or direction = 1) [ set market market - shares set offer_sell offer_sell - shares set freq_sell freq_sell + 1 update-market set color blue update-down-tick ] ] end ;; general trading procedure to start-trading check-ticks ;; checks the current price movement ;; ----------------------------------------- investors runtime procedures --------------------------------------- ifelse (profit = 0 ) ;; filters for investors [ ifelse ( buy? = false) ;; filters if buy or sell [ sell-investors ] [ buy-investors ] if ( clock > 5 ) ;; if clock for turtle is > 5 then turtle exits simulation [ set color blue ] ] ;; --------------------------------------- trader runtime procedures ------------------------------------------ [ ifelse ( buy? = true and status = false) [ buy-traders ] [ sell-traders ] if ( clock > 3 + random 4 and buy? = false and status = true) [ set direction 0 sell-traders] ifelse (enter_percent = 0 ) ;; if trader has not entered market, lower or raise point of entry [ ifelse ( direction = 3 ) [ set threshold threshold + 0.25 ] [ ifelse ( direction = 2 ) [ set threshold threshold + 0.15 ] [ set threshold threshold + 0.1 ] ] ] [ ifelse ( direction = 0 or direction = 1 ) ;; if trader has entered market, lower profit if market direction is negative [ set profit profit - 0.25 ] [ set profit profit - 0.05 ] ] ] set clock clock + 1 if (color != blue ) [ set color orange ] ;; if turtle does not comply with any of above procedures, set color orange --> ;; turtle is in limbo end ;; procedure to slow down turtles so that each turtle only goes if previous turtle has gone to-report time-to-start? report ( ( color-of turtle ( who - 1 ) = blue ) or ( color-of turtle ( who - 1 ) = orange ) ) end @#$#@#$#@ GRAPHICS-WINDOW 680 10 995 325 17 17 9.0 1 10 0 0 CC-WINDOW 681 342 996 583 Command Center SLIDER 16 385 188 418 turtle_number turtle_number 0 1000 242 1 1 NIL SLIDER 16 430 188 463 percent_traders percent_traders 0 100 0 1 1 NIL SLIDER 195 593 672 626 percent_buy percent_buy 0 100 55 1 1 NIL PLOT 197 347 492 588 Price Plot: Stock XYZ Time Dollars 0.0 100.0 16.0 18.0 true true PENS "Price" 0.2 1 -8716033 true SLIDER 12 593 184 626 price price 0 100 7 1 1 NIL BUTTON 15 346 92 379 TRADE! trade T 1 T OBSERVER BUTTON 104 348 170 381 NIL Setup NIL 1 T OBSERVER SLIDER 16 472 188 505 shares_offer shares_offer 1000 10000 5500 500 1 NIL MONITOR 599 148 656 197 Bid offer_buy 3 1 MONITOR 598 215 655 264 Ask offer_sell 3 1 MONITOR 586 15 671 64 NIL current_price 3 1 MONITOR 598 79 655 128 NIL percent 3 1 MONITOR 586 285 670 334 Count Down count turtles - count turtles with [ color = blue ] 3 1 SLIDER 16 511 188 544 speed speed 0 1 0.0 0.05 1 NIL PLOT 496 346 672 584 Type NIL Number of Turtles 0.0 3.0 0.0 10.0 true true PENS "Selling" 1.0 1 -65536 true "Finished" 1.0 1 -16776961 true "Buying" 1.0 0 -11352576 true PLOT 10 10 578 335 Volatility Measure NIL NIL 0.0 50.0 40.0 50.0 true true PENS "Uniform" 1.0 0 -16777216 true "Price" 1.0 0 -8716033 true "Approx Price Line" 1.0 0 -11352576 true SLIDER 14 551 186 584 Scenario Scenario 1 4 1 1 1 NIL @#$#@#$#@ WHAT IS IT? ----------- In today's stock market, one of the most important aspects in evaluating any stock is its inherent volatility. This volatility causes the stock to rise beyond its fair value or fall below many times before stabilizing. The current trading theory on volatility is that it is caused by day traders and market moving news. When average investors hear about the gyrations of a stock, many immediately think that traders were the cause. But, this is only a half truth. In this model, the different causes of volatility will be measured using a volatility measure. The model assumes that the traders and investors understand the fair value of the stock which is not the case in real life. It provides a good approximation and many different surprises. As, the model is worked under different test cases; it can be shown that traders are not the only factor in volatility of a stock. The testing scenario is that a stock, XYZ corporation, came out with momentum driving news. Disregarding any broader market sentiment, the traders and investors only see this stock as valuable and will buy or trade into it or sell out of it. Traders and investors have different mindsets. Being as true to the general behavior of both parties, traders will buy into the day and sell before the day is up while investors will buy into the stock and hold or sell out of the stock. The interaction of both parties together and by itself brings up interesting price action. The trader or investors acting by itself will probably cause an orderly market but this is not the cause in real life and in this model. The agents behavior is determined by itself and also the behaviors of the other agents. HOW IT WORKS ------------ The rules of the traders are more prone to the fluctuations of the market that traders or investors create. The trader initially buys into the market and once his profit is realize exits the market. The traders entering conditions are changed constantly depending on the stock movements. Investors on the other hand are more timid. Investors will either buy or sell into a stock. When buying they will look for more concretes such as the price becoming enticing or at a very low percentage enter base on the stock price movements. Selling is the same. If the investor cannot enter within the investors terms he will exit the market completely and not enter the market for t he day. Traders: Buy - buy into a stock if the price falls into the range, buy into the stock if the previous 2 or 3 ticks ( price movements ) were positive. Sell - sell the stock if the price of the stock has rose above its entry point and a predetermined profit is realized. Indecisive - depending on the price movements of the stock the trader will lower his buy point or lower his profits Investors: Buy - buy into a stock if the price falls into the range or randomly if the previous 3 ticks were positive Sell - sell the stock if the investor already owns the stock and the price falls within the price range Indecisive - quits out of the market if the investor cant enter the market properly within 5 rounds HOW TO USE IT ------------- There are many sliders to choose from some are very important to the study of volatility and some are not. But, if you want to study the ascent volatility, be sure to set the percent gap much lower than the default percent and vice versa for descent. Please feel free to experiment with the different sliders and document interesting behaviors. Please note that the volatility graph works best when the number of turtles is approximately 250. Turtle Number - controls the number of turtles in the simulation Percent Trader - controls the percent of the turtles that are traders Shares Offer - controls the amount of stock that must be bought before a stock goes up or down in price. This is a very important variable when determining volatility because it causes extreme price movements if the value is low enough. Speed - controls the speed of the simulation a higher value will slow down the graphs for easier readings and study Price - determines the price of the stock. Volatility is different at different price levels. Percent Buy - the percentage of investors who are buying and selling Scenario - four different ones (1) stock undervalued, (2) stock overvalued, (3) stock fairly valued, and (4) stock slightly undervalued. THINGS TO NOTICE ------------- The major part of this simulation rests on the measure of volatility. The graph on the bottom right of the interface is a standard way to measure volatility to the best of net logo's capacity. There is a straight line that demonstrates a relaxed and non volatile ascent or descent to the fair market value of the stock. Please refer to this when determining if and when volatility starts to occur in the stock. The large price graph on the top of the interface is also a good place to look deeper into the price movements. The histogram determining the amount of traders, investors, and fence sitters is also significant. When there is a lopsided decline in sellers verses buyers or vice versa some interesting effects on the price occurs. that is sometimes difficult to explain. Non volatile verse varying degrees of volatility. THINGS TO TRY ------------- This section could give some ideas of things for the user to notice while running the model. In the search for the many causes of volatility there are many combinations that can bring about different and unexpected results. Price The first interesting aspect is the actually price itself. In the market, stocks with low prices tend to move a little differently than price with higher prices. Even though, it might seem that volatility is price is independent it is not. Try running the model with the stock price at 4 verses the stock price above 70's. There is a considerably more volatility in the stock that is lower priced and the price at the end of the trading day sometimes does not adequately reflect the fair market value of the stock. This anomaly exist in the market and is known to most traders. In this model, the volatility is extraordinary high. Sometimes the stock can fly many times above its fair market value. Traders and Investors The second interesting aspect is the different volatilities that arises from different ratios of investors to traders. The expected outcome is that all traders will cause massive volatility in the stock and that investors will have a nice uniformed rise but this is not always the case. If there a good majority of the investors are buying, they can cause upwards volatility in the stock and if the majority are selling then there could be downwards volatility. Try setting the percent buy at 80 > and at all investors and run it. There is volatility caused by the fact that investors are buying and looking at each other for direction and the lack of sellers. If we run the same thing with all traders a good majority of the time the volatility is less than that with investors which is counter intuitive to market theory. If a combination of investors and traders are used than the volatility is less than that off only investors most of the time. The key point here is that this happen most of the time lending to the unpredictability of the market even when many variables are controlled. Shares Offered The more shares offered for sale the less the volatility of the stock. If the stock is thinly traded than the stock will gyrate heavily because each individual turtle has control of the market. While at high shares being offered, the volatility is next to zero. This lends to the fact that brokerage firms will like to trader heavily in stocks with lots of volume ( Merrill Lynch declaration of cutting 7000 NYSE and NASDAQ stocks from its trading portfolio in ~Dec 2002 ). Buy/Sell Ratio Sometimes the random arrangement of buyers and sellers will produce an arrangement where lots of sellers or buyers are lined up in a row. This is observed through the type of turtles histogram as a sharp decrease in the one of the bars. The volatility this causes is random but significant in the stock and causes almost immediate reversals in the direction. Number of Turtles Not exactly pertaining to volatility but when the stock has reach fair market value and no significant price movements is occurring, the price starts to exhibit cyclic behaviors. That is falling and rising similar to the business cycle that is suppose to control stock movements. EXTENDING THE MODEL ------------------- A great idea to try out is to throw some random bits of news in the market during the simulation to see how it will affect the turtles behavior. The assumption is that it will digest the information, create some volatility, and resolve itself back to normal; but this might not be the case. CREDITS AND REFERENCES ---------------------- @#$#@#$#@ default true 0 Polygon -7566196 true true 150 5 40 250 150 205 260 250 arrow true 0 Polygon -7566196 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150 box true 0 Polygon -7566196 true true 45 255 255 255 255 45 45 45 spacecraft true 0 Polygon -7566196 true true 150 0 180 135 255 255 225 240 150 180 75 240 45 255 120 135 thin-arrow true 0 Polygon -7566196 true true 150 0 0 150 120 150 120 293 180 293 180 150 300 150 turtle true 0 Polygon -7566196 true true 138 75 162 75 165 105 225 105 225 142 195 135 195 187 225 195 225 225 195 217 195 202 105 202 105 217 75 225 75 195 105 187 105 135 75 142 75 105 135 105 person false 0 Circle -7566196 true true 155 20 63 Rectangle -7566196 true true 158 79 217 164 Polygon -7566196 true true 158 81 110 129 131 143 158 109 165 110 Polygon -7566196 true true 216 83 267 123 248 143 215 107 Polygon -7566196 true true 167 163 145 234 183 234 183 163 Polygon -7566196 true true 195 163 195 233 227 233 206 159 truck-down false 0 Polygon -7566196 true true 225 30 225 270 120 270 105 210 60 180 45 30 105 60 105 30 Polygon -8716033 true false 195 75 195 120 240 120 240 75 Polygon -8716033 true false 195 225 195 180 240 180 240 225 truck-right false 0 Polygon -7566196 true true 180 135 75 135 75 210 225 210 225 165 195 165 Polygon -8716033 true false 210 210 195 225 180 210 Polygon -8716033 true false 120 210 105 225 90 210 truck-left false 0 Polygon -7566196 true true 120 135 225 135 225 210 75 210 75 165 105 165 Polygon -8716033 true false 90 210 105 225 120 210 Polygon -8716033 true false 180 210 195 225 210 210 circle false 0 Circle -7566196 true true 35 35 230 butterfly1 true 0 Polygon -16777216 true false 151 76 138 91 138 284 150 296 162 286 162 91 Polygon -7566196 true true 164 106 184 79 205 61 236 48 259 53 279 86 287 119 289 158 278 177 256 182 164 181 Polygon -7566196 true true 136 110 119 82 110 71 85 61 59 48 36 56 17 88 6 115 2 147 15 178 134 178 Polygon -7566196 true true 46 181 28 227 50 255 77 273 112 283 135 274 135 180 Polygon -7566196 true true 165 185 254 184 272 224 255 251 236 267 191 283 164 276 Line -7566196 true 167 47 159 82 Line -7566196 true 136 47 145 81 Circle -7566196 true true 165 45 8 Circle -7566196 true true 134 45 6 Circle -7566196 true true 133 44 7 Circle -7566196 true true 133 43 8 boat1 false 0 Polygon -1 true false 63 162 90 207 223 207 290 162 Rectangle -6524078 true false 150 32 157 162 Polygon -16776961 true false 150 34 131 49 145 47 147 48 149 49 Polygon -7566196 true true 158 33 230 157 182 150 169 151 157 156 Polygon -7566196 true true 149 55 88 143 103 139 111 136 117 139 126 145 130 147 139 147 146 146 149 55 boat2 false 0 Polygon -1 true false 63 162 90 207 223 207 290 162 Rectangle -6524078 true false 150 32 157 162 Polygon -16776961 true false 150 34 131 49 145 47 147 48 149 49 Polygon -7566196 true true 157 54 175 79 174 96 185 102 178 112 194 124 196 131 190 139 192 146 211 151 216 154 157 154 Polygon -7566196 true true 150 74 146 91 139 99 143 114 141 123 137 126 131 129 132 139 142 136 126 142 119 147 148 147 boat3 false 0 Polygon -1 true false 63 162 90 207 223 207 290 162 Rectangle -6524078 true false 150 32 157 162 Polygon -16776961 true false 150 34 131 49 145 47 147 48 149 49 Polygon -7566196 true true 158 37 172 45 188 59 202 79 217 109 220 130 218 147 204 156 158 156 161 142 170 123 170 102 169 88 165 62 Polygon -7566196 true true 149 66 142 78 139 96 141 111 146 139 148 147 110 147 113 131 118 106 126 71 bee true 0 Polygon -256 true false 151 152 137 77 105 67 89 67 66 74 48 85 36 100 24 116 14 134 0 151 15 167 22 182 40 206 58 220 82 226 105 226 134 222 Polygon -16777216 true false 151 150 149 128 149 114 155 98 178 80 197 80 217 81 233 95 242 117 246 141 247 151 245 177 234 195 218 207 206 211 184 211 161 204 151 189 148 171 Polygon -7566196 true true 246 151 241 119 240 96 250 81 261 78 275 87 282 103 277 115 287 121 299 150 286 180 277 189 283 197 281 210 270 222 256 222 243 212 242 192 Polygon -16777216 true false 115 70 129 74 128 223 114 224 Polygon -16777216 true false 89 67 74 71 74 224 89 225 89 67 Polygon -16777216 true false 43 91 31 106 31 195 45 211 Line -1 false 200 144 213 70 Line -1 false 213 70 213 45 Line -1 false 214 45 203 26 Line -1 false 204 26 185 22 Line -1 false 185 22 170 25 Line -1 false 169 26 159 37 Line -1 false 159 37 156 55 Line -1 false 157 55 199 143 Line -1 false 200 141 162 227 Line -1 false 162 227 163 241 Line -1 false 163 241 171 249 Line -1 false 171 249 190 254 Line -1 false 192 253 203 248 Line -1 false 205 249 218 235 Line -1 false 218 235 200 144 wolf-left false 3 Polygon -6524078 true true 117 97 91 74 66 74 60 85 36 85 38 92 44 97 62 97 81 117 84 134 92 147 109 152 136 144 174 144 174 103 143 103 134 97 Polygon -6524078 true true 87 80 79 55 76 79 Polygon -6524078 true true 81 75 70 58 73 82 Polygon -6524078 true true 99 131 76 152 76 163 96 182 104 182 109 173 102 167 99 173 87 159 104 140 Polygon -6524078 true true 107 138 107 186 98 190 99 196 112 196 115 190 Polygon -6524078 true true 116 140 114 189 105 137 Rectangle -6524078 true true 109 150 114 192 Rectangle -6524078 true true 111 143 116 191 Polygon -6524078 true true 168 106 184 98 205 98 218 115 218 137 186 164 196 176 195 194 178 195 178 183 188 183 169 164 173 144 Polygon -6524078 true true 207 140 200 163 206 175 207 192 193 189 192 177 198 176 185 150 Polygon -6524078 true true 214 134 203 168 192 148 Polygon -6524078 true true 204 151 203 176 193 148 Polygon -6524078 true true 207 103 221 98 236 101 243 115 243 128 256 142 239 143 233 133 225 115 214 114 wolf-right false 3 Polygon -6524078 true true 170 127 200 93 231 93 237 103 262 103 261 113 253 119 231 119 215 143 213 160 208 173 189 187 169 190 154 190 126 180 106 171 72 171 73 126 122 126 144 123 159 123 Polygon -6524078 true true 201 99 214 69 215 99 Polygon -6524078 true true 207 98 223 71 220 101 Polygon -6524078 true true 184 172 189 234 203 238 203 246 187 247 180 239 171 180 Polygon -6524078 true true 197 174 204 220 218 224 219 234 201 232 195 225 179 179 Polygon -6524078 true true 78 167 95 187 95 208 79 220 92 234 98 235 100 249 81 246 76 241 61 212 65 195 52 170 45 150 44 128 55 121 69 121 81 135 Polygon -6524078 true true 48 143 58 141 Polygon -6524078 true true 46 136 68 137 Polygon -6524078 true true 46 130 Polygon -6524078 true true 45 129 35 142 37 159 53 192 47 210 62 238 80 237 Line -16777216 false 74 237 59 213 Line -16777216 false 59 213 59 212 Line -16777216 false 58 211 67 192 Polygon -6524078 true true 38 138 66 149 Polygon -6524078 true true 46 128 33 120 21 118 11 123 3 138 5 160 13 178 9 192 0 199 20 196 25 179 24 161 25 148 45 140 Polygon -6524078 true true 67 122 96 126 63 144 sheep false 15 Rectangle -1 true true 90 75 270 225 Circle -1 true true 15 75 150 Rectangle -16777216 true false 81 225 134 286 Rectangle -16777216 true false 180 225 238 285 Circle -16777216 true false 1 88 92 wolf false 0 Rectangle -7566196 true true 15 105 105 165 Rectangle -7566196 true true 45 90 105 105 Polygon -7566196 true true 60 90 83 44 104 90 Polygon -16777216 true false 67 90 82 59 97 89 Rectangle -1 true false 48 93 59 105 Rectangle -16777216 true false 51 96 55 101 Rectangle -16777216 true false 0 121 15 135 Rectangle -16777216 true false 15 136 60 151 Polygon -1 true false 15 136 23 149 31 136 Polygon -1 true false 30 151 37 136 43 151 Rectangle -7566196 true true 105 120 263 195 Rectangle -7566196 true true 108 195 259 201 Rectangle -7566196 true true 114 201 252 210 Rectangle -7566196 true true 120 210 243 214 Rectangle -7566196 true true 115 114 255 120 Rectangle -7566196 true true 128 108 248 114 Rectangle -7566196 true true 150 105 225 108 Rectangle -7566196 true true 132 214 155 270 Rectangle -7566196 true true 110 260 132 270 Rectangle -7566196 true true 210 214 232 270 Rectangle -7566196 true true 189 260 210 270 Line -7566196 true 263 127 281 155 Line -7566196 true 281 155 281 192 ant true 0 Polygon -7566196 true true 136 61 129 46 144 30 119 45 124 60 114 82 97 37 132 10 93 36 111 84 127 105 172 105 189 84 208 35 171 11 202 35 204 37 186 82 177 60 180 44 159 32 170 44 165 60 Polygon -7566196 true true 150 95 135 103 139 117 125 149 137 180 135 196 150 204 166 195 161 180 174 150 158 116 164 102 Polygon -7566196 true true 149 186 128 197 114 232 134 270 149 282 166 270 185 232 171 195 149 186 149 186 Polygon -7566196 true true 225 66 230 107 159 122 161 127 234 111 236 106 Polygon -7566196 true true 78 58 99 116 139 123 137 128 95 119 Polygon -7566196 true true 48 103 90 147 129 147 130 151 86 151 Polygon -7566196 true true 65 224 92 171 134 160 135 164 95 175 Polygon -7566196 true true 235 222 210 170 163 162 161 166 208 174 Polygon -7566196 true true 249 107 211 147 168 147 168 150 213 150 Polygon -7566196 true true 270 14 Polygon -7566196 true true 276 21 bird1 false 0 Polygon -7566196 true true 2 6 2 39 270 298 297 298 299 271 187 160 279 75 276 22 100 67 31 0 bird2 false 0 Polygon -7566196 true true 2 4 33 4 298 270 298 298 272 298 155 184 117 289 61 295 61 105 0 43 @#$#@#$#@ NetLogo 1.2beta4 (Rev C) @#$#@#$#@ @#$#@#$#@ @#$#@#$#@