{
  "id": "competency:msc-investment-management",
  "code": "CDU-BUS-INV-900",
  "level": "MSc",
  "name": "MSc Investment Management",
  "faculty": "Faculty of Commerce, Law and Management",
  "lineage": [
    {
      "institution": "Conquest Designer University",
      "year": 2026,
      "note": "authored from the brief, GIPS 2020 and the CFA Institute body of knowledge; no prior institution is claimed"
    }
  ],
  "researchProject": "Measuring a manager honestly: time-weighting, the Dietz approximation and the information ratio",
  "description": "How a portfolio’s performance is measured and presented: the time-weighted return from sub-period valuations (GIPS), the Modified Dietz approximation when only flow dates are known, the expected return and risk of a two-asset portfolio with its minimum-variance mix, and the tracking error and information ratio of an active manager.",
  "syllabus": [
    "Performance measurement: sub-period returns, geometric linking, annualisation rules (GIPS 2020)",
    "Approximations: the Modified Dietz return and its day-weighted flows",
    "Portfolio construction: two-asset mean and variance, correlation, the minimum-variance portfolio",
    "Active management: active return, tracking error, information ratio, annualisation"
  ],
  "reference": {
    "Time-weighted return": "Π (1 + r_i) − 1, r_i = V_i ÷ (V_(i−1) + CF_(i−1)) − 1 with a valuation at each external flow",
    "Modified Dietz": "(EMV − BMV − ΣCF) ÷ (BMV + Σ w_i·CF_i), w_i = fraction of the period remaining after the flow",
    "Two-asset variance": "w²σA² + (1−w)²σB² + 2w(1−w)ρσAσB",
    "Information ratio": "mean active return ÷ tracking error (sample standard deviation of active returns)",
    "Annualisation": "GIPS: returns for periods of less than a year must not be annualised"
  },
  "role": "You are an investment performance analyst presenting results to a trustee board. Say which method was used and why, show the numbers, and say what the number does and does not tell them about skill.",
  "feeUsd": 1,
  "version": "1.0.0",
  "qualification": {
    "award": "MSc",
    "nqfLevel": 9,
    "qualificationType": "Master's Degree (HEQSF qualification type 9a)",
    "totalCredits": 180,
    "minCreditsAtExitLevel": 120,
    "iscedFields": [
      "041"
    ],
    "standards": [
      "CFA Institute Global Investment Performance Standards (GIPS®) for Firms, 2020 edition — time-weighted returns",
      "CFA Institute Candidate Body of Knowledge — Portfolio Management",
      "Markowitz, H. (1952) Portfolio Selection, J. Finance 7(1) 77–91; Grinold, R. & Kahn, R. (2000) Active Portfolio Management"
    ],
    "registration": "not registered"
  },
  "modules": [
    {
      "code": "CDU-BUS-INV-900-901",
      "title": "Coursework — the executable units",
      "nqfLevel": 9,
      "credits": 60,
      "prerequisites": [],
      "coRequisites": [],
      "outcomes": [
        "answer every unit of the qualification against its published reference, with the working shown"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "every unit passed once through the seeded assessment (the seeded assessment room)",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [
        "time_weighted_return",
        "modified_dietz",
        "two_asset_portfolio",
        "tracking_error_ir"
      ],
      "notionalHours": 600
    },
    {
      "code": "CDU-BUS-INV-900-902",
      "title": "Research report",
      "nqfLevel": 9,
      "credits": 120,
      "prerequisites": [
        "CDU-BUS-INV-900-901"
      ],
      "coRequisites": [],
      "outcomes": [
        "Measuring a manager honestly: time-weighting, the Dietz approximation and the information ratio"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "the research report, assessed against the qualification’s published reference block",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [],
      "notionalHours": 1200
    }
  ],
  "units": [
    {
      "id": "time_weighted_return",
      "name": "Time-weighted return (GIPS)",
      "answers": "What is the time-weighted return across these sub-periods, removing the effect of the client’s own flows?",
      "example": {
        "values": [
          1000000,
          1050000,
          1200000,
          1180000
        ],
        "flows": [
          0,
          100000,
          -50000
        ],
        "years": 1
      },
      "reference": "GIPS for Firms (2020): time-weighted returns with the portfolio valued at each large external cash flow; sub-period returns geometrically linked; no annualisation under one year",
      "signature": {
        "input": {
          "values": {
            "type": "number[]",
            "describe": "Market value at each valuation date, start to end"
          },
          "flows": {
            "type": "number[]",
            "describe": "External flow just after each valuation except the last (negative = withdrawal)"
          },
          "years": {
            "type": "number",
            "describe": "Length of the whole period in years",
            "min": 0.0001,
            "max": 100
          }
        },
        "output": {
          "subPeriodReturns": {
            "type": "number[]",
            "describe": "Each sub-period return (6 dp)"
          },
          "twr": {
            "type": "number",
            "describe": "Linked time-weighted return"
          },
          "annualisedReturn": {
            "type": "number",
            "describe": "Annualised when the period is at least a year; otherwise null"
          }
        }
      }
    },
    {
      "id": "modified_dietz",
      "name": "Modified Dietz return",
      "answers": "When the portfolio was not valued at each flow, what return does the Modified Dietz method approximate?",
      "example": {
        "beginningValue": 1000000,
        "endingValue": 1180000,
        "flows": [
          100000,
          -50000
        ],
        "flowTiming": [
          0.25,
          0.75
        ]
      },
      "reference": "Dietz, P. O. (1966) Pension Funds: Measuring Investment Performance; GIPS 2020 — an approximation of the time-weighted return for sub-periods between valuations",
      "signature": {
        "input": {
          "beginningValue": {
            "type": "number",
            "describe": "Market value at the start",
            "min": 0.01
          },
          "endingValue": {
            "type": "number",
            "describe": "Market value at the end",
            "min": 0
          },
          "flows": {
            "type": "number[]",
            "describe": "External flows in the period (negative = withdrawal)"
          },
          "flowTiming": {
            "type": "number[]",
            "describe": "When each flow happened, as the fraction of the period elapsed (0–1)"
          }
        },
        "output": {
          "netFlows": {
            "type": "number",
            "describe": "Σ flows"
          },
          "weightedFlows": {
            "type": "number",
            "describe": "Σ (1 − timing)·flow"
          },
          "modifiedDietz": {
            "type": "number",
            "describe": "The return"
          }
        }
      }
    },
    {
      "id": "two_asset_portfolio",
      "name": "Two-asset portfolio risk and return",
      "answers": "What are this mix’s expected return and risk, and which mix of the two assets has the least risk?",
      "example": {
        "weightA": 0.6,
        "returnA": 0.1,
        "returnB": 0.06,
        "volatilityA": 0.2,
        "volatilityB": 0.1,
        "correlation": 0.3
      },
      "reference": "Markowitz (1952) mean–variance portfolio theory; CFA Institute CBOK, Portfolio Management",
      "signature": {
        "input": {
          "weightA": {
            "type": "number",
            "describe": "Weight in asset A (B holds the rest), 0–1",
            "min": 0,
            "max": 1
          },
          "returnA": {
            "type": "number",
            "describe": "Expected return of A",
            "min": -1,
            "max": 5
          },
          "returnB": {
            "type": "number",
            "describe": "Expected return of B",
            "min": -1,
            "max": 5
          },
          "volatilityA": {
            "type": "number",
            "describe": "Standard deviation of A",
            "min": 0.0001,
            "max": 5
          },
          "volatilityB": {
            "type": "number",
            "describe": "Standard deviation of B",
            "min": 0.0001,
            "max": 5
          },
          "correlation": {
            "type": "number",
            "describe": "Correlation of A and B, −1 to 1",
            "min": -1,
            "max": 1
          }
        },
        "output": {
          "expectedReturn": {
            "type": "number",
            "describe": "w·RA + (1 − w)·RB"
          },
          "volatility": {
            "type": "number",
            "describe": "Portfolio standard deviation"
          },
          "minimumVarianceWeightA": {
            "type": "number",
            "describe": "Weight in A that minimises variance (unconstrained)"
          }
        }
      }
    },
    {
      "id": "tracking_error_ir",
      "name": "Tracking error and information ratio",
      "answers": "How far did the portfolio stray from its benchmark, and how much active return did it earn per unit of that risk?",
      "example": {
        "portfolioReturns": [
          0.012,
          -0.004,
          0.021,
          0.008,
          -0.011,
          0.015
        ],
        "benchmarkReturns": [
          0.01,
          -0.002,
          0.018,
          0.009,
          -0.013,
          0.011
        ],
        "periodsPerYear": 12
      },
      "reference": "Grinold & Kahn (2000) Active Portfolio Management: information ratio = active return ÷ active risk; sample standard deviation; annualised by periods per year",
      "signature": {
        "input": {
          "portfolioReturns": {
            "type": "number[]",
            "describe": "Portfolio return each period"
          },
          "benchmarkReturns": {
            "type": "number[]",
            "describe": "Benchmark return the same periods"
          },
          "periodsPerYear": {
            "type": "number",
            "describe": "Periods in a year (12 monthly, 52 weekly…)",
            "min": 1,
            "max": 366,
            "default": 12
          }
        },
        "output": {
          "meanActiveReturn": {
            "type": "number",
            "describe": "Mean of portfolio − benchmark, per period"
          },
          "trackingError": {
            "type": "number",
            "describe": "Annualised sample standard deviation of active returns"
          },
          "informationRatio": {
            "type": "number",
            "describe": "Annualised active return ÷ annualised tracking error"
          }
        }
      }
    }
  ]
}