Investments

Investments preview image

1 collaborator

Uri_dolphin3 Uri Wilensky (Author)

Tags

(This model has yet to be categorized with any tags)
Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 5.0beta1 • Viewed 383 times • Downloaded 29 times • Run 0 times
Download the 'Investments' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

This model is a simple activity designed to teach compound interest. Students have a choice between investing their money with a teacher-controlled interest rate or using their money to purchase a car at a teacher defined price.

HOW TO USE IT

Quickstart Instructions:

Teacher: Follow these directions to run the HubNet activity. Optional: Zoom In (see Tools in the Menu Bar) Teacher: Open up the HubNet Control Center (see Tools in the Menu Bar). This will show you the IP Address of this computer. Everyone: Open up a HubNet Client on your machine and input the IP Address of this computer, type your user name in the user name box, and press ENTER.

Teacher: Setup the activity by selecting a cost for cars and an interest rate using the CAR-COST and INTEREST-RATE sliders and press the GO button. Everyone: Decide how to use your money by either investing, adjusting the FRACTION-TO-INVEST slider and pressing the INVEST button, or buying a car with the BUY-CAR button.

Teacher: Press the NEXT-ROUND button. Students who have invested will receive the calculated interest.

Teacher: To the activity again with the same group, press the SETUP button to return all students back to the initial conditions. To run the activity with a different group of students press the RESET button in the Control Center and follow these instructions from the beginning.

Buttons:

RESET - Returns all current users to the initial state. This should be used to restart the activity. GO - runs the activity NEXT-ROUND - Students who have invested will receive the calculated interest and all students will be given the option to invest again.

Sliders:

CAR-COST - Sets the cost of each car. INTEREST-RATE - Sets the interest rate for all investors.

Monitors:

ROUND - Indicates the number of investment rounds have already been completed.

Client Information

After logging in, if GO is pressed in NetLogo the client interface will appear for the students and the student will be assigned a turtle and 100 dollars which will be displayed in the MY MONEY monitor. The current round will be displayed in the ROUND monitor starting out with one. The money they have currently invested will appear in the INVESTMENT monitor, the return from their previous investment will be in the INVESTMENT-RETURN monitor, and the number of cars they own will be in the CARS monitor. These will all be initialized to zero.

Each round the student manages their money by either selecting a fraction to invest with the FRACTION-TO-INVEST slider and pressing the INVEST button, or buying a car with the BUY-CAR button.

THINGS TO NOTICE

There are at least two possible ways to run this model with a a group of students. One way is to tell students the number of rounds in the activity. Another way is not to tell them. If you try both ways, students may realize that it is important to figure out a strategy, and that knowing how the market behaves is helpful for choosing a strategy. Other activity options are to change the cost of the car and/or the interest rate in the middle of the activity. Note the difference between these two changes. Students know the price of a car before buying it. But students who invest money are taking a risk, because the teacher can wait for everyone to invest and only then change the interest rate. If students think this is unfair, they should discuss what the rules of the game should be and how these rules would reflect (or not) a real market.

THINGS TO TRY

The teacher should try both telling students the number of rounds in the activity and ending after a randomly selected number of rounds without informing the students. The students should think about how they should adjust their strategy for each set of conditions. The teacher should also adjust the interest rate and the cost of a car throughout the game to simulate an indeterminate market.

EXTENDING THE MODEL

Currently all of the conditions of the world are controlled by input from the teacher; these variables, cost of car, interest rate, and number of rounds, could be controlled automatically by the model. There is only one type of investment now, try adding low or high risk investments so the rate of return is not always the same.

RELATED MODELS

Public Good

HOW TO CITE

If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:

COPYRIGHT AND LICENSE

Copyright 2004 Uri Wilensky.

CC BY-NC-SA 3.0

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.

This activity and associated models and materials were created as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Variable and Breed declarations ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

globals [
  quick-start  ;; current quickstart instruction displayed in the quickstart monitor
  qs-item      ;; index of the current quickstart instruction
  qs-items     ;; list of quickstart instructions
]

breed [ students student ]
students-own
[
  user-id    ;; the name selected by each user
  fraction   ;; the fraction of current money the user has selected to invest
  investment ;; the amount the user has invested
  my-money   ;; the money that the user currently has to use
  return-investment ;; the interest plus the principle returned on the investment
  cars        ;; the number of cars purchased
  invested?    ;; boolean variable indicating whether the user has invested this round
]

;;;;;;;;;;;;;;;;;;;;;
;; Setup Functions ;;
;;;;;;;;;;;;;;;;;;;;;

to startup
  ca
  ask patches [ set pcolor gray ]
  hubnet-reset
