// Numbas version: exam_results_page_options {"showstudentname": true, "duration": 0, "timing": {"timedwarning": {"action": "none", "message": ""}, "timeout": {"action": "none", "message": ""}, "allowPause": true}, "metadata": {"description": "", "licence": "All rights reserved"}, "percentPass": 0, "navigation": {"preventleave": true, "reverse": true, "allowregen": true, "browse": true, "showresultspage": "oncompletion", "onleave": {"action": "none", "message": ""}, "showfrontpage": true}, "question_groups": [{"pickingStrategy": "all-ordered", "pickQuestions": 1, "name": "Group", "questions": [{"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "
{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}, {"name": "Present Value of \u00a31", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "statement": "{random_question}
", "metadata": {"description": "", "licence": "None specified"}, "functions": {"timeline": {"language": "javascript", "definition": "//REVISION 20/6/17 1.50pm\n\n// Possible timeline types:\n// - Amount of \u00a31 per annum \n\n\nvar A1PA = {\n \n startPoint : 'none',\n startPointArrow : 'up',\n endPoint : 'below',\n endPointArrow : 'down',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'end',\n \n }; \n\n// - Amount of \u00a31\n\n\nvar A1 = {\n \n startPoint : 'above',\n startPointArrow : 'up',\n startPointText : 'payment_str',\n endPoint : 'below',\n endPointArrow : 'down',\n endPointText : 'none',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'end',\n \n };\n\n\n// - Present value of \u00a31 per annum\n\nvar PV1PA = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'periods',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n// - Present value of \u00a31\nvar PV1 = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n startPointText : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'above-low',\n tickText : 'none',\n qmark : 'start',\n \n };\n\n\n// - Annual sink fund\nvar ASF = {\n \n startPoint : 'none',\n startPointArrow : 'none',\n endPoint : 'above',\n endPointArrow : 'up',\n endPointText : 'payment_str',\n end : 'periods',\n ticks : 'below',\n tickText : 'qMarks',\n qmark : 'none',\n \n };\n\n\n// Years purchase in perpetuity\n\nvar YPP = {\n \n startPoint : 'below',\n startPointArrow : 'down',\n endPoint : 'none',\n endPointArrow : 'none',\n end : 'inf',\n ticks : 'above',\n tickText : 'payment',\n qmark : 'start',\n \n };\n\n//// SPECIFY TYPE OF TIMELINE HERE\n\nvar timelineType = PV1;\n\n\nvar XLineAttrs = {\n strokeColor: 'black',\n fixed: true,\n strokeWidth: 3,\n straightFirst: false,\n straightLast: false,\n }\n\nvar startEndAttrs = {\n strokeColor: 'black', \n fixed: true, \n strokeWidth: 4\n }\n\n// End point for arrow\nvar endPointX = periods;\n\nif(timelineType.end === 'inf'){\n periods = 11;\n}\n\n// Constrain the graph to 10 periods in width\nif(periods<=10){\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, periods + 0.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n \n var board = div.board;\n board.create('line', [[0,0],[periods,0]], XLineAttrs);\n \n \n\n}\nelse{\n \n \n endPointX = 10;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('800px','200px',\n {boundingBox: [-.5, 1, 10.5, -1],\n showNavigation: false,\n axis: false,\n grid: true,\n });\n \n var board = div.board;\n \n //time break line segments\n var timeBreakSegmentCoords = [\n [[0,0],[8.4,0]], \n [[8.4,0],[8.5,.3]],\n [[8.5,.3],[8.7,-.4]],\n [[8.7,-.4],[8.8,0]],\n [[8.8,0],[10,0]]\n ]; \n \n board.create('line',timeBreakSegmentCoords[0],XLineAttrs);\n board.create('line',timeBreakSegmentCoords[4],XLineAttrs);\n \n for(i=1;i+*
\".replace('*',paymentStr);\n\n\nif((timelineType.startPoint === 'above') || (timelineType.startPoint === 'below')) {\n paymentStrStart = paymentStrStyled.replace('+','Year 0\u00a3?
';\n}\nelse if(timelineType.tickText === 'payment'){\n tickerStr = paymentStr;\n}\nelse{\n tickerStr = '';\n}\n\nif(timelineType.ticks !== 'none'){\n \n var lowTextY = .05;\n var textY;\n var smallArrows = true;\n\n switch(timelineType.ticks){\n case 'above':\n textY = 0.45;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below':\n textY = -0.45;\n lowTextY = -.05;\n break;\n case 'above-low':\n textY = .05;\n smallArrows = false;\n tickerTextAttrs.anchorY = 'bottom';\n break;\n case 'below-low':\n textY = -.05;\n smallArrows = false;\n break;\n }\n \n\n \n for(i=0;i<=periods;i++){\n \n if(smallArrows === true){\n \n if(timelineType.ticks === 'above'){\n //Check that a first/last tick is needed\n\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='above'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n }\n }\n else{ //ticks below\n //Check that a first/last tick is needed\n if(!((i===0)||((i===periods)&&(lastTick==false))||((((periods>10)&&(i==10)))&&timelineType.endPoint==='below'))){\n tmp_arrow = board.create('arrow',[[i,0],[i,-.4]],{\n strokeColor: 'grey',\n fixed: true,\n strokeWidth: 1,\n });\n\n //tmp_arrow.setArrow(true,false)\n }\n\n }\n }\n \n\n //Count years from 0 as long as the period is 8y or lower. Continue to 10 if there are 10 periods\n //or fewer. For periods over 10 year, add in the last two periods after the 8th.\n if(!(i>8 && periods>10)){\n \n if(i===0){\n if(firstTick===false){\n\n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch1'); tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch1');tickerTextAttrs.anchorY = 'bottom';}\n \n //board.create('text',[i,-lowTextY,'Year 0'],tickerTextAttrs);\n \n //if(tickerTextAttrs.anchorY === 'bottom'){console.log('switch2');tickerTextAttrs.anchorY = 'top';}\n //else{console.log('switch2');tickerTextAttrs.anchorY = 'bottom';}\n\n }\n //else if(timelineType.tickText === 'payment'){\n //board.create('text',[i,textY,'Year 0The correct formula to use for this question is the Present Value of £1 formula:
\n\\[\\textrm{Present value of £1} = {(1+i)}^{-n}\\]
\nWhere $i$ is the interest rate and $n$ is the number of periods.
\n\nThe Present Value of £1 formula is used to obtain the Present Value of an asset with a known Future Value. In other words, you know how much something is going to be worth in the future and want to know what it is worth now. Substituting the relevant numbers into the formula produces the Present Value of £1 for a given number of years and discounting at a given interest rate. Multiplying that number by any other Future Value will give the corresponding Present Value.
\nLet's break it down...
\nSubstituting in the values from the question gives:
\n\\[{(1+\\var{interest_rate})}^{-\\var{periods}}\\]
\n\\[{=(\\var{1+interest_rate}})^{-\\var{periods}}\\]
\n\\[=\\var{dpformat(multiplier,4,\"en\")}\\]
\n\n\nFinally, you need to multiply that number by the $Capital$ to get the final answer:
\n\\[\\textrm{Present Value} = \\var{dpformat(multiplier,4,\"en\")} \\textrm{*} £\\var{dpformat(future_value,0,\"en\")}\\]
\n\nWhich is £{sigformat(answer,3,\"en\")} to 3 significant figures.
\n", "parts": [{"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "correctAnswerStyle": "plain", "prompt": "Solve the question using the correct formula.
\nIf you are unsure of how to solve this problem, work through the steps or click 'reveal answer' to view a fully worked solution. When you are finished, use the links on the left to attempt the other questions.
\n\n
In the Class
You need to round your answer to the nearest £1.
", "stepsPenalty": "0", "minValue": "answer-answer*answer_tolerance", "variableReplacementStrategy": "originalfirst", "correctAnswerFraction": false, "steps": [{"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "If you get an answer to any of the steps wrong, you can resubmit values until you are correct.
\nHere is the time diagram:
\n{timeline(periods,paymentStr)}
", "variableReplacements": [], "scripts": {}}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Name the formula needed to solve this question.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "dropdownlist", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["Present Value of £1
", "Present Value of £1 per annum
", "YP perp
"], "distractors": ["", "", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, 0, 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "1_n_2", "shuffleChoices": true, "prompt": "Select the correct formula.
", "minMarks": 0, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "displayColumns": 0, "displayType": "radiogroup", "maxMarks": 0, "showCorrectAnswer": true, "choices": ["\\[{(1 + i)}^{n}\\]
", "\\[{(1 + i)}^{-n}\\]
", "\\[\\frac{{(1 + i)}^{n}-1}{i}\\]
", "\\[\\textrm{Capital *}\\frac{i}{{(1+i)}^{n}-1}\\]
", "\\[\\frac{1-{(1+i)}^{-n}}{i}\\]
", "\\[\\frac{1}{i}\\]
"], "distractors": ["", "Correct", "", "", "", ""], "scripts": {}, "matrix": ["0", ".2", "0", 0, "0", 0]}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Please input the values that should be substituted into the formula. Please make sure percentages are converted to decimal values (e.g. 4% should be entered as 0.04).
", "variableReplacements": [], "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "interest_rate", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "i =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "interest_rate", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"marks": ".2", "showFeedbackIcon": true, "maxValue": "periods", "type": "numberentry", "mustBeReducedPC": 0, "prompt": "n =
", "mustBeReduced": false, "notationStyles": ["plain", "en", "si-en"], "variableReplacements": [], "allowFractions": false, "correctAnswerFraction": false, "minValue": "periods", "correctAnswerStyle": "plain", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "scripts": {}}, {"showFeedbackIcon": true, "allowFractions": false, "type": "numberentry", "mustBeReducedPC": 0, "prompt": "Substitute in the values of $n$ and $i$ and calculate the $multiplier$.
", "precision": "4", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "mustBeReduced": false, "correctAnswerStyle": "plain", "notationStyles": ["plain", "en", "si-en"], "strictPrecision": true, "scripts": {}, "marks": ".2", "showPrecisionHint": true, "maxValue": "multiplier", "showCorrectAnswer": true, "precisionMessage": "You have not given your answer to the correct precision.", "precisionPartialCredit": "0", "minValue": "multiplier", "precisionType": "dp", "correctAnswerFraction": false}, {"marks": 0, "showFeedbackIcon": true, "type": "information", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "prompt": "Finally, you need to multiply that number by the $capital$ to get the final answer.
", "variableReplacements": [], "scripts": {}}]}], "tags": [], "variables": {"answer_tolerance": {"name": "answer_tolerance", "templateType": "number", "description": "", "definition": "0.01", "group": "Ungrouped variables"}, "answer": {"name": "answer", "templateType": "anything", "description": "Present value
", "definition": "present_value", "group": "Ungrouped variables"}, "random_question": {"name": "random_question", "templateType": "anything", "description": "", "definition": "join(split(join(split(join(split(random_question_gaps, \"[future_value]\"),separatethousands(future_value,\",\")),\"[periods]\"), separatethousands(periods,\"\")),\"[interest_rate]\"),separatethousands(interest_rate*100,\"\"))\n\n\n\n\n\n\n", "group": "Ungrouped variables"}, "random_question_gaps": {"name": "random_question_gaps", "templateType": "anything", "description": "A question selected at random from the list of questions stored in the variable questions.
", "definition": "random(questions)", "group": "Ungrouped variables"}, "multiplier": {"name": "multiplier", "templateType": "anything", "description": "", "definition": "(1+interest_rate)^(-1*periods)", "group": "Ungrouped variables"}, "periods": {"name": "periods", "templateType": "randrange", "description": "", "definition": "random(1..25#1)", "group": "Ungrouped variables"}, "questions": {"name": "questions", "templateType": "list of strings", "description": "", "definition": "[ \"If you could receive \u00a3[future_value] in [periods] years, what would you pay for it now, assuming the time value of money is [interest_rate]%?\", \"A contact has alerted you that a prestigeous office property is due to come on the market in [periods] years time for \u00a3[future_value] . What is the present value of this sum, assuming the time value of money is [interest_rate]%?\", \"How much should you save today, in order to have \u00a3[future_value] in [periods] years time, if interest rates are [interest_rate]%?\", \"What is the present value of a future sum of \u00a3[future_value] , receivable in [periods] years, with a discount rate of [interest_rate]%?\", \"If the interest rate is [interest_rate]%, how much would you need to pay today in order to earn the right to receive \u00a3[future_value] in [periods] years? \" ]", "group": "Ungrouped variables"}, "paymentStr": {"name": "paymentStr", "templateType": "anything", "description": "", "definition": "'\u00a3'+separateThousands(future_value,',')", "group": "Ungrouped variables"}, "present_value": {"name": "present_value", "templateType": "anything", "description": "", "definition": "multiplier*future_value", "group": "Ungrouped variables"}, "interest_rate": {"name": "interest_rate", "templateType": "randrange", "description": "", "definition": "random(0.01..0.15#0.0025)", "group": "Ungrouped variables"}, "future_value": {"name": "future_value", "templateType": "randrange", "description": "", "definition": "random(1000000..70000000#500000)", "group": "Ungrouped variables"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["periods", "interest_rate", "present_value", "answer", "future_value", "questions", "random_question_gaps", "random_question", "answer_tolerance", "multiplier", "paymentStr"], "rulesets": {}, "variable_groups": [], "preamble": {"js": "", "css": ""}, "type": "question"}]}], "showQuestionGroupNames": false, "feedback": {"showactualmark": true, "intro": "Use the links on the left side of the screen to select questions.
", "feedbackmessages": [], "showanswerstate": false, "advicethreshold": 0, "allowrevealanswer": true, "showtotalmark": false}, "name": "Cath's copy of Present Value of \u00a31", "type": "exam", "contributors": [{"name": "Cath Jackson", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1484/"}, {"name": "Rory Shanahan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1513/"}], "extensions": ["jsxgraph"], "custom_part_types": [], "resources": []}