PSA method is a well-known method of finding the optimal aiming sensitivity in shooter games.

## The original PSA method

The PSA method is originally explained in a community thread and later populated by this video.

The core concept is binary-search the best sensitivity.

- You start with the basic sensitivity where you can turn 180 by one mouse sweep. Let call this sensitivity A.
- Next you calculate B=1.5 x A, C=0.5 x A and you get B,A,C in descending order.
- Move your mouse so the crosshair placement is stable with the sensitivity B and C and choose
which sensitivity is more
**comfortable**for you. - Keep the comfortable one and remove the other. e.g. If you are comfortable with C then you get A,C as the new range.
- Calculate the average from the new range (let’s call this D) and you get A,D,C again in descending order.
- Repeat until the remaining two numbers are close enough.

## The original PSA method is wrong

I think the original PSA method have the following short points.

- The method choose one sensitivity from the two based on the comfortableness but this is too ambiguous (or unstable). For example, if the upper bound is too fast and the lower bound is too slow you have no way to choose either one. This makes the original method very hard to excute in reproducible way.
- If the upper bound and the lower bound is equally comfortable for you but the numbers are not close enough which should you choose?

Why do these problem occur? The reason I believe is that the original PSA method is not doing the binary search method in textbook way. Since the aiming sensitivity is monotonous and the best sensivitivity should be found only once (if you find the best sensivity x any sensitivity y > x is faster and y < x is slower.) the binary search should be able to apply in more strict manner.

## PSA method refined

Let’s redefine the PSA method.

- Choose any two numbers that should 100% have the best sensivity in the range and let it call lb (lower bound) and ub (upper bound). If you are a CSGO player, lb=100edpi and ub=10000epdi is a good starting point and when you are playing a game that allows sensitivty from 0-100 then let’s set lb=0 and ub=100.
- Calcualate mid=(lb+ub)/2 and then do PSA movement with the mid sensitivity (Fix the crosshair placement move yourself left and right).
- If the sensivity mid is felt slow (your crosshair delays) then set lb=mid and ub=mid otherwise.
- Repeat until lb and ub are close enough.

This way you will be able to eventually find one sensitivity which is best for you.

## Example

For your understanding, let’s do some example.

- At first you choose lb=1 and ub=1000.
- mid=500 and you feel faster then lb=1 and ub=500.
- mid=250 and you feel slower then lb=250 and ub=500.
- mid=375 and you feel slower then lb=375 and ub=500.
- …