end 

;; reset all the clients to begin the activity again

to setup
  reset-ticks
  ask students
    [
      reset-client
      send-info-to-clients
    ]
end 

;;;;;;;;;;;;;;;;;;;;;;;
;; Runtime Functions ;;
;;;;;;;;;;;;;;;;;;;;;;;

to go
  every .1
  [ listen-clients ] ;; get commands and data from the clients
end 

;; move on the the next round, calculate interest and update the variables on the clients

to next-round
  tick
  ask students [ update-student ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Code for interacting with the clients ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; standard hubnet procedure to collect data sent by clients

to listen-clients
  while [ hubnet-message-waiting? ]
  [
    hubnet-fetch-message
    ifelse hubnet-enter-message?
    [ create-new-student display ]
    [
      ifelse hubnet-exit-message?
      [ remove-student display ]
      [ execute-command hubnet-message-tag ]
    ]
  ]
end 

;; interpret each hubnet message as a command

to execute-command [command]
  if command = "fraction-to-invest" ;; every time a student adjusts their fraction to invest button update the turtle variable
  [
    ask students with [user-id = hubnet-message-source]
     [
        if (invested? = false)
        [ set fraction hubnet-message ]
     ]
  ]

  if command = "invest"
    [
      ask students with [user-id = hubnet-message-source] ;; when the student press the INVEST button move the money from My Money into investment
         [
           if (invested? = false) ;; students may only invest once per round
             [
               set investment my-money * fraction
               set my-money my-money - investment
               set return-investment 0
               hubnet-send user-id "investment" precision investment 2
               hubnet-send user-id "My Money" precision my-money 2
               hubnet-send user-id "investment-return" precision return-investment 2
               set invested? true
             ]
         ]
     ]

  if command = "buy-car"
  [
     ask students with [user-id = hubnet-message-source]
      [
        if (my-money >= car-cost)
        [
          set cars cars + 1
          set my-money my-money - car-cost
          hubnet-send user-id "cars" cars
          hubnet-send user-id "My Money" precision my-money 2
        ]
     ]
  ]
end 

;; manage the turtles as clients enter and exit

to create-new-student
  let p one-of patches with [ count neighbors = 8 and not any? turtles-here and
                                     not any? neighbors4 with [ any? turtles-here ] ]
  ifelse p = nobody
  [ user-message "All of the spaces in the view are full, no more students can join." ]
  [ create-students 1
    [
      setup-student-vars p
      reset-client
      send-info-to-clients
    ]
  ]
end 

to remove-student
  ask students with [user-id = hubnet-message-source] [ die ]
end 

;; sets the turtle variables to appropriate initial values

;;;;;;;;;;;;;;;;;;;;;;;
;; Turtle Procedures ;;
;;;;;;;;;;;;;;;;;;;;;;;

;; setup the visual components of each turtle

to setup-student-vars [ p ]
  set user-id hubnet-message-source
  set shape "circle"
  set color one-of [ red blue pink cyan green ]
  set label-color black
  setxy [pxcor] of p + 0.5 [pycor] of p
  set label word user-id ", "
end 

;; initialize the turtle variables

to reset-client
  set my-money 100
  set invested? false
  set return-investment 0
  set cars 0
  set label ( word  user-id ", " precision my-money 2 )
end 

;; calculate investments and send the results to the clients

to update-student
  set return-investment ( investment * ( interest-rate + 1 ) )
  set my-money ( my-money + return-investment )
  set label ( word  user-id ", " precision my-money 2 ", " cars)
  set invested? false
  set investment 0
  send-info-to-clients
end 

;; send the appropriate monitor information back to the client

to send-info-to-clients
  hubnet-send user-id "I am:" user-id
  hubnet-send user-id "Round" ticks
  hubnet-send user-id "My Money" precision my-money 2
  hubnet-send user-id "investment" precision investment 2
  hubnet-send user-id "investment-return" precision return-investment 2
  hubnet-send user-id "cars" cars
end 


; Copyright 2004 Uri Wilensky.
; See Info tab for full copyright and license.

There are 7 versions of this model.

Uploaded by When Description Download
Uri Wilensky over 9 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky almost 10 years ago Updated version tag Download this version
Uri Wilensky almost 10 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky over 10 years ago Updated to NetLogo 5.0 Download this version
Uri Wilensky over 12 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 12 years ago Investments Download this version
Uri Wilensky over 12 years ago Investments Download this version

Attached files

File Type Description Last updated
Investments.png preview Preview for 'Investments' over 9 years ago, by Uri Wilensky Download

This model does not have any ancestors.

This model does not have any descendants